From c06d42fac790a4813fa1b01d46930889596db130 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 20 Jan 2025 16:21:37 +0000 Subject: [PATCH 001/148] fix(NA): skip security solution storybook (#207225) The Security Solution storybook started to fail so we are skipping it for now to unblock the pipelines. --- src/dev/storybook/aliases.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dev/storybook/aliases.ts b/src/dev/storybook/aliases.ts index 7fffaf223266c..83f85b48e0410 100644 --- a/src/dev/storybook/aliases.ts +++ b/src/dev/storybook/aliases.ts @@ -67,7 +67,8 @@ export const storybookAliases = { presentation: 'src/platform/plugins/shared/presentation_util/storybook', random_sampling: 'x-pack/platform/packages/private/kbn-random-sampling/.storybook', esql_editor: 'src/platform/packages/private/kbn-esql-editor/.storybook', - security_solution: 'x-pack/solutions/security/plugins/security_solution/.storybook', + // Skipped, please check and fix https://github.com/elastic/kibana/issues/207227 + // security_solution: 'x-pack/solutions/security/plugins/security_solution/.storybook', security_solution_packages: 'x-pack/solutions/security/packages/storybook/config', serverless: 'packages/serverless/storybook/config', shared_ux: 'src/platform/packages/private/shared-ux/storybook/config', From d18d25bad5772a19dc7fe8ecd4a593786912201f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Bl=C3=A1zquez?= Date: Mon, 20 Jan 2025 17:33:03 +0100 Subject: [PATCH 002/148] Add search bar to Asset Inventory page (#206811) ## Summary Closes https://github.com/elastic/kibana/issues/201709. Add toolbar and search bar to Asset Inventory "All Assets" page. ### Screenshots #### Before Screenshot 2025-01-16 at 17 21 13 #### After Screenshot 2025-01-16 at 17 21 04 ### Definition of done - [x] Add a header and toolbar to the "Asset Inventory" page. - [x] Implement a search bar within the toolbar using the `@kbn/unified-search-plugin`. - [x] Ensure the search bar is styled according to the [visual specs](https://www.figma.com/design/9zUqAhhglT1EGYG4LOl1X6/Asset-Management?node-id=2946-19646&t=FuD3BEY4FyxAKV38-4). - [ ] ~~Integrate the search bar so it can interact with the `logs-*` Dataview (default).~~ No integration for now. Will come in future PRs > [!CAUTION] > `search_bar.tsx` was duplicated from the CSP plugin. We should create a separate @kbn-package to encapsulate and reuse this type of functionality across plugins, then reuse it both from CSP and Asset Inventory. ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [x] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Identify risks No risks. Co-authored-by: Elastic Machine --- .../asset_inventory/components/search_bar.tsx | 74 +++++++++++++++++++ .../asset_inventory/pages/all_assets.tsx | 6 ++ 2 files changed, 80 insertions(+) create mode 100644 x-pack/solutions/security/plugins/security_solution/public/asset_inventory/components/search_bar.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/asset_inventory/components/search_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/asset_inventory/components/search_bar.tsx new file mode 100644 index 0000000000000..7e9409035ce66 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/asset_inventory/components/search_bar.tsx @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { css } from '@emotion/react'; +import { type EuiThemeComputed, useEuiTheme } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import type { Filter } from '@kbn/es-query'; +import { useKibana } from '../../common/lib/kibana'; +import { FiltersGlobal } from '../../common/components/filters_global/filters_global'; +import { useDataViewContext } from '../hooks/data_view_context'; +import type { AssetsBaseURLQuery } from '../hooks/use_asset_inventory_data_table'; + +type SearchBarQueryProps = Pick; + +interface AssetInventorySearchBarProps { + setQuery(v: Partial): void; + loading: boolean; + placeholder?: string; + query: SearchBarQueryProps; +} + +export const AssetInventorySearchBar = ({ + loading, + query, + setQuery, + placeholder = i18n.translate( + 'xpack.securitySolution.assetInventory.searchBar.searchPlaceholder', + { + defaultMessage: 'Filter your data using KQL syntax', + } + ), +}: AssetInventorySearchBarProps) => { + const { euiTheme } = useEuiTheme(); + const { + unifiedSearch: { + ui: { SearchBar }, + }, + } = useKibana().services; + + const { dataView } = useDataViewContext(); + + return ( + +
+ setQuery({ filters: value })} + placeholder={placeholder} + query={{ + query: query?.query?.query || '', + language: query?.query?.language || 'kuery', + }} + filters={query?.filters || []} + /> +
+
+ ); +}; + +const getContainerStyle = (theme: EuiThemeComputed) => css` + border-bottom: ${theme.border.thin}; + background-color: ${theme.colors.body}; + padding: ${theme.size.base}; +`; diff --git a/x-pack/solutions/security/plugins/security_solution/public/asset_inventory/pages/all_assets.tsx b/x-pack/solutions/security/plugins/security_solution/public/asset_inventory/pages/all_assets.tsx index 128c82a266bac..5269d634cd8dd 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/asset_inventory/pages/all_assets.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/asset_inventory/pages/all_assets.tsx @@ -42,6 +42,7 @@ import { useKibana } from '../../common/lib/kibana'; import { AssetCriticalityBadge } from '../../entity_analytics/components/asset_criticality/asset_criticality_badge'; import { EmptyState } from '../components/empty_state'; import { AdditionalControls } from '../components/additional_controls'; +import { AssetInventorySearchBar } from '../components/search_bar'; import { useDataViewContext } from '../hooks/data_view_context'; import { useStyles } from '../hooks/use_styles'; @@ -366,6 +367,11 @@ const AllAssets = ({ return ( +

From 92de76648e0cf549ede260e5dbdfa1a0fac34236 Mon Sep 17 00:00:00 2001 From: Mykola Harmash Date: Mon, 20 Jan 2025 18:15:48 +0100 Subject: [PATCH 003/148] [Onboarding] Fix custom search results not visible when category is not selected (#207078) This fixes a bug when custom search results which we add to the default package list were not visible if the top-level category wasn't selected. **Before:** ![CleanShot 2025-01-17 at 15 12 09@2x](https://github.com/user-attachments/assets/6f08f645-b5b3-4111-8a80-56c2cfd32998) **After** ![CleanShot 2025-01-17 at 15 13 19@2x](https://github.com/user-attachments/assets/dcfa8924-e13a-4601-b37e-e2876cdc44a9) --- .../application/onboarding_flow_form/onboarding_flow_form.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/solutions/observability/plugins/observability_onboarding/public/application/onboarding_flow_form/onboarding_flow_form.tsx b/x-pack/solutions/observability/plugins/observability_onboarding/public/application/onboarding_flow_form/onboarding_flow_form.tsx index eb5ee3bc92369..b1c5da970a78b 100644 --- a/x-pack/solutions/observability/plugins/observability_onboarding/public/application/onboarding_flow_form/onboarding_flow_form.tsx +++ b/x-pack/solutions/observability/plugins/observability_onboarding/public/application/onboarding_flow_form/onboarding_flow_form.tsx @@ -335,8 +335,8 @@ export const OnboardingFlowForm: FunctionComponent = () => { flowSearch={integrationSearch} setSearchQuery={setIntegrationSearch} flowCategory={searchParams.get('category')} - customCards={customCards - ?.filter( + customCards={(customCards || []) + .filter( // Filter out collection cards and regular integrations that show up via search anyway (card) => card.type === 'virtual' && !card.isCollectionCard ) From 1dc2aca8ee7692a61218039b3747e8e305ace0c4 Mon Sep 17 00:00:00 2001 From: Carlos Delgado <6339205+carlosdelest@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:18:58 +0100 Subject: [PATCH 004/148] Update knn search and query template autocomplete (#207187) --- .../lib/spec_definitions/js/query/dsl.ts | 29 +++++++++++++++++++ .../server/lib/spec_definitions/js/search.ts | 23 +++++++++++++-- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/dsl.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/dsl.ts index 39cb4b89380ae..061ae74b3c2d9 100644 --- a/src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/dsl.ts +++ b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/dsl.ts @@ -382,6 +382,35 @@ export const query = (specService: SpecDefinitionsService) => { _scope: '', query: {}, }, + knn: { + __template: { + field: '', + k: 10, + num_candidates: 100, + query_vector_builder: { + text_embedding: { + model_id: '', + model_text: '', + }, + }, + }, + field: '{field}', + filter: { __scope_link: 'GLOBAL.filter' }, + k: 10, + num_candidates: 100, + query_vector: [], + query_vector_builder: { + text_embedding: { + model_id: '', + model_text: '', + }, + }, + rescore_vector: { + oversample: 1.5, + }, + similarity: { __one_of: ['l2_norm', 'cosine', 'dot_product', 'max_inner_product'] }, + boost: 1.0, + }, match_all: { boost: 1, }, diff --git a/src/platform/plugins/shared/console/server/lib/spec_definitions/js/search.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/search.ts index 503744e0fd9db..d643ce145eb03 100644 --- a/src/platform/plugins/shared/console/server/lib/spec_definitions/js/search.ts +++ b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/search.ts @@ -226,6 +226,12 @@ export const search = (specService: SpecDefinitionsService) => { knn: { __template: { field: '', + query_vector_builder: { + text_embedding: { + model_id: '', + model_text: '', + }, + }, k: 10, num_candidates: 100, }, @@ -236,9 +242,17 @@ export const search = (specService: SpecDefinitionsService) => { k: 10, num_candidates: 100, query_vector: [], - query_vector_builder: {}, - similarity: { __one_of: ['l2_norm', 'cosine', 'dot_product'] }, + query_vector_builder: { + text_embedding: { + model_id: '', + model_text: '', + }, + }, + similarity: { __one_of: ['l2_norm', 'cosine', 'dot_product', 'max_inner_product'] }, boost: 1.0, + rescore_vector: { + oversample: 1.5, + }, }, [ { @@ -248,8 +262,11 @@ export const search = (specService: SpecDefinitionsService) => { num_candidates: 100, query_vector: [], query_vector_builder: {}, - similarity: { __one_of: ['l2_norm', 'cosine', 'dot_product'] }, + similarity: { __one_of: ['l2_norm', 'cosine', 'dot_product', 'max_inner_product'] }, boost: 1.0, + rescore_vector: { + oversample: 1.5, + }, }, ], ], From 1d13e428d74531e681bbd07c0ea33e0419be7339 Mon Sep 17 00:00:00 2001 From: Konrad Szwarc Date: Mon, 20 Jan 2025 18:43:04 +0100 Subject: [PATCH 005/148] [EDR Workflows] Workflow Insights - Aggregate file events by path (#207079) This PR updates the method for fetching file events used as the foundation for creating insights. Previously, we retrieved the last 200 events from the past 24 hours. With these changes, we now rely on aggregations: all file events from the past 24 hours are aggregated by file path, and for each path, only the latest event associated with it is selected. The limit of 200 paths remains unchanged. --- .../get_events/get_file_events_query.ts | 31 +++-- .../defend_insights/get_events/index.test.ts | 117 ++++++++++++++++-- .../tools/defend_insights/get_events/index.ts | 38 +++++- 3 files changed, 165 insertions(+), 21 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/get_file_events_query.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/get_file_events_query.ts index fa8f6fa1e33b4..eef2e1ad28f16 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/get_file_events_query.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/get_file_events_query.ts @@ -14,7 +14,6 @@ const SIZE = 200; export function getFileEventsQuery({ endpointIds }: { endpointIds: string[] }): SearchRequest { return { allow_no_indices: true, - fields: ['_id', 'agent.id', 'process.executable'], query: { bool: { must: [ @@ -34,15 +33,31 @@ export function getFileEventsQuery({ endpointIds }: { endpointIds: string[] }): ], }, }, - size: SIZE, - sort: [ - { - '@timestamp': { - order: 'desc', + size: 0, // Aggregations only + aggs: { + unique_process_executable: { + terms: { + field: 'process.executable', + size: SIZE, + }, + aggs: { + // Get the latest event for each process.executable + latest_event: { + top_hits: { + size: 1, + sort: [ + { + '@timestamp': { + order: 'desc', + }, + }, + ], + _source: ['_id', 'agent.id', 'process.executable'], // Include only necessary fields + }, + }, }, }, - ], - _source: false, + }, ignore_unavailable: true, index: [FILE_EVENTS_INDEX_PATTERN], }; diff --git a/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.test.ts index 7c2fd9f61e255..e35a3fee54866 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.test.ts @@ -12,6 +12,7 @@ import { DefendInsightType, transformRawData } from '@kbn/elastic-assistant-comm import { InvalidDefendInsightTypeError } from '../errors'; import { getFileEventsQuery } from './get_file_events_query'; import { getAnonymizedEvents } from '.'; +import type { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; jest.mock('@kbn/elastic-assistant-common', () => { const originalModule = jest.requireActual('@kbn/elastic-assistant-common'); @@ -28,10 +29,46 @@ jest.mock('./get_file_events_query', () => ({ describe('getAnonymizedEvents', () => { let mockEsClient: jest.Mocked; - const mockHits = [ - { _index: 'test-index', fields: { field1: ['value1'] } }, - { _index: 'test-index', fields: { field2: ['value2'] } }, - ]; + const mockAggregations = { + unique_process_executable: { + buckets: [ + { + key: 'process1', + doc_count: 10, + latest_event: { + hits: { + hits: [ + { + _id: 'event1', + _source: { + agent: { id: 'agent1' }, + process: { executable: 'process1' }, + }, + }, + ], + }, + }, + }, + { + key: 'process2', + doc_count: 5, + latest_event: { + hits: { + hits: [ + { + _id: 'event2', + _source: { + agent: { id: 'agent2' }, + process: { executable: 'process2' }, + }, + }, + ], + }, + }, + }, + ], + }, + }; beforeEach(() => { (getFileEventsQuery as jest.Mock).mockReturnValue({ index: 'test-index', body: {} }); @@ -48,9 +85,7 @@ describe('getAnonymizedEvents', () => { skipped: 0, failed: 0, }, - hits: { - hits: mockHits, - }, + aggregations: mockAggregations, }), } as unknown as jest.Mocked; }); @@ -59,17 +94,54 @@ describe('getAnonymizedEvents', () => { jest.clearAllMocks(); }); - it('should return anonymized events successfully', async () => { + it('should return anonymized events successfully from aggregations', async () => { const result = await getAnonymizedEvents({ endpointIds: ['endpoint1'], type: DefendInsightType.Enum.incompatible_antivirus, esClient: mockEsClient, }); - expect(result).toEqual(['anonymized_value1', 'anonymized_value2']); + expect(result).toEqual(['anonymized_event1', 'anonymized_event2']); expect(getFileEventsQuery).toHaveBeenCalledWith({ endpointIds: ['endpoint1'] }); expect(mockEsClient.search).toHaveBeenCalledWith({ index: 'test-index', body: {} }); expect(transformRawData).toHaveBeenCalledTimes(2); + expect(transformRawData).toHaveBeenCalledWith( + expect.objectContaining({ + rawData: expect.objectContaining({ + _id: ['event1'], + }), + }) + ); + }); + + it('should map aggregation response correctly into fileEvents structure', async () => { + await getAnonymizedEvents({ + endpointIds: ['endpoint1'], + type: DefendInsightType.Enum.incompatible_antivirus, + esClient: mockEsClient, + }); + + expect(mockEsClient.search).toHaveBeenCalledWith({ index: 'test-index', body: {} }); + + expect(transformRawData).toHaveBeenCalledWith( + expect.objectContaining({ + rawData: { + _id: ['event1'], + 'agent.id': ['agent1'], + 'process.executable': ['process1'], + }, + }) + ); + + expect(transformRawData).toHaveBeenCalledWith( + expect.objectContaining({ + rawData: { + _id: ['event2'], + 'agent.id': ['agent2'], + 'process.executable': ['process2'], + }, + }) + ); }); it('should throw InvalidDefendInsightTypeError for invalid type', async () => { @@ -81,4 +153,31 @@ describe('getAnonymizedEvents', () => { }) ).rejects.toThrow(InvalidDefendInsightTypeError); }); + + it('should handle empty aggregation response gracefully', async () => { + mockEsClient.search.mockResolvedValueOnce({ + took: 1, + timed_out: false, + _shards: { + total: 1, + successful: 1, + skipped: 0, + failed: 0, + }, + aggregations: { + unique_process_executable: { + buckets: [], + }, + }, + } as unknown as SearchResponse); + + const result = await getAnonymizedEvents({ + endpointIds: ['endpoint1'], + type: DefendInsightType.Enum.incompatible_antivirus, + esClient: mockEsClient, + }); + + expect(result).toEqual([]); + expect(transformRawData).not.toHaveBeenCalled(); + }); }); diff --git a/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.ts index 4d9fcaf89a34a..4f120e8e655f0 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { SearchRequest, SearchResponse } from '@elastic/elasticsearch/lib/api/types'; +import type { SearchRequest } from '@elastic/elasticsearch/lib/api/types'; import type { ElasticsearchClient } from '@kbn/core/server'; import type { Replacements } from '@kbn/elastic-assistant-common'; import type { AnonymizationFieldResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen'; @@ -20,6 +20,26 @@ import { import { getFileEventsQuery } from './get_file_events_query'; import { InvalidDefendInsightTypeError } from '../errors'; +interface AggregationResponse { + unique_process_executable: { + buckets: Array<{ + key: string; + doc_count: number; + latest_event: { + hits: { + hits: Array<{ + _id: string; + _source: { + agent: { id: string }; + process: { executable: string }; + }; + }>; + }; + }; + }>; + }; +} + export async function getAnonymizedEvents({ endpointIds, type, @@ -70,7 +90,17 @@ const getAnonymized = async ({ onNewReplacements?: (replacements: Replacements) => void; replacements?: Replacements; }): Promise => { - const result = await esClient.search(query); + const result = await esClient.search<{}, AggregationResponse>(query); + const fileEvents = (result.aggregations?.unique_process_executable.buckets ?? []).map( + (bucket) => { + const latestEvent = bucket.latest_event.hits.hits[0]; + return { + _id: [latestEvent._id], + 'agent.id': [latestEvent._source.agent.id], + 'process.executable': [latestEvent._source.process.executable], + }; + } + ); // Accumulate replacements locally so we can, for example use the same // replacement for a hostname when we see it in multiple alerts: @@ -81,13 +111,13 @@ const getAnonymized = async ({ onNewReplacements?.(localReplacements); // invoke the callback with the latest replacements }; - return result.hits?.hits?.map((hit) => + return fileEvents.map((fileEvent) => transformRawData({ anonymizationFields, currentReplacements: localReplacements, // <-- the latest local replacements getAnonymizedValue, onNewReplacements: localOnNewReplacements, // <-- the local callback - rawData: getRawDataOrDefault(hit.fields), + rawData: getRawDataOrDefault(fileEvent), }) ); }; From 5045dcab48d7207adf7a19da1c34b968fe46c52e Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 20 Jan 2025 17:53:30 +0000 Subject: [PATCH 006/148] fix(NA): skip security_solution_packages storybook --- src/dev/storybook/aliases.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dev/storybook/aliases.ts b/src/dev/storybook/aliases.ts index 83f85b48e0410..e3df535fb9988 100644 --- a/src/dev/storybook/aliases.ts +++ b/src/dev/storybook/aliases.ts @@ -69,7 +69,7 @@ export const storybookAliases = { esql_editor: 'src/platform/packages/private/kbn-esql-editor/.storybook', // Skipped, please check and fix https://github.com/elastic/kibana/issues/207227 // security_solution: 'x-pack/solutions/security/plugins/security_solution/.storybook', - security_solution_packages: 'x-pack/solutions/security/packages/storybook/config', + // security_solution_packages: 'x-pack/solutions/security/packages/storybook/config', serverless: 'packages/serverless/storybook/config', shared_ux: 'src/platform/packages/private/shared-ux/storybook/config', threat_intelligence: 'x-pack/solutions/security/plugins/threat_intelligence/.storybook', From 92a4462243b00d4c7f671e08df8910bb56aeb9ab Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 21 Jan 2025 04:57:13 +1100 Subject: [PATCH 007/148] skip failing test suite (#205269) --- .../maintenance_windows/maintenance_windows_table.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/maintenance_windows/maintenance_windows_table.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/maintenance_windows/maintenance_windows_table.ts index 31aa069ba74c9..cce590d455c29 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/maintenance_windows/maintenance_windows_table.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/maintenance_windows/maintenance_windows_table.ts @@ -21,6 +21,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const browser = getService('browser'); // FLAKY: https://github.com/elastic/kibana/issues/205269 + // Failing: See https://github.com/elastic/kibana/issues/205269 describe.skip('Maintenance windows table', function () { beforeEach(async () => { await pageObjects.common.navigateToApp('maintenanceWindows'); From 25913693c0c8fe57db5236d6aa0fa08b648fba7c Mon Sep 17 00:00:00 2001 From: Marco Vettorello Date: Mon, 20 Jan 2025 18:58:53 +0100 Subject: [PATCH 008/148] [TSVB] fix borealis colors check on test (#206484) ## Summary Fix and unskip TSVB Functional test by using the right Borealis colors. fix https://github.com/elastic/kibana/issues/206380 --------- Co-authored-by: nickofthyme Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../apps/visualize/group5/_tsvb_time_series.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/test/functional/apps/visualize/group5/_tsvb_time_series.ts b/test/functional/apps/visualize/group5/_tsvb_time_series.ts index bbe31dfec6fa0..960932b1314e3 100644 --- a/test/functional/apps/visualize/group5/_tsvb_time_series.ts +++ b/test/functional/apps/visualize/group5/_tsvb_time_series.ts @@ -24,8 +24,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const browser = getService('browser'); const kibanaServer = getService('kibanaServer'); - // Failing: See https://github.com/elastic/kibana/issues/206380 - describe.skip('visual builder', function describeIndexTests() { + describe('visual builder', function describeIndexTests() { before(async () => { await security.testUser.setRoles([ 'kibana_admin', @@ -309,7 +308,12 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { expect(areasCount).to.be(2); expect(legendNames).to.eql(['apache', 'nginx']); - expect(areaColors).to.eql(['#54b399', '#6092c0']); + // We need to use OR condition here because of how visColors are set inconsistently + // See https://github.com/elastic/kibana/issues/206380 + const [firstColor, secondColor] = areaColors!; + expect(['#16c5c0', '#54b399']).contain(firstColor); // first color in elastic palette + expect(['#a6edea', '#6092c0']).contain(secondColor); // second color in elastic palette + expect(areaColors).to.length(2); expect(firstAreaChartData).to.eql(firstAreaExpectedChartData); expect(secondAreaChartData).to.eql(secondAreaExpectedChartData); }); From 4328e15004b88bfefdaf33c57f5395042ef48f75 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 20 Jan 2025 17:59:44 +0000 Subject: [PATCH 009/148] skip flaky suite (#206646) --- .../graph_investigation/graph_investigation.stories.test.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.stories.test.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.stories.test.tsx index a4f3728c94eb7..02cc3679ce248 100644 --- a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.stories.test.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.stories.test.tsx @@ -112,7 +112,8 @@ const isSearchBarVisible = (container: HTMLElement) => { return searchBarContainer === null; }; -describe('GraphInvestigation Component', () => { +// FLAKY: https://github.com/elastic/kibana/issues/206646 +describe.skip('GraphInvestigation Component', () => { beforeEach(() => { for (const key in actionMocks) { if (Object.prototype.hasOwnProperty.call(actionMocks, key)) { From 77dc52f963a6e08cf774866dc78b154778402c88 Mon Sep 17 00:00:00 2001 From: Rickyanto Ang Date: Mon, 20 Jan 2025 12:36:16 -0800 Subject: [PATCH 010/148] [Cloud Security] Alerts Contextual Flyout Style Issue Fix (#207000) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This PR is to Address UI style issue on Alerts Contextual Flyout. This fix made it so that now Alerts follow the same style as Misconfiguration and Vulnerabilities ## Before Screenshot 2025-01-16 at 7 57 05 AM ## After Screenshot 2025-01-16 at 11 50 58 AM --- .../components/alerts/alerts_preview.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.tsx index cd5fcc93495a1..d9d85db0d4a09 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.tsx @@ -6,6 +6,7 @@ */ import React, { useCallback, useMemo } from 'react'; +import { css } from '@emotion/react'; import { capitalize } from 'lodash'; import type { EuiThemeComputed } from '@elastic/eui'; import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText, EuiTitle, useEuiTheme } from '@elastic/eui'; @@ -36,17 +37,17 @@ const AlertsCount = ({ -

+

{getAbbreviatedNumber(alertsTotal)} -

+

Date: Mon, 20 Jan 2025 12:51:21 -0800 Subject: [PATCH 011/148] [DOCS] Granular connector RBAC (#207136) --- docs/management/connectors/action-types/crowdstrike.asciidoc | 2 ++ docs/management/connectors/action-types/sentinelone.asciidoc | 2 ++ docs/user/alerting/alerting-setup.asciidoc | 5 +++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/management/connectors/action-types/crowdstrike.asciidoc b/docs/management/connectors/action-types/crowdstrike.asciidoc index 813b6a699a71c..5e9c38a528765 100644 --- a/docs/management/connectors/action-types/crowdstrike.asciidoc +++ b/docs/management/connectors/action-types/crowdstrike.asciidoc @@ -12,6 +12,8 @@ preview::[] The CrowdStrike connector communicates with CrowdStrike Management Console via REST API. +To use this connector, you must have authority to run {endpoint-sec} connectors, which is an *{connectors-feature}* sub-feature privilege. Refer to <>. + [float] [[define-crowdstrike-ui]] === Create connectors in {kib} diff --git a/docs/management/connectors/action-types/sentinelone.asciidoc b/docs/management/connectors/action-types/sentinelone.asciidoc index 4fbc16ba5aafa..71dc4a3462ee2 100644 --- a/docs/management/connectors/action-types/sentinelone.asciidoc +++ b/docs/management/connectors/action-types/sentinelone.asciidoc @@ -12,6 +12,8 @@ preview::[] The SentinelOne connector communicates with SentinelOne Management Console via REST API. +To use this connector, you must have authority to run {endpoint-sec} connectors, which is an *{connectors-feature}* sub-feature privilege. Refer to <>. + [float] [[define-sentinelone-ui]] === Create connectors in {kib} diff --git a/docs/user/alerting/alerting-setup.asciidoc b/docs/user/alerting/alerting-setup.asciidoc index b3af9bfbe0303..a5a529eb016f4 100644 --- a/docs/user/alerting/alerting-setup.asciidoc +++ b/docs/user/alerting/alerting-setup.asciidoc @@ -64,10 +64,11 @@ a| ==== The *{connectors-feature}* feature privilege is required to manage connectors. To add rule actions and test connectors, you require only `Read` privileges. +By default, `All` privileges include authority to run {endpoint-sec} connectors (such as SentinelOne and CrowdStrike) unless you customize the sub-feature privileges. -By default, `All` privileges for the *Rules Settings* feature include authority to edit flapping detection settings unless you customize the sub-feature privileges. +Likewise, you can customize the *Rules Settings* sub-feature privileges related to flapping detection settings. -preview:[] To create a rule that uses the <>, you must also have `all` privileges for the *Cases* feature. +To create a rule that uses the <>, you must also have `All` privileges for the *Cases* feature. The rule type also affects the privileges that are required. For example, to create or edit {ml} rules, you must have `all` privileges for the *Analytics > {ml-app}* feature. From f4df5856f249552f01ccb020a3ffd90c1517b71d Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Mon, 20 Jan 2025 14:00:48 -0700 Subject: [PATCH 012/148] [controls] lazy load control actions (#206876) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * register control actions with async method * move floating actions into controls plugin * replace `PANEL_HOVER_TRIGGER` => `CONTROL_HOVER_TRIGGER` * Load controls in single chunk Screenshot 2025-01-16 at 11 40 08 AM --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Elastic Machine --- packages/kbn-optimizer/limits.yml | 6 +-- .../public/panel_actions/index.ts | 2 - .../public/panel_actions/triggers.ts | 11 ----- .../public/actions/clear_control_action.tsx | 38 +++++++++++++--- ...lear_control_action_compatibility_check.ts | 42 ------------------ .../public/actions/{index.ts => constants.ts} | 0 .../public/actions/controls_hover_trigger.ts | 22 ++++++++++ .../public/actions/delete_control_action.tsx | 36 +++++++++++++--- ...lete_control_action_compatibility_check.ts | 42 ------------------ .../public/actions/edit_control_action.tsx | 37 +++++++++++++--- ...edit_control_action_compatibility_check.ts | 43 ------------------- .../public/actions/register_actions.ts | 34 +++++++++++++++ .../components/control_panel.test.tsx | 4 +- .../components/control_panel.tsx | 2 +- .../components}/floating_actions.scss | 0 .../components}/floating_actions.tsx | 16 +++---- .../control_group_renderer_lazy.tsx | 2 +- .../register_control_group_embeddable.ts | 2 +- .../register_options_list_control.ts | 2 +- .../register_range_slider_control.ts | 2 +- .../register_timeslider_control.ts | 2 +- .../shared/controls/public/controls_module.ts | 20 +++++++++ .../plugins/shared/controls/public/index.ts | 8 +++- .../plugins/shared/controls/public/plugin.ts | 23 ++-------- .../public/services/kibana_services.ts | 3 ++ .../plugins/shared/embeddable/public/index.ts | 2 - .../public/ui_actions/register_triggers.ts | 2 - .../embeddable/public/ui_actions/triggers.ts | 11 ----- .../public/components/index.tsx | 2 - .../public/components/types.ts | 2 +- .../shared/presentation_util/public/index.ts | 1 - .../shared/presentation_util/tsconfig.json | 3 -- .../translations/translations/fr-FR.json | 4 -- .../translations/translations/ja-JP.json | 4 -- .../translations/translations/zh-CN.json | 4 -- 35 files changed, 203 insertions(+), 231 deletions(-) delete mode 100644 src/platform/plugins/shared/controls/public/actions/clear_control_action_compatibility_check.ts rename src/platform/plugins/shared/controls/public/actions/{index.ts => constants.ts} (100%) create mode 100644 src/platform/plugins/shared/controls/public/actions/controls_hover_trigger.ts delete mode 100644 src/platform/plugins/shared/controls/public/actions/delete_control_action_compatibility_check.ts delete mode 100644 src/platform/plugins/shared/controls/public/actions/edit_control_action_compatibility_check.ts create mode 100644 src/platform/plugins/shared/controls/public/actions/register_actions.ts rename src/platform/plugins/shared/{presentation_util/public/components/floating_actions => controls/public/control_group/components}/floating_actions.scss (100%) rename src/platform/plugins/shared/{presentation_util/public/components/floating_actions => controls/public/control_group/components}/floating_actions.tsx (91%) create mode 100644 src/platform/plugins/shared/controls/public/controls_module.ts diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 6f31687b36bac..c4f46400dc464 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -18,7 +18,7 @@ pageLoadAssetSize: cloudSecurityPosture: 34398 console: 61298 contentManagement: 16254 - controls: 60000 + controls: 12000 core: 564663 crossClusterReplication: 65408 customIntegrations: 22034 @@ -37,7 +37,7 @@ pageLoadAssetSize: discover: 99999 discoverEnhanced: 42730 discoverShared: 17111 - embeddable: 87309 + embeddable: 24000 embeddableEnhanced: 22107 enterpriseSearch: 66810 entityManager: 17175 @@ -123,7 +123,7 @@ pageLoadAssetSize: osquery: 107090 painlessLab: 179748 presentationPanel: 11468 - presentationUtil: 33186 + presentationUtil: 25000 productDocBase: 22500 profiling: 36694 remoteClusters: 51327 diff --git a/src/platform/plugins/private/presentation_panel/public/panel_actions/index.ts b/src/platform/plugins/private/presentation_panel/public/panel_actions/index.ts index 43a3ac116cf93..a9f14d09350ca 100644 --- a/src/platform/plugins/private/presentation_panel/public/panel_actions/index.ts +++ b/src/platform/plugins/private/presentation_panel/public/panel_actions/index.ts @@ -11,9 +11,7 @@ export { contextMenuTrigger, CONTEXT_MENU_TRIGGER, panelBadgeTrigger, - panelHoverTrigger, panelNotificationTrigger, PANEL_BADGE_TRIGGER, - PANEL_HOVER_TRIGGER, PANEL_NOTIFICATION_TRIGGER, } from './triggers'; diff --git a/src/platform/plugins/private/presentation_panel/public/panel_actions/triggers.ts b/src/platform/plugins/private/presentation_panel/public/panel_actions/triggers.ts index 18c98074486d9..79c1157ccecad 100644 --- a/src/platform/plugins/private/presentation_panel/public/panel_actions/triggers.ts +++ b/src/platform/plugins/private/presentation_panel/public/panel_actions/triggers.ts @@ -21,17 +21,6 @@ export const contextMenuTrigger: Trigger = { }), }; -export const PANEL_HOVER_TRIGGER = 'PANEL_HOVER_TRIGGER'; -export const panelHoverTrigger: Trigger = { - id: PANEL_HOVER_TRIGGER, - title: i18n.translate('presentationPanel.hoverTrigger.title', { - defaultMessage: 'Panel hover', - }), - description: i18n.translate('presentationPanel.hoverTrigger.description', { - defaultMessage: "A new action will be added to the panel's hover menu", - }), -}; - export const PANEL_BADGE_TRIGGER = 'PANEL_BADGE_TRIGGER'; export const panelBadgeTrigger: Trigger = { id: PANEL_BADGE_TRIGGER, diff --git a/src/platform/plugins/shared/controls/public/actions/clear_control_action.tsx b/src/platform/plugins/shared/controls/public/actions/clear_control_action.tsx index 06f9b26c04ddc..f435f7e885c5b 100644 --- a/src/platform/plugins/shared/controls/public/actions/clear_control_action.tsx +++ b/src/platform/plugins/shared/controls/public/actions/clear_control_action.tsx @@ -11,15 +11,43 @@ import React, { SyntheticEvent } from 'react'; import { EuiButtonIcon, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import type { EmbeddableApiContext, HasUniqueId } from '@kbn/presentation-publishing'; +import { + apiCanAccessViewMode, + apiHasParentApi, + apiHasType, + apiHasUniqueId, + apiIsOfType, + HasParentApi, + type EmbeddableApiContext, + type HasUniqueId, + HasType, +} from '@kbn/presentation-publishing'; import { IncompatibleActionError, FrequentCompatibilityChangeAction, type Action, } from '@kbn/ui-actions-plugin/public'; -import { isClearableControl } from '../types'; +import { PresentationContainer, apiIsPresentationContainer } from '@kbn/presentation-containers'; +import { CONTROL_GROUP_TYPE } from '../../common'; +import { CanClearSelections, isClearableControl } from '../types'; + +import { ACTION_CLEAR_CONTROL } from './constants'; + +type ClearControlActionApi = HasType & + HasUniqueId & + CanClearSelections & + HasParentApi; -import { ACTION_CLEAR_CONTROL } from '.'; +const compatibilityCheck = (api: unknown | null): api is ClearControlActionApi => + Boolean( + apiHasType(api) && + apiHasUniqueId(api) && + isClearableControl(api) && + apiHasParentApi(api) && + apiCanAccessViewMode(api.parentApi) && + apiIsOfType(api.parentApi, CONTROL_GROUP_TYPE) && + apiIsPresentationContainer(api.parentApi) + ); export class ClearControlAction implements Action, FrequentCompatibilityChangeAction @@ -73,12 +101,10 @@ export class ClearControlAction } public async isCompatible({ embeddable }: EmbeddableApiContext) { - const { isCompatible } = await import('./clear_control_action_compatibility_check'); - return isCompatible(embeddable); + return compatibilityCheck(embeddable); } public async execute({ embeddable }: EmbeddableApiContext) { - const { compatibilityCheck } = await import('./clear_control_action_compatibility_check'); if (!compatibilityCheck(embeddable)) throw new IncompatibleActionError(); embeddable.clearSelections(); diff --git a/src/platform/plugins/shared/controls/public/actions/clear_control_action_compatibility_check.ts b/src/platform/plugins/shared/controls/public/actions/clear_control_action_compatibility_check.ts deleted file mode 100644 index f04cb91bc9a3a..0000000000000 --- a/src/platform/plugins/shared/controls/public/actions/clear_control_action_compatibility_check.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { PresentationContainer, apiIsPresentationContainer } from '@kbn/presentation-containers'; -import { - HasParentApi, - HasType, - HasUniqueId, - apiCanAccessViewMode, - apiHasParentApi, - apiHasType, - apiHasUniqueId, - apiIsOfType, -} from '@kbn/presentation-publishing'; -import { CONTROL_GROUP_TYPE } from '../../common'; -import { isClearableControl, type CanClearSelections } from '../types'; - -type ClearControlActionApi = HasType & - HasUniqueId & - CanClearSelections & - HasParentApi; - -export const compatibilityCheck = (api: unknown | null): api is ClearControlActionApi => - Boolean( - apiHasType(api) && - apiHasUniqueId(api) && - isClearableControl(api) && - apiHasParentApi(api) && - apiCanAccessViewMode(api.parentApi) && - apiIsOfType(api.parentApi, CONTROL_GROUP_TYPE) && - apiIsPresentationContainer(api.parentApi) - ); - -export function isCompatible(api: unknown) { - return compatibilityCheck(api); -} diff --git a/src/platform/plugins/shared/controls/public/actions/index.ts b/src/platform/plugins/shared/controls/public/actions/constants.ts similarity index 100% rename from src/platform/plugins/shared/controls/public/actions/index.ts rename to src/platform/plugins/shared/controls/public/actions/constants.ts diff --git a/src/platform/plugins/shared/controls/public/actions/controls_hover_trigger.ts b/src/platform/plugins/shared/controls/public/actions/controls_hover_trigger.ts new file mode 100644 index 0000000000000..d4f62495a656c --- /dev/null +++ b/src/platform/plugins/shared/controls/public/actions/controls_hover_trigger.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { Trigger } from '@kbn/ui-actions-plugin/public'; + +export const CONTROL_HOVER_TRIGGER = 'CONTROL_HOVER_TRIGGER'; +export const controlHoverTrigger: Trigger = { + id: CONTROL_HOVER_TRIGGER, + title: i18n.translate('controls.hoverTrigger.title', { + defaultMessage: 'Control hover', + }), + description: i18n.translate('controls.hoverTrigger.description', { + defaultMessage: "Add action to controls's hover menu", + }), +}; diff --git a/src/platform/plugins/shared/controls/public/actions/delete_control_action.tsx b/src/platform/plugins/shared/controls/public/actions/delete_control_action.tsx index 7ee55ddd3da69..5ef40e7443b63 100644 --- a/src/platform/plugins/shared/controls/public/actions/delete_control_action.tsx +++ b/src/platform/plugins/shared/controls/public/actions/delete_control_action.tsx @@ -11,12 +11,40 @@ import React from 'react'; import { EuiButtonIcon, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import type { HasUniqueId, EmbeddableApiContext } from '@kbn/presentation-publishing'; +import { + type HasUniqueId, + type EmbeddableApiContext, + type HasType, + type HasParentApi, + type PublishesViewMode, + apiHasType, + apiHasUniqueId, + apiHasParentApi, + apiCanAccessViewMode, + apiIsOfType, + getInheritedViewMode, +} from '@kbn/presentation-publishing'; import { IncompatibleActionError, type Action } from '@kbn/ui-actions-plugin/public'; -import { ACTION_DELETE_CONTROL } from '.'; +import { PresentationContainer, apiIsPresentationContainer } from '@kbn/presentation-containers'; +import { CONTROL_GROUP_TYPE } from '../../common'; +import { ACTION_DELETE_CONTROL } from './constants'; import { coreServices } from '../services/kibana_services'; +type DeleteControlActionApi = HasType & + HasUniqueId & + HasParentApi; + +export const compatibilityCheck = (api: unknown | null): api is DeleteControlActionApi => + Boolean( + apiHasType(api) && + apiHasUniqueId(api) && + apiHasParentApi(api) && + apiCanAccessViewMode(api.parentApi) && + apiIsOfType(api.parentApi, CONTROL_GROUP_TYPE) && + apiIsPresentationContainer(api.parentApi) + ); + export class DeleteControlAction implements Action { public readonly type = ACTION_DELETE_CONTROL; public readonly id = ACTION_DELETE_CONTROL; @@ -49,12 +77,10 @@ export class DeleteControlAction implements Action { } public async isCompatible({ embeddable }: EmbeddableApiContext) { - const { isCompatible } = await import('./delete_control_action_compatibility_check'); - return isCompatible(embeddable); + return compatibilityCheck(embeddable) && getInheritedViewMode(embeddable.parentApi) === 'edit'; } public async execute({ embeddable }: EmbeddableApiContext) { - const { compatibilityCheck } = await import('./delete_control_action_compatibility_check'); if (!compatibilityCheck(embeddable)) throw new IncompatibleActionError(); coreServices.overlays diff --git a/src/platform/plugins/shared/controls/public/actions/delete_control_action_compatibility_check.ts b/src/platform/plugins/shared/controls/public/actions/delete_control_action_compatibility_check.ts deleted file mode 100644 index a09b3448b2fc1..0000000000000 --- a/src/platform/plugins/shared/controls/public/actions/delete_control_action_compatibility_check.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ViewMode } from '@kbn/embeddable-plugin/public'; -import { PresentationContainer, apiIsPresentationContainer } from '@kbn/presentation-containers'; -import { - HasParentApi, - HasType, - HasUniqueId, - PublishesViewMode, - apiCanAccessViewMode, - apiHasParentApi, - apiHasType, - apiHasUniqueId, - apiIsOfType, - getInheritedViewMode, -} from '@kbn/presentation-publishing'; -import { CONTROL_GROUP_TYPE } from '../../common'; - -type DeleteControlActionApi = HasType & - HasUniqueId & - HasParentApi; - -export const compatibilityCheck = (api: unknown | null): api is DeleteControlActionApi => - Boolean( - apiHasType(api) && - apiHasUniqueId(api) && - apiHasParentApi(api) && - apiCanAccessViewMode(api.parentApi) && - apiIsOfType(api.parentApi, CONTROL_GROUP_TYPE) && - apiIsPresentationContainer(api.parentApi) - ); - -export function isCompatible(api: unknown) { - return compatibilityCheck(api) && getInheritedViewMode(api.parentApi) === ViewMode.EDIT; -} diff --git a/src/platform/plugins/shared/controls/public/actions/edit_control_action.tsx b/src/platform/plugins/shared/controls/public/actions/edit_control_action.tsx index 0dec1a610d9d4..e8244f4229545 100644 --- a/src/platform/plugins/shared/controls/public/actions/edit_control_action.tsx +++ b/src/platform/plugins/shared/controls/public/actions/edit_control_action.tsx @@ -11,10 +11,35 @@ import React from 'react'; import { EuiButtonIcon, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import type { EmbeddableApiContext, HasUniqueId } from '@kbn/presentation-publishing'; +import { + apiHasType, + apiHasUniqueId, + hasEditCapabilities, + type EmbeddableApiContext, + type HasUniqueId, + apiHasParentApi, + apiCanAccessViewMode, + apiIsOfType, + getInheritedViewMode, +} from '@kbn/presentation-publishing'; import { IncompatibleActionError, type Action } from '@kbn/ui-actions-plugin/public'; -import { ACTION_EDIT_CONTROL } from '.'; +import { apiIsPresentationContainer } from '@kbn/presentation-containers'; +import { CONTROL_GROUP_TYPE } from '../../common'; +import { ACTION_EDIT_CONTROL } from './constants'; +import { DataControlApi } from '../controls/data_controls/types'; + +const compatibilityCheck = (api: unknown): api is DataControlApi => { + return Boolean( + apiHasType(api) && + apiHasUniqueId(api) && + hasEditCapabilities(api) && + apiHasParentApi(api) && + apiCanAccessViewMode(api.parentApi) && + apiIsOfType(api.parentApi, CONTROL_GROUP_TYPE) && + apiIsPresentationContainer(api.parentApi) + ); +}; export class EditControlAction implements Action { public readonly type = ACTION_EDIT_CONTROL; @@ -48,12 +73,14 @@ export class EditControlAction implements Action { } public async isCompatible({ embeddable }: EmbeddableApiContext) { - const { isCompatible } = await import('./edit_control_action_compatibility_check'); - return isCompatible(embeddable); + return ( + compatibilityCheck(embeddable) && + getInheritedViewMode(embeddable.parentApi) === 'edit' && + embeddable.isEditingEnabled() + ); } public async execute({ embeddable }: EmbeddableApiContext) { - const { compatibilityCheck } = await import('./edit_control_action_compatibility_check'); if (!compatibilityCheck(embeddable)) throw new IncompatibleActionError(); await embeddable.onEdit(); } diff --git a/src/platform/plugins/shared/controls/public/actions/edit_control_action_compatibility_check.ts b/src/platform/plugins/shared/controls/public/actions/edit_control_action_compatibility_check.ts deleted file mode 100644 index 0af5a942dd032..0000000000000 --- a/src/platform/plugins/shared/controls/public/actions/edit_control_action_compatibility_check.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ViewMode } from '@kbn/embeddable-plugin/public'; -import { apiIsPresentationContainer } from '@kbn/presentation-containers'; -import { - apiCanAccessViewMode, - apiHasParentApi, - apiHasType, - apiHasUniqueId, - apiIsOfType, - getInheritedViewMode, - hasEditCapabilities, -} from '@kbn/presentation-publishing'; - -import { CONTROL_GROUP_TYPE } from '../../common'; -import { DataControlApi } from '../controls/data_controls/types'; - -export const compatibilityCheck = (api: unknown): api is DataControlApi => { - return Boolean( - apiHasType(api) && - apiHasUniqueId(api) && - hasEditCapabilities(api) && - apiHasParentApi(api) && - apiCanAccessViewMode(api.parentApi) && - apiIsOfType(api.parentApi, CONTROL_GROUP_TYPE) && - apiIsPresentationContainer(api.parentApi) - ); -}; - -export function isCompatible(api: unknown) { - return ( - compatibilityCheck(api) && - getInheritedViewMode(api.parentApi) === ViewMode.EDIT && - api.isEditingEnabled() - ); -} diff --git a/src/platform/plugins/shared/controls/public/actions/register_actions.ts b/src/platform/plugins/shared/controls/public/actions/register_actions.ts new file mode 100644 index 0000000000000..0d6097759ea6a --- /dev/null +++ b/src/platform/plugins/shared/controls/public/actions/register_actions.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; +import { ACTION_CLEAR_CONTROL, ACTION_DELETE_CONTROL, ACTION_EDIT_CONTROL } from './constants'; +import { CONTROL_HOVER_TRIGGER, controlHoverTrigger } from './controls_hover_trigger'; + +export function registerActions(uiActions: UiActionsStart) { + uiActions.registerTrigger(controlHoverTrigger); + + uiActions.registerActionAsync(ACTION_DELETE_CONTROL, async () => { + const { DeleteControlAction } = await import('../controls_module'); + return new DeleteControlAction(); + }); + uiActions.attachAction(CONTROL_HOVER_TRIGGER, ACTION_DELETE_CONTROL); + + uiActions.registerActionAsync(ACTION_EDIT_CONTROL, async () => { + const { EditControlAction } = await import('../controls_module'); + return new EditControlAction(); + }); + uiActions.attachAction(CONTROL_HOVER_TRIGGER, ACTION_EDIT_CONTROL); + + uiActions.registerActionAsync(ACTION_CLEAR_CONTROL, async () => { + const { ClearControlAction } = await import('../controls_module'); + return new ClearControlAction(); + }); + uiActions.attachAction(CONTROL_HOVER_TRIGGER, ACTION_CLEAR_CONTROL); +} diff --git a/src/platform/plugins/shared/controls/public/control_group/components/control_panel.test.tsx b/src/platform/plugins/shared/controls/public/control_group/components/control_panel.test.tsx index 0f6d8b07b324a..ad2a1461a1d5b 100644 --- a/src/platform/plugins/shared/controls/public/control_group/components/control_panel.test.tsx +++ b/src/platform/plugins/shared/controls/public/control_group/components/control_panel.test.tsx @@ -11,12 +11,12 @@ import React, { useImperativeHandle } from 'react'; import { BehaviorSubject } from 'rxjs'; import { setMockedPresentationUtilServices } from '@kbn/presentation-util-plugin/public/mocks'; -import { uiActionsService } from '@kbn/presentation-util-plugin/public/services/kibana_services'; import { render, waitFor } from '@testing-library/react'; +import { Action } from '@kbn/ui-actions-plugin/public'; import type { ControlLabelPosition, ControlWidth } from '../../../common'; +import { uiActionsService } from '../../services/kibana_services'; import { ControlPanel } from './control_panel'; -import { Action } from '@kbn/ui-actions-plugin/public'; describe('render', () => { let mockApi = {}; diff --git a/src/platform/plugins/shared/controls/public/control_group/components/control_panel.tsx b/src/platform/plugins/shared/controls/public/control_group/components/control_panel.tsx index acff284eeba1f..9a21c28eb2f1d 100644 --- a/src/platform/plugins/shared/controls/public/control_group/components/control_panel.tsx +++ b/src/platform/plugins/shared/controls/public/control_group/components/control_panel.tsx @@ -27,7 +27,7 @@ import { apiPublishesViewMode, useBatchedOptionalPublishingSubjects, } from '@kbn/presentation-publishing'; -import { FloatingActions } from '@kbn/presentation-util-plugin/public'; +import { FloatingActions } from './floating_actions'; import { DEFAULT_CONTROL_GROW, DEFAULT_CONTROL_WIDTH } from '../../../common'; import { ControlPanelProps, DefaultControlApi } from '../../controls/types'; diff --git a/src/platform/plugins/shared/presentation_util/public/components/floating_actions/floating_actions.scss b/src/platform/plugins/shared/controls/public/control_group/components/floating_actions.scss similarity index 100% rename from src/platform/plugins/shared/presentation_util/public/components/floating_actions/floating_actions.scss rename to src/platform/plugins/shared/controls/public/control_group/components/floating_actions.scss diff --git a/src/platform/plugins/shared/presentation_util/public/components/floating_actions/floating_actions.tsx b/src/platform/plugins/shared/controls/public/control_group/components/floating_actions.tsx similarity index 91% rename from src/platform/plugins/shared/presentation_util/public/components/floating_actions/floating_actions.tsx rename to src/platform/plugins/shared/controls/public/control_group/components/floating_actions.tsx index 33d03058810c9..b6c51619eda0e 100644 --- a/src/platform/plugins/shared/presentation_util/public/components/floating_actions/floating_actions.tsx +++ b/src/platform/plugins/shared/controls/public/control_group/components/floating_actions.tsx @@ -12,16 +12,13 @@ import React, { FC, ReactElement, useEffect, useState } from 'react'; import { v4 } from 'uuid'; import { Subscription } from 'rxjs'; -import { - PANEL_HOVER_TRIGGER, - panelHoverTrigger, - type ViewMode, -} from '@kbn/embeddable-plugin/public'; +import { type ViewMode } from '@kbn/embeddable-plugin/public'; import { apiHasUniqueId } from '@kbn/presentation-publishing'; import { Action } from '@kbn/ui-actions-plugin/public'; import { AnyApiAction } from '@kbn/presentation-panel-plugin/public/panel_actions/types'; import { uiActionsService } from '../../services/kibana_services'; import './floating_actions.scss'; +import { CONTROL_HOVER_TRIGGER, controlHoverTrigger } from '../../actions/controls_hover_trigger'; export interface FloatingActionsProps { children: ReactElement; @@ -53,7 +50,7 @@ export const FloatingActions: FC = ({ let canceled = false; const context = { embeddable: api, - trigger: panelHoverTrigger, + trigger: controlHoverTrigger, }; const sortByOrder = (a: Action | FloatingActionItem, b: Action | FloatingActionItem) => { @@ -62,7 +59,7 @@ export const FloatingActions: FC = ({ const getActions: () => Promise = async () => { const actions = ( - await uiActionsService.getTriggerCompatibleActions(PANEL_HOVER_TRIGGER, context) + await uiActionsService.getTriggerCompatibleActions(CONTROL_HOVER_TRIGGER, context) ) .filter((action) => { return action.MenuItem !== undefined && (disabledActions ?? []).indexOf(action.id) === -1; @@ -92,7 +89,10 @@ export const FloatingActions: FC = ({ setFloatingActions(actions); const frequentlyChangingActions = - await uiActionsService.getFrequentlyChangingActionsForTrigger(PANEL_HOVER_TRIGGER, context); + await uiActionsService.getFrequentlyChangingActionsForTrigger( + CONTROL_HOVER_TRIGGER, + context + ); if (canceled) return; for (const action of frequentlyChangingActions) { diff --git a/src/platform/plugins/shared/controls/public/control_group/control_group_renderer/control_group_renderer_lazy.tsx b/src/platform/plugins/shared/controls/public/control_group/control_group_renderer/control_group_renderer_lazy.tsx index e4bf8594ceb38..7ef526f6acd7c 100644 --- a/src/platform/plugins/shared/controls/public/control_group/control_group_renderer/control_group_renderer_lazy.tsx +++ b/src/platform/plugins/shared/controls/public/control_group/control_group_renderer/control_group_renderer_lazy.tsx @@ -12,7 +12,7 @@ import { dynamic } from '@kbn/shared-ux-utility'; import type { ControlGroupRendererProps } from './control_group_renderer'; const Component = dynamic(async () => { - const { ControlGroupRenderer } = await import('./control_group_renderer'); + const { ControlGroupRenderer } = await import('../../controls_module'); return { default: ControlGroupRenderer, }; diff --git a/src/platform/plugins/shared/controls/public/control_group/register_control_group_embeddable.ts b/src/platform/plugins/shared/controls/public/control_group/register_control_group_embeddable.ts index f93458ab6bc4a..8708efda5d830 100644 --- a/src/platform/plugins/shared/controls/public/control_group/register_control_group_embeddable.ts +++ b/src/platform/plugins/shared/controls/public/control_group/register_control_group_embeddable.ts @@ -14,7 +14,7 @@ import { untilPluginStartServicesReady } from '../services/kibana_services'; export function registerControlGroupEmbeddable(embeddableSetup: EmbeddableSetup) { embeddableSetup.registerReactEmbeddableFactory(CONTROL_GROUP_TYPE, async () => { const [{ getControlGroupEmbeddableFactory }] = await Promise.all([ - import('./get_control_group_factory'), + import('../controls_module'), untilPluginStartServicesReady(), ]); return getControlGroupEmbeddableFactory(); diff --git a/src/platform/plugins/shared/controls/public/controls/data_controls/options_list_control/register_options_list_control.ts b/src/platform/plugins/shared/controls/public/controls/data_controls/options_list_control/register_options_list_control.ts index 45f430598fa50..b21864ec90546 100644 --- a/src/platform/plugins/shared/controls/public/controls/data_controls/options_list_control/register_options_list_control.ts +++ b/src/platform/plugins/shared/controls/public/controls/data_controls/options_list_control/register_options_list_control.ts @@ -14,7 +14,7 @@ import { registerControlFactory } from '../../../control_factory_registry'; export function registerOptionsListControl() { registerControlFactory(OPTIONS_LIST_CONTROL, async () => { const [{ getOptionsListControlFactory }] = await Promise.all([ - import('./get_options_list_control_factory'), + import('../../../controls_module'), untilPluginStartServicesReady(), ]); return getOptionsListControlFactory(); diff --git a/src/platform/plugins/shared/controls/public/controls/data_controls/range_slider/register_range_slider_control.ts b/src/platform/plugins/shared/controls/public/controls/data_controls/range_slider/register_range_slider_control.ts index 9f7af0ccae2c3..a2ee5f4822de8 100644 --- a/src/platform/plugins/shared/controls/public/controls/data_controls/range_slider/register_range_slider_control.ts +++ b/src/platform/plugins/shared/controls/public/controls/data_controls/range_slider/register_range_slider_control.ts @@ -14,7 +14,7 @@ import { registerControlFactory } from '../../../control_factory_registry'; export function registerRangeSliderControl() { registerControlFactory(RANGE_SLIDER_CONTROL, async () => { const [{ getRangesliderControlFactory }] = await Promise.all([ - import('./get_range_slider_control_factory'), + import('../../../controls_module'), untilPluginStartServicesReady(), ]); diff --git a/src/platform/plugins/shared/controls/public/controls/timeslider_control/register_timeslider_control.ts b/src/platform/plugins/shared/controls/public/controls/timeslider_control/register_timeslider_control.ts index 93f30fe4b07d3..2937ec322b56f 100644 --- a/src/platform/plugins/shared/controls/public/controls/timeslider_control/register_timeslider_control.ts +++ b/src/platform/plugins/shared/controls/public/controls/timeslider_control/register_timeslider_control.ts @@ -14,7 +14,7 @@ import { registerControlFactory } from '../../control_factory_registry'; export function registerTimeSliderControl() { registerControlFactory(TIME_SLIDER_CONTROL, async () => { const [{ getTimesliderControlFactory }] = await Promise.all([ - import('./get_timeslider_control_factory'), + import('../../controls_module'), untilPluginStartServicesReady(), ]); return getTimesliderControlFactory(); diff --git a/src/platform/plugins/shared/controls/public/controls_module.ts b/src/platform/plugins/shared/controls/public/controls_module.ts new file mode 100644 index 0000000000000..3dbcdf910cccb --- /dev/null +++ b/src/platform/plugins/shared/controls/public/controls_module.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export { ClearControlAction } from './actions/clear_control_action'; +export { DeleteControlAction } from './actions/delete_control_action'; +export { EditControlAction } from './actions/edit_control_action'; + +export { getControlGroupEmbeddableFactory } from './control_group/get_control_group_factory'; + +export { getOptionsListControlFactory } from './controls/data_controls/options_list_control/get_options_list_control_factory'; +export { getRangesliderControlFactory } from './controls/data_controls/range_slider/get_range_slider_control_factory'; +export { getTimesliderControlFactory } from './controls/timeslider_control/get_timeslider_control_factory'; + +export { ControlGroupRenderer } from './control_group/control_group_renderer/control_group_renderer'; diff --git a/src/platform/plugins/shared/controls/public/index.ts b/src/platform/plugins/shared/controls/public/index.ts index eaa800387759b..6455c71e7b5f6 100644 --- a/src/platform/plugins/shared/controls/public/index.ts +++ b/src/platform/plugins/shared/controls/public/index.ts @@ -14,9 +14,13 @@ export { type ControlGroupStateBuilder, } from './control_group/utils/control_group_state_builder'; -export type { ControlGroupApi, ControlStateTransform } from './control_group/types'; +export { + ACTION_CLEAR_CONTROL, + ACTION_DELETE_CONTROL, + ACTION_EDIT_CONTROL, +} from './actions/constants'; -export { ACTION_CLEAR_CONTROL, ACTION_DELETE_CONTROL, ACTION_EDIT_CONTROL } from './actions'; +export type { ControlGroupApi, ControlStateTransform } from './control_group/types'; export type { DataControlApi, DataControlFactory } from './controls/data_controls/types'; diff --git a/src/platform/plugins/shared/controls/public/plugin.ts b/src/platform/plugins/shared/controls/public/plugin.ts index 3e915e958d111..7c6d1ae91ab6a 100644 --- a/src/platform/plugins/shared/controls/public/plugin.ts +++ b/src/platform/plugins/shared/controls/public/plugin.ts @@ -8,17 +8,13 @@ */ import type { CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; -import { PANEL_HOVER_TRIGGER } from '@kbn/embeddable-plugin/public'; - -import { ClearControlAction } from './actions/clear_control_action'; -import { DeleteControlAction } from './actions/delete_control_action'; -import { EditControlAction } from './actions/edit_control_action'; import { registerControlGroupEmbeddable } from './control_group/register_control_group_embeddable'; import { registerOptionsListControl } from './controls/data_controls/options_list_control/register_options_list_control'; import { registerRangeSliderControl } from './controls/data_controls/range_slider/register_range_slider_control'; import { registerTimeSliderControl } from './controls/timeslider_control/register_timeslider_control'; -import { setKibanaServices, untilPluginStartServicesReady } from './services/kibana_services'; +import { setKibanaServices } from './services/kibana_services'; import type { ControlsPluginSetupDeps, ControlsPluginStartDeps } from './types'; +import { registerActions } from './actions/register_actions'; export class ControlsPlugin implements Plugin @@ -36,22 +32,9 @@ export class ControlsPlugin } public start(coreStart: CoreStart, startPlugins: ControlsPluginStartDeps) { - const { uiActions } = startPlugins; setKibanaServices(coreStart, startPlugins); - untilPluginStartServicesReady().then(() => { - const deleteControlAction = new DeleteControlAction(); - uiActions.registerAction(deleteControlAction); - uiActions.attachAction(PANEL_HOVER_TRIGGER, deleteControlAction.id); - - const editControlAction = new EditControlAction(); - uiActions.registerAction(editControlAction); - uiActions.attachAction(PANEL_HOVER_TRIGGER, editControlAction.id); - - const clearControlAction = new ClearControlAction(); - uiActions.registerAction(clearControlAction); - uiActions.attachAction(PANEL_HOVER_TRIGGER, clearControlAction.id); - }); + registerActions(startPlugins.uiActions); } public stop() {} diff --git a/src/platform/plugins/shared/controls/public/services/kibana_services.ts b/src/platform/plugins/shared/controls/public/services/kibana_services.ts index b9e5fadcecaa0..c13a56c3826ad 100644 --- a/src/platform/plugins/shared/controls/public/services/kibana_services.ts +++ b/src/platform/plugins/shared/controls/public/services/kibana_services.ts @@ -12,12 +12,14 @@ import { BehaviorSubject } from 'rxjs'; import { CoreStart } from '@kbn/core/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; +import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; import { ControlsPluginStartDeps } from '../types'; export let coreServices: CoreStart; export let dataService: DataPublicPluginStart; export let dataViewsService: DataViewsPublicPluginStart; +export let uiActionsService: UiActionsStart; const servicesReady$ = new BehaviorSubject(false); @@ -25,6 +27,7 @@ export const setKibanaServices = (kibanaCore: CoreStart, deps: ControlsPluginSta coreServices = kibanaCore; dataService = deps.data; dataViewsService = deps.dataViews; + uiActionsService = deps.uiActions; servicesReady$.next(true); }; diff --git a/src/platform/plugins/shared/embeddable/public/index.ts b/src/platform/plugins/shared/embeddable/public/index.ts index 88dafd108e5ea..31da8691af17e 100644 --- a/src/platform/plugins/shared/embeddable/public/index.ts +++ b/src/platform/plugins/shared/embeddable/public/index.ts @@ -25,10 +25,8 @@ export { isValueClickTriggerContext, MULTI_VALUE_CLICK_TRIGGER, panelBadgeTrigger, - panelHoverTrigger, panelNotificationTrigger, PANEL_BADGE_TRIGGER, - PANEL_HOVER_TRIGGER, PANEL_NOTIFICATION_TRIGGER, SELECT_RANGE_TRIGGER, VALUE_CLICK_TRIGGER, diff --git a/src/platform/plugins/shared/embeddable/public/ui_actions/register_triggers.ts b/src/platform/plugins/shared/embeddable/public/ui_actions/register_triggers.ts index 97d2cf0f58399..b51dd18f6ec0a 100644 --- a/src/platform/plugins/shared/embeddable/public/ui_actions/register_triggers.ts +++ b/src/platform/plugins/shared/embeddable/public/ui_actions/register_triggers.ts @@ -16,12 +16,10 @@ import { selectRangeTrigger, valueClickTrigger, cellValueTrigger, - panelHoverTrigger, } from './triggers'; export const registerTriggers = (uiActions: UiActionsSetup) => { uiActions.registerTrigger(contextMenuTrigger); - uiActions.registerTrigger(panelHoverTrigger); uiActions.registerTrigger(panelBadgeTrigger); uiActions.registerTrigger(panelNotificationTrigger); uiActions.registerTrigger(selectRangeTrigger); diff --git a/src/platform/plugins/shared/embeddable/public/ui_actions/triggers.ts b/src/platform/plugins/shared/embeddable/public/ui_actions/triggers.ts index cdebc6129afb6..2eb67397a07f4 100644 --- a/src/platform/plugins/shared/embeddable/public/ui_actions/triggers.ts +++ b/src/platform/plugins/shared/embeddable/public/ui_actions/triggers.ts @@ -75,17 +75,6 @@ export const contextMenuTrigger: Trigger = { }), }; -export const PANEL_HOVER_TRIGGER = 'PANEL_HOVER_TRIGGER'; -export const panelHoverTrigger: Trigger = { - id: PANEL_HOVER_TRIGGER, - title: i18n.translate('embeddableApi.panelHoverTrigger.title', { - defaultMessage: 'Panel hover', - }), - description: i18n.translate('embeddableApi.panelHoverTrigger.description', { - defaultMessage: "A new action will be added to the panel's hover menu", - }), -}; - export const PANEL_BADGE_TRIGGER = 'PANEL_BADGE_TRIGGER'; export const panelBadgeTrigger: Trigger = { id: PANEL_BADGE_TRIGGER, diff --git a/src/platform/plugins/shared/presentation_util/public/components/index.tsx b/src/platform/plugins/shared/presentation_util/public/components/index.tsx index 80b8b22cd1d68..4195ef39f90b4 100644 --- a/src/platform/plugins/shared/presentation_util/public/components/index.tsx +++ b/src/platform/plugins/shared/presentation_util/public/components/index.tsx @@ -61,8 +61,6 @@ export { DEFAULT_DASHBOARD_DRILLDOWN_OPTIONS, } from './dashboard_drilldown_options/types'; -export { FloatingActions } from './floating_actions/floating_actions'; - /** * A lazily-loaded ExpressionInput component. */ diff --git a/src/platform/plugins/shared/presentation_util/public/components/types.ts b/src/platform/plugins/shared/presentation_util/public/components/types.ts index f7a479a58b2ef..64574bd7d0e82 100644 --- a/src/platform/plugins/shared/presentation_util/public/components/types.ts +++ b/src/platform/plugins/shared/presentation_util/public/components/types.ts @@ -13,7 +13,7 @@ import type { CSSProperties, HTMLAttributes } from 'react'; import type { ExpressionFunction } from '@kbn/expressions-plugin/common'; -import { OnSaveProps, SaveModalState } from '@kbn/saved-objects-plugin/public'; +import type { OnSaveProps, SaveModalState } from '@kbn/saved-objects-plugin/public'; interface SaveModalDocumentInfo { id?: string; diff --git a/src/platform/plugins/shared/presentation_util/public/index.ts b/src/platform/plugins/shared/presentation_util/public/index.ts index 76e7362c855ed..67790ec49f02a 100644 --- a/src/platform/plugins/shared/presentation_util/public/index.ts +++ b/src/platform/plugins/shared/presentation_util/public/index.ts @@ -24,7 +24,6 @@ export { withSuspense, LazyDataViewPicker, LazyFieldPicker, - FloatingActions, type DashboardDrilldownOptions, DashboardDrilldownOptionsComponent, DEFAULT_DASHBOARD_DRILLDOWN_OPTIONS, diff --git a/src/platform/plugins/shared/presentation_util/tsconfig.json b/src/platform/plugins/shared/presentation_util/tsconfig.json index 44f61e43b1c24..2be8e5c7ad207 100644 --- a/src/platform/plugins/shared/presentation_util/tsconfig.json +++ b/src/platform/plugins/shared/presentation_util/tsconfig.json @@ -15,7 +15,6 @@ "kbn_references": [ "@kbn/core", "@kbn/saved-objects-plugin", - "@kbn/embeddable-plugin", "@kbn/kibana-react-plugin", "@kbn/i18n", "@kbn/expressions-plugin", @@ -34,9 +33,7 @@ "@kbn/code-editor", "@kbn/calculate-width-from-char-count", "@kbn/field-utils", - "@kbn/presentation-publishing", "@kbn/core-ui-settings-browser", - "@kbn/presentation-panel-plugin", ], "exclude": ["target/**/*"] } diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index 43c5be2b14d69..21f1a92eb4de9 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -2766,8 +2766,6 @@ "embeddableApi.multiValueClickTrigger.title": "Clics multiples", "embeddableApi.panelBadgeTrigger.description": "Des actions apparaissent dans la barre de titre lorsqu'un élément pouvant être intégré est chargé dans un panneau.", "embeddableApi.panelBadgeTrigger.title": "Badges du panneau", - "embeddableApi.panelHoverTrigger.description": "Une nouvelle action sera ajoutée au menu flottant du panneau", - "embeddableApi.panelHoverTrigger.title": "Menu contextuel du panneau", "embeddableApi.panelNotificationTrigger.description": "Les actions apparaissent dans l’angle supérieur droit des panneaux.", "embeddableApi.panelNotificationTrigger.title": "Notifications du panneau", "embeddableApi.reactEmbeddable.factoryAlreadyExistsError": "Une usine incorporable pour le type : {key} est déjà enregistrée.", @@ -6221,8 +6219,6 @@ "presentationPanel.filters.filtersTitle": "Filtres", "presentationPanel.filters.queryTitle": "Recherche", "presentationPanel.header.titleAriaLabel": "Cliquez pour modifier le titre : {title}", - "presentationPanel.hoverTrigger.description": "Une nouvelle action sera ajoutée au menu flottant du panneau", - "presentationPanel.hoverTrigger.title": "Menu contextuel du panneau", "presentationPanel.notificationTrigger.description": "Les actions de notification apparaissent dans l'angle supérieur droit des panneaux.", "presentationPanel.notificationTrigger.title": "Notifications du panneau", "presentationPanel.placeholderTitle": "[Aucun titre]", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index 5b9c7c6337a0b..d1d6b0f49be4f 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -2761,8 +2761,6 @@ "embeddableApi.multiValueClickTrigger.title": "マルチクリック", "embeddableApi.panelBadgeTrigger.description": "パネルに埋め込み可能なファイルが読み込まれるときに、アクションがタイトルバーに表示されます。", "embeddableApi.panelBadgeTrigger.title": "パネルバッジ", - "embeddableApi.panelHoverTrigger.description": "新しいアクションがパネルのマウスオーバーメニューに追加されます", - "embeddableApi.panelHoverTrigger.title": "パネルマウスオーバー", "embeddableApi.panelNotificationTrigger.description": "パネルの右上にアクションが表示されます。", "embeddableApi.panelNotificationTrigger.title": "パネル通知", "embeddableApi.reactEmbeddable.factoryAlreadyExistsError": "タイプ\"{key}\"の埋め込み可能ファクトリはすでに登録されています。", @@ -6215,8 +6213,6 @@ "presentationPanel.filters.filtersTitle": "フィルター", "presentationPanel.filters.queryTitle": "クエリー", "presentationPanel.header.titleAriaLabel": "クリックしてタイトルを編集:{title}", - "presentationPanel.hoverTrigger.description": "新しいアクションがパネルのマウスオーバーメニューに追加されます", - "presentationPanel.hoverTrigger.title": "パネルマウスオーバー", "presentationPanel.notificationTrigger.description": "パネルの右上に通知アクションが表示されます。", "presentationPanel.notificationTrigger.title": "パネル通知", "presentationPanel.placeholderTitle": "[タイトルなし]", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index d0a69e4a7dfae..db9a46c59db9d 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -2755,8 +2755,6 @@ "embeddableApi.multiValueClickTrigger.title": "多次单击", "embeddableApi.panelBadgeTrigger.description": "可嵌入对象在面板加载后,操作便显示在标题栏中。", "embeddableApi.panelBadgeTrigger.title": "面板徽章", - "embeddableApi.panelHoverTrigger.description": "会将一个新操作添加到该面板的悬停菜单", - "embeddableApi.panelHoverTrigger.title": "面板悬停", "embeddableApi.panelNotificationTrigger.description": "操作显示在面板右上角。", "embeddableApi.panelNotificationTrigger.title": "面板通知", "embeddableApi.reactEmbeddable.factoryAlreadyExistsError": "已注册类型为 {key} 的可嵌入工厂。", @@ -6172,8 +6170,6 @@ "presentationPanel.filters.filtersTitle": "筛选", "presentationPanel.filters.queryTitle": "查询", "presentationPanel.header.titleAriaLabel": "单击可编辑标题:{title}", - "presentationPanel.hoverTrigger.description": "会将一个新操作添加到该面板的悬停菜单", - "presentationPanel.hoverTrigger.title": "面板悬停", "presentationPanel.notificationTrigger.description": "通知操作显示在面板右上角。", "presentationPanel.notificationTrigger.title": "面板通知", "presentationPanel.placeholderTitle": "[无标题]", From 583b8522510102c15b175f4aff772484b689869f Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Mon, 20 Jan 2025 14:01:13 -0700 Subject: [PATCH 013/148] [dashboard] fix Chrome no longer hidden for reports (#206988) Fixes https://github.com/elastic/kibana/issues/205794 https://github.com/elastic/kibana/pull/196275 removed `setIsVisible` because https://github.com/elastic/kibana/pull/196275/files#r1811034594. I could not reproduce the top nav disappearing and reappearing issue. --------- Co-authored-by: Elastic Machine --- .../dashboard_top_nav/internal_dashboard_top_nav.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx index 71f28d94fe2d3..7cb39231e814a 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx @@ -118,6 +118,13 @@ export function InternalDashboardTopNav({ dashboardTitleRef.current?.focus(); }, [title, viewMode]); + /* + * Manage chrome visibility when dashboard is in print mode. + */ + useEffect(() => { + if (!embedSettings && viewMode === 'print') coreServices.chrome.setIsVisible(false); + }, [embedSettings, viewMode]); + /** * populate recently accessed, and set is chrome visible. */ From 35fe7221a24d33fed8124ab721970d5ce4d38dd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Mon, 20 Jan 2025 23:32:22 +0100 Subject: [PATCH 014/148] [Obs AI Assistant] Minor improvements to KB API tests (#207198) Minor improvements to the API tests --- .../knowledge_base_migration.spec.ts | 5 ++-- .../knowledge_base_user_instructions.spec.ts | 30 +++++++++---------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts index 81fd896124692..550aa1b8470e2 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts @@ -67,8 +67,9 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon // Failing: See https://github.com/elastic/kibana/issues/206474 describe.skip('When there are knowledge base entries (from 8.15 or earlier) that does not contain semantic_text embeddings', function () { - // security_exception: action [indices:admin/settings/update] is unauthorized for user [testing-internal] with effective roles [superuser] on restricted indices [.kibana_security_solution_1,.kibana_task_manager_1,.kibana_alerting_cases_1,.kibana_usage_counters_1,.kibana_1,.kibana_ingest_1,.kibana_analytics_1], this action is granted by the index privileges [manage,all] - this.tags(['failsOnMKI']); + // Intentionally skipped on MKI because es_archiver.load is not allowed there, and because the migration scenario being tested is not relevant to MKI. + // https://github.com/elastic/obs-ai-assistant-team/issues/195 + this.tags(['skipMKI']); before(async () => { await clearKnowledgeBase(es); diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts index d5fdbd722620a..fa418a4ae4a21 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts @@ -69,18 +69,17 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon isPublic: false, }, { - username: 'secondary_editor' as const, + username: 'admin' as const, isPublic: true, }, { - username: 'secondary_editor' as const, + username: 'admin' as const, isPublic: false, }, ].map(async ({ username, isPublic }) => { const visibility = isPublic ? 'Public' : 'Private'; - const user = username === 'editor' ? 'editor' : 'admin'; - const { status } = await observabilityAIAssistantAPIClient[user]({ + const { status } = await observabilityAIAssistantAPIClient[username]({ endpoint: 'PUT /internal/observability_ai_assistant/kb/user_instructions', params: { body: { @@ -95,6 +94,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon await Promise.all(promises); }); + it('"editor" can retrieve their own private instructions and the public instruction', async () => { await retry.try(async () => { const res = await observabilityAIAssistantAPIClient.editor({ @@ -119,9 +119,9 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon text: 'Public user instruction from "editor"', }, { - id: 'public-doc-from-secondary_editor', + id: 'public-doc-from-admin', public: true, - text: 'Public user instruction from "secondary_editor"', + text: 'Public user instruction from "admin"', }, ]) ); @@ -147,14 +147,14 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon text: 'Public user instruction from "editor"', }, { - id: 'public-doc-from-secondary_editor', + id: 'public-doc-from-admin', public: true, - text: 'Public user instruction from "secondary_editor"', + text: 'Public user instruction from "admin"', }, { - id: 'private-doc-from-secondary_editor', + id: 'private-doc-from-admin', public: false, - text: 'Private user instruction from "secondary_editor"', + text: 'Private user instruction from "admin"', }, ]) ); @@ -213,9 +213,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon const userInstructionText = 'Be polite and use language that is easy to understand. Never disagree with the user.'; - async function getConversationForUser(username: string) { - const user = username === 'editor' ? 'editor' : 'admin'; - + async function getConversationForUser(username: 'editor' | 'admin') { // the user instruction is always created by "editor" user const { status } = await observabilityAIAssistantAPIClient.editor({ endpoint: 'PUT /internal/observability_ai_assistant/kb/user_instructions', @@ -251,7 +249,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon }, ]; - const createResponse = await observabilityAIAssistantAPIClient[user]({ + const createResponse = await observabilityAIAssistantAPIClient[username]({ endpoint: 'POST /internal/observability_ai_assistant/chat/complete', params: { body: { @@ -269,7 +267,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon const conversationCreatedEvent = getConversationCreatedEvent(createResponse.body); const conversationId = conversationCreatedEvent.conversation.id; - const res = await observabilityAIAssistantAPIClient[user]({ + const res = await observabilityAIAssistantAPIClient[username]({ endpoint: 'GET /internal/observability_ai_assistant/conversation/{conversationId}', params: { path: { @@ -323,7 +321,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon }); it('does not add the instruction conversation for other users', async () => { - const conversation = await getConversationForUser('secondary_editor'); + const conversation = await getConversationForUser('admin'); const systemMessage = conversation.messages.find( (message) => message.message.role === MessageRole.System )!; From 76a1a4c620b3129805b260a853595149107e248f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Tue, 21 Jan 2025 00:57:10 +0100 Subject: [PATCH 015/148] [Obs AI Assistant] fix access bug with user instructions (#207069) Closes https://github.com/elastic/kibana/issues/206826 A bug in the access check meant that when updating the current user's public user instruction, we'd instead retrieve the public user instruction from any user - and then overwrite it. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../service/knowledge_base_service/index.ts | 12 +++- .../server/service/util/get_access_query.ts | 6 +- .../knowledge_base_user_instructions.spec.ts | 65 +++++++++++++++++-- 3 files changed, 72 insertions(+), 11 deletions(-) diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts index cba83f715ff61..a73be984920c4 100644 --- a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts @@ -17,7 +17,7 @@ import { KnowledgeBaseEntryRole, KnowledgeBaseType, } from '../../../common/types'; -import { getAccessQuery } from '../util/get_access_query'; +import { getAccessQuery, getUserAccessFilters } from '../util/get_access_query'; import { getCategoryQuery } from '../util/get_category_query'; import { createInferenceEndpoint, @@ -342,7 +342,13 @@ export class KnowledgeBaseService { filter: [ { term: { type: KnowledgeBaseType.UserInstruction } }, { term: { public: isPublic } }, - ...getAccessQuery({ user, namespace }), + { term: { namespace } }, + { + bool: { + should: [...getUserAccessFilters(user)], + minimum_should_match: 1, + }, + }, ], }, }, @@ -393,7 +399,7 @@ export class KnowledgeBaseService { }: { entry: Omit; user?: { name: string; id?: string }; - namespace?: string; + namespace: string; }): Promise => { if (!this.dependencies.config.enableKnowledgeBase) { return; diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts index b517273630f56..1788e23bed95c 100644 --- a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts @@ -25,9 +25,7 @@ export function getAccessQuery({ bool: { should: [ { - term: { - namespace, - }, + term: { namespace }, }, { bool: { @@ -47,7 +45,7 @@ export function getAccessQuery({ ]; } -function getUserAccessFilters(user?: { name: string; id?: string }) { +export function getUserAccessFilters(user?: { name: string; id?: string }) { if (!user) { return []; } diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts index fa418a4ae4a21..bfa1454a90b07 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts @@ -10,6 +10,7 @@ import { sortBy } from 'lodash'; import { Message, MessageRole } from '@kbn/observability-ai-assistant-plugin/common'; import { CONTEXT_FUNCTION_NAME } from '@kbn/observability-ai-assistant-plugin/server/functions/context'; import { Instruction } from '@kbn/observability-ai-assistant-plugin/common/types'; +import pRetry from 'p-retry'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; import { TINY_ELSER, @@ -25,6 +26,8 @@ import { createLlmProxy, } from '../../../../../../observability_ai_assistant_api_integration/common/create_llm_proxy'; +const sortById = (data: Array) => sortBy(data, 'id'); + export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderContext) { const observabilityAIAssistantAPIClient = getService('observabilityAIAssistantApi'); const es = getService('es'); @@ -104,8 +107,6 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon const instructions = res.body.userInstructions; expect(instructions).to.have.length(3); - const sortById = (data: Array) => sortBy(data, 'id'); - expect(sortById(instructions)).to.eql( sortById([ { @@ -137,8 +138,6 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon const instructions = res.body.userInstructions; expect(instructions).to.have.length(3); - const sortById = (data: Array) => sortBy(data, 'id'); - expect(sortById(instructions)).to.eql( sortById([ { @@ -161,6 +160,64 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon }); }); }); + + describe('when a public instruction already exists', () => { + const adminInstruction = { + id: `public-doc-from-admin-not-to-be-overwritten`, + text: `public user instruction from "admin" not to be overwritten by other users`, + public: true, + }; + + const editorInstruction = { + id: `public-doc-from-editor-must-not-overwrite-admin-instruction`, + text: `public user instruction from "admin" must not overwrite admin instruction`, + public: true, + }; + + before(async () => { + await clearKnowledgeBase(es); + + const { status: statusAdmin } = await observabilityAIAssistantAPIClient.admin({ + endpoint: 'PUT /internal/observability_ai_assistant/kb/user_instructions', + params: { body: adminInstruction }, + }); + expect(statusAdmin).to.be(200); + + // wait for the public instruction to be indexed before proceeding + await pRetry(async () => { + const res = await observabilityAIAssistantAPIClient.editor({ + endpoint: 'GET /internal/observability_ai_assistant/kb/user_instructions', + }); + + const hasPublicAdminInstruction = res.body.userInstructions.some( + (instruction) => instruction.id === 'public-doc-from-admin-not-to-be-overwritten' + ); + + if (!hasPublicAdminInstruction) { + throw new Error('Public instruction not found'); + } + }); + + const { status: statusEditor } = await observabilityAIAssistantAPIClient.editor({ + endpoint: 'PUT /internal/observability_ai_assistant/kb/user_instructions', + params: { + body: editorInstruction, + }, + }); + + expect(statusEditor).to.be(200); + }); + + it("another user's public instruction will not overwrite it", async () => { + const res = await observabilityAIAssistantAPIClient.editor({ + endpoint: 'GET /internal/observability_ai_assistant/kb/user_instructions', + }); + + const instructions = res.body.userInstructions; + expect(sortById(instructions)).to.eql(sortById([adminInstruction, editorInstruction])); + }); + }); + describe('when updating an existing user instructions', () => { before(async () => { await clearKnowledgeBase(es); From b50669bdfe862a7778f31abc78e93d0eeeb9c4be Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 21 Jan 2025 03:29:41 +0000 Subject: [PATCH 016/148] chore(NA): disable screenshots on package testing (#178162) I don't think we need this setting permanently on and it can be enabled as needed for debugging purposes. --- .buildkite/scripts/steps/package_testing/test.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.buildkite/scripts/steps/package_testing/test.sh b/.buildkite/scripts/steps/package_testing/test.sh index c16d5cf98b5f5..0bbfc21b7bb9e 100755 --- a/.buildkite/scripts/steps/package_testing/test.sh +++ b/.buildkite/scripts/steps/package_testing/test.sh @@ -5,8 +5,9 @@ set -euo pipefail source "$(dirname "$0")/../../common/util.sh" .buildkite/scripts/bootstrap.sh -# temporary adding this to get screenshots -is_test_execution_step +# temporary enable this to get screenshots on package testing failures +# +#is_test_execution_step echo "--- Package Testing for $TEST_PACKAGE" From d6522194b87e2f078786744d8a1b93663d7ddb63 Mon Sep 17 00:00:00 2001 From: Sonia Sanz Vivas Date: Tue, 21 Jan 2025 08:02:52 +0100 Subject: [PATCH 017/148] [Snapshot and Restore] Logsdb snapshot functional tests (#206318) Part of https://github.com/elastic/kibana/issues/203716 ## Summary This PR creates the tests for Logsdb in the Snapshot and Restore plugin * Verify that users can create snapshots from an LogsDB index - Explanation: It should be possible to create a snapshot of a Index with LogsDb mode from a regular repository. This test creates a repository and a index with LogsDb mode, creates a policy, runs the policy and verifies that the state of the snapshot is `Complete` and it contains the LogsDb index. * Verify that users can restore a LogsDB snapshot. - Explanation: It should be possible to restore a snapshot of a Index with LogsDb mode from a regular repository. This test takes the snapshot created in the previous test and restore it. It verifies that it has been restored and the status is `Complete`. * Verify that users can NOT create a source-only snapshot from a LogsDB index [Snapshot result would be "Partial"]. - Explanation: ES doesn't allow to create a snapshot in a source-only repository for index with a synthetic source. Under the hood LogsDb uses synthetic source (there is no `_source`). So, is expected that, when creating a snapshot that includes a LogsDb index the result would be partial since it won't be able to create the snapshot of the LogsDb index. To test that, the test creates a source-only repository and a index with LogsDb mode, creates a policy, runs the policy and verifies that the state of the snapshot is `Partial`. * Verify that users can NOT restore a source-only snapshot from a LogsDB index. - Explanation: Since the running the policy in the previous test hasn't create the snapshot for the LogsDb index, the snapshot for that index couldn't be restored. To verify that, the test tries to restore the snapshot from the previous step and wait to have the following error `index [sourceonly-logsdb-index] wasn't fully snapshotted - cannot restore` --------- Co-authored-by: Matthew Kime --- .../collapsible_indices_list.tsx | 5 +- .../indices_and_data_streams_field.tsx | 1 + .../steps/step_logistics/step_logistics.tsx | 5 + .../steps/step_review.tsx | 2 +- .../steps/step_settings.tsx | 2 +- .../policy_details/policy_details.tsx | 1 + .../restore_table/restore_table.tsx | 2 + .../components/snapshot_table.tsx | 1 + .../snapshot_details/snapshot_details.tsx | 1 + .../restore_snapshot/restore_snapshot.tsx | 1 + .../apps/snapshot_restore/snapshot_restore.ts | 286 ++++++++++++++++-- x-pack/test/functional/config.base.js | 7 + .../page_objects/snapshot_restore_page.ts | 143 ++++++++- 13 files changed, 420 insertions(+), 37 deletions(-) diff --git a/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx index 7362a6634565a..8cc29eab33dad 100644 --- a/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx +++ b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx @@ -56,7 +56,10 @@ export const CollapsibleIndicesList: React.FunctionComponent = ({ indices values={{ count: hiddenItemsCount }} /> )}{' '} - + ) : null} diff --git a/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx index 6ad3e1704720f..4ebf98bf00efb 100644 --- a/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx +++ b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx @@ -211,6 +211,7 @@ export const IndicesAndDataStreamsField: FunctionComponent = ({ setSelectIndicesMode('custom'); onUpdate({ indices: indexPatterns.join(',') }); }} + data-test-subj="useIndexPatternsButton" > = }); } }} + data-test-subj="allDsAndIndicesToggle" /> {isAllIndicesAndDataStreams ? null : ( @@ -281,6 +282,7 @@ export const RestoreSnapshotStepLogistics: React.FunctionComponent = setSelectIndicesMode('custom'); updateRestoreSettings({ indices: restoreIndexPatterns.join(',') }); }} + data-test-subj="restoreIndexPatternsButton" > = }); } }} + data-test-subj="restoreRenameToggle" /> {!isRenamingIndices ? null : ( @@ -510,6 +513,7 @@ export const RestoreSnapshotStepLogistics: React.FunctionComponent = renamePattern: e.target.value, }); }} + data-test-subj="capturePattern" /> @@ -536,6 +540,7 @@ export const RestoreSnapshotStepLogistics: React.FunctionComponent = renameReplacement: e.target.value, }); }} + data-test-subj="replacementPattern" /> diff --git a/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx index 09feaf61ca9e7..b3e3879e332b5 100644 --- a/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx +++ b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx @@ -301,7 +301,7 @@ export const RestoreSnapshotStepReview: React.FunctionComponent = ({ return ( - +

= ( {/* Step title and doc link */} - +

= ({ ); }, disabled: Boolean(policyDetails.policy.inProgress), + 'data-test-subj': 'policyActionMenuRunPolicy', }, { name: i18n.translate( diff --git a/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx index ff5f904770aa1..ee7d6f9c4be2a 100644 --- a/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx +++ b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx @@ -107,6 +107,7 @@ export const RestoreTable: React.FunctionComponent = React.memo(({ restor }), truncateText: true, sortable: true, + 'data-test-subj': 'restoreTableIndex', }, { field: 'isComplete', @@ -115,6 +116,7 @@ export const RestoreTable: React.FunctionComponent = React.memo(({ restor }), truncateText: true, sortable: true, + 'data-test-subj': 'restoreTableIsComplete', render: (isComplete: SnapshotRestore['isComplete']) => isComplete ? ( diff --git a/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx index e4907709f7e1e..082c0775b6dfc 100644 --- a/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx +++ b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx @@ -99,6 +99,7 @@ export const SnapshotTable: React.FunctionComponent = (props: Props) => { name: i18n.translate('xpack.snapshotRestore.snapshotList.table.stateColumnTitle', { defaultMessage: 'State', }), + 'data-test-subj': 'snapshotState', truncateText: false, sortable: false, render: (state: string) => , diff --git a/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx index b3c510e0fa0c7..db4efbbf80965 100644 --- a/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx +++ b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx @@ -233,6 +233,7 @@ export const SnapshotDetails: React.FunctionComponent = ({ snapshotDetails.state !== SNAPSHOT_STATE.SUCCESS && snapshotDetails.state !== SNAPSHOT_STATE.PARTIAL } + data-test-subj="restoreSnapshotButton" > } error={saveError} + data-test-subj="restoreSnapshotError" /> ) : null; }; diff --git a/x-pack/test/functional/apps/snapshot_restore/snapshot_restore.ts b/x-pack/test/functional/apps/snapshot_restore/snapshot_restore.ts index 875a7aea44ba0..593fd8f910e4b 100644 --- a/x-pack/test/functional/apps/snapshot_restore/snapshot_restore.ts +++ b/x-pack/test/functional/apps/snapshot_restore/snapshot_restore.ts @@ -16,13 +16,14 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const security = getService('security'); describe('Snapshot restore', function () { + const REPOSITORY = 'my-repository'; before(async () => { await security.testUser.setRoles(['snapshot_restore_user'], { skipBrowserRefresh: true }); await pageObjects.common.navigateToApp('snapshotRestore'); // Create a repository await es.snapshot.createRepository({ - name: 'my-repository', + name: REPOSITORY, verify: true, repository: { type: 'fs', @@ -32,50 +33,275 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }, }, }); + }); + + describe('Snapshot', () => { + before(async () => { + // Create a snapshot + await es.snapshot.create({ + snapshot: 'my-snapshot', + repository: REPOSITORY, + }); + + // Refresh page so that the snapshot shows up in the snapshots table + await browser.refresh(); + }); + + after(async () => { + await es.snapshot.delete({ + snapshot: 'my-snapshot', + repository: REPOSITORY, + }); + }); + + it('Renders the Snapshot restore form', async () => { + await pageObjects.snapshotRestore.refreshWhileSnapshotIsInProgress(); + await pageObjects.header.waitUntilLoadingHasFinished(); + + const snapshots = await pageObjects.snapshotRestore.getSnapshotList(); + + const snapshotRestoreButton = await snapshots[0].snapshotRestore; + // Open the Snapshot restore form + await snapshotRestoreButton.click(); + + // Go to second step (Index settings) + await testSubjects.click('nextButton'); + + // Verify that the Index Settings editor is rendered (uses CodeEditor) + await testSubjects.click('modifyIndexSettingsSwitch'); + expect(await testSubjects.exists('indexSettingsEditor')).to.be(true); + + // Close Index Settings editor + await testSubjects.click('modifyIndexSettingsSwitch'); + + // Go to final step (Review) + await testSubjects.click('nextButton'); + + // Verify that Restore button exists + expect(await testSubjects.exists('restoreButton')).to.be(true); + }); + }); + + describe('Allows to create and restore a snapshot from a Logsdb index', () => { + const logsDbIndex = 'logsdb-index'; + const policyId = 'testPolicy'; + const snapshotPrefx = 'logsdb-snap'; + + before(async () => { + await es.indices.create({ + index: logsDbIndex, + settings: { + mode: 'logsdb', + }, + }); + await pageObjects.common.navigateToApp('snapshotRestore'); + // Create a policy + await pageObjects.snapshotRestore.navToPolicies(); + await pageObjects.snapshotRestore.fillCreateNewPolicyPageOne( + policyId, + `<${snapshotPrefx}-{now/d}>` + ); + await pageObjects.snapshotRestore.fillCreateNewPolicyPageTwo(); + await pageObjects.snapshotRestore.fillCreateNewPolicyPageThree(); + await pageObjects.snapshotRestore.submitNewPolicy(); + await pageObjects.snapshotRestore.closeFlyout(); + }); + + after(async () => { + // Delete the logdb index + await es.indices.delete({ + index: logsDbIndex, + }); + // Delete policy + await es.slm.deleteLifecycle({ + policy_id: policyId, + }); + await es.snapshot.delete({ + snapshot: `${snapshotPrefx}-*`, + repository: REPOSITORY, + }); + await es.indices.delete({ + index: `restored_${logsDbIndex}`, + }); + }); + + it('create snapshot', async () => { + // Verify there are no snapshots + await pageObjects.snapshotRestore.navToSnapshots(); + expect(await testSubjects.exists('emptyPrompt')).to.be(true); - // Create a snapshot - await es.snapshot.create({ - snapshot: 'my-snapshot', - repository: 'my-repository', + // Run policy snapshot + await pageObjects.snapshotRestore.navToPolicies(); + + await pageObjects.snapshotRestore.clickPolicyNameLink(policyId); + await pageObjects.snapshotRestore.clickPolicyActionButton(); + await pageObjects.snapshotRestore.clickRunPolicy(); + await pageObjects.snapshotRestore.clickConfirmationModal(); + await pageObjects.snapshotRestore.closeFlyout(); + + // Open snapshot info flyout + await pageObjects.snapshotRestore.navToSnapshots(false); + await pageObjects.header.waitUntilLoadingHasFinished(); + expect(await testSubjects.exists('snapshotList')).to.be(true); + + await pageObjects.snapshotRestore.refreshWhileSnapshotIsInProgress(); + await pageObjects.header.waitUntilLoadingHasFinished(); + + // Verify that one snapshot has been created + const snapshots = await pageObjects.snapshotRestore.getSnapshotList(); + expect(snapshots.length).to.be(1); + + // Verify that snaphot has been created + const snapshotLink = snapshots[0].snapshotLink; + await snapshotLink.click(); + + // Verify snapshot exists, is complete and contains the logsdb index + expect(await testSubjects.exists('detailTitle')).to.be(true); + expect(await testSubjects.getVisibleText('detailTitle')).to.contain(snapshotPrefx); + expect(await testSubjects.exists('state')).to.be(true); + expect(await testSubjects.getVisibleText('state')).to.contain('Complete'); + await pageObjects.snapshotRestore.clickShowCollapsedIndicesIfPresent(); + expect(await testSubjects.getVisibleText('indices')).to.contain(logsDbIndex); + await pageObjects.snapshotRestore.closeSnaphsotFlyout(); }); - // Wait for snapshot to be ready - await pageObjects.common.sleep(2000); + it('restore snapshot', async () => { + // Verify there are not restore snapshots + await pageObjects.snapshotRestore.navToRestoreStatus(); + await pageObjects.header.waitUntilLoadingHasFinished(); + expect(await testSubjects.exists('noRestoredSnapshotsHeader')).to.be(true); - // Refresh page so that the snapshot shows up in the snapshots table - await browser.refresh(); + // restore snapshot + await pageObjects.snapshotRestore.navToSnapshots(false); + await pageObjects.header.waitUntilLoadingHasFinished(); + + const snapshots = await pageObjects.snapshotRestore.getSnapshotList(); + const snapshotLink = snapshots[0].snapshotLink; + await snapshotLink.click(); + await pageObjects.snapshotRestore.restoreSnapshot(logsDbIndex, true); + + // Verify snapshot has been restored and is complete + await pageObjects.snapshotRestore.navToRestoreStatus(false); + const status = await pageObjects.snapshotRestore.getRestoreStatusList(); + const statusIndex = status[0].index; + const statusIsComplete = status[0].isComplete; + expect(await statusIndex.getVisibleText()).to.be(`restored_${logsDbIndex}`); + expect(await statusIsComplete.getVisibleText()).to.contain('Complete'); + }); }); - it('Renders the Snapshot restore form', async () => { - const snapshots = await pageObjects.snapshotRestore.getSnapshotList(); - const snapshotRestoreButton = await snapshots[0].snapshotRestore; - // Open the Snapshot restore form - await snapshotRestoreButton.click(); + describe('Does not allows to create and restore a source-only snapshot from a Logsdb index', () => { + const sourceOnlyLogsDbIndex = 'sourceonly-logsdb-index'; + const sourceOnlyRepository = 'sourceOnlyRepository'; + const policyId = 'source-only-testPolicy'; + const snapshotPrefx = 'source-only-logsdb-snap'; + before(async () => { + await es.indices.create({ + index: sourceOnlyLogsDbIndex, + settings: { + mode: 'logsdb', + }, + }); + await pageObjects.common.navigateToApp('snapshotRestore'); + // Create a policy + await pageObjects.snapshotRestore.navToPolicies(); + await pageObjects.snapshotRestore.navToRepositories(); + await pageObjects.snapshotRestore.createSourceOnlyRepositoryStepOne(sourceOnlyRepository); + await pageObjects.snapshotRestore.createSourceOnlyRepositoryStepTwo('/tmp/es-backups/'); + await pageObjects.snapshotRestore.closeRepositoriesFlyout(); + + // Create a policy + await pageObjects.snapshotRestore.navToPolicies(); + await pageObjects.snapshotRestore.fillCreateNewPolicyPageOne( + policyId, + `<${snapshotPrefx}-{now/d}>`, + sourceOnlyRepository + ); + await pageObjects.snapshotRestore.fillCreateNewPolicyPageTwo(sourceOnlyLogsDbIndex); + await pageObjects.snapshotRestore.fillCreateNewPolicyPageThree(); + await pageObjects.snapshotRestore.submitNewPolicy(); + await pageObjects.snapshotRestore.closeFlyout(); + }); + + after(async () => { + // Delete the logdb index + await es.indices.delete({ + index: sourceOnlyLogsDbIndex, + }); + // Delete policy + await es.slm.deleteLifecycle({ + policy_id: policyId, + }); + await es.snapshot.delete({ + snapshot: `${snapshotPrefx}-*`, + repository: sourceOnlyRepository, + }); + await es.snapshot.deleteRepository({ + name: sourceOnlyRepository, + }); + }); + + it('creating a snapshot results in a partial state', async () => { + // Verify there are no snapshots + await pageObjects.snapshotRestore.navToSnapshots(); + expect(await testSubjects.exists('emptyPrompt')).to.be(true); + + // Run policy snapshot + await pageObjects.snapshotRestore.navToPolicies(); + + await pageObjects.snapshotRestore.clickPolicyNameLink(policyId); + await pageObjects.snapshotRestore.clickPolicyActionButton(); + await pageObjects.snapshotRestore.clickRunPolicy(); + await pageObjects.snapshotRestore.clickConfirmationModal(); + await pageObjects.snapshotRestore.closeFlyout(); - // Go to second step (Index settings) - await testSubjects.click('nextButton'); + // Open snapshot info flyout + await pageObjects.snapshotRestore.navToSnapshots(false); + await pageObjects.header.waitUntilLoadingHasFinished(); + expect(await testSubjects.exists('snapshotList')).to.be(true); - // Verify that the Index Settings editor is rendered (uses CodeEditor) - await testSubjects.click('modifyIndexSettingsSwitch'); - expect(await testSubjects.exists('indexSettingsEditor')).to.be(true); + await pageObjects.snapshotRestore.refreshWhileSnapshotIsInProgress(); + await pageObjects.header.waitUntilLoadingHasFinished(); - // Close Index Settings editor - await testSubjects.click('modifyIndexSettingsSwitch'); + // Verify that one snapshot has been created + const snapshots = await pageObjects.snapshotRestore.getSnapshotList(); + expect(snapshots.length).to.be(1); - // Go to final step (Review) - await testSubjects.click('nextButton'); + // Verify that snaphot has been created + const snapshotLink = snapshots[0].snapshotLink; + await snapshotLink.click(); - // Verify that Restore button exists - expect(await testSubjects.exists('restoreButton')).to.be(true); + // Verify snapshot exists, is complete and contains the logsdb index + expect(await testSubjects.exists('detailTitle')).to.be(true); + expect(await testSubjects.getVisibleText('detailTitle')).to.contain(snapshotPrefx); + expect(await testSubjects.exists('state')).to.be(true); + expect(await testSubjects.getVisibleText('state')).to.contain('Partial'); + await pageObjects.snapshotRestore.clickShowCollapsedIndicesIfPresent(); + expect(await testSubjects.getVisibleText('indices')).to.contain(sourceOnlyLogsDbIndex); + await pageObjects.snapshotRestore.closeSnaphsotFlyout(); + }); + + it('does not allow to restore snapshot', async () => { + // restore snapshot + await pageObjects.snapshotRestore.navToSnapshots(false); + await pageObjects.header.waitUntilLoadingHasFinished(); + + const snapshots = await pageObjects.snapshotRestore.getSnapshotList(); + const snapshotLink = snapshots[0].snapshotLink; + await snapshotLink.click(); + await pageObjects.snapshotRestore.restoreSnapshot(sourceOnlyLogsDbIndex, true); + + // Verify it returns an error and doesn't allow to restore snapshot + expect(await testSubjects.exists('restoreSnapshotError')).to.be(true); + expect(await testSubjects.getVisibleText('restoreSnapshotError')).to.contain( + `index [${sourceOnlyLogsDbIndex}] wasn't fully snapshotted - cannot restore` + ); + }); }); after(async () => { - await es.snapshot.delete({ - snapshot: 'my-snapshot', - repository: 'my-repository', - }); await es.snapshot.deleteRepository({ - name: 'my-repository', + name: REPOSITORY, }); await security.testUser.restoreDefaults(); }); diff --git a/x-pack/test/functional/config.base.js b/x-pack/test/functional/config.base.js index 3904458ff4772..5785ff0f0aea0 100644 --- a/x-pack/test/functional/config.base.js +++ b/x-pack/test/functional/config.base.js @@ -623,6 +623,13 @@ export default async function ({ readConfigFile }) { 'manage_slm', 'cluster:admin/snapshot', 'cluster:admin/repository', + 'manage_index_templates', + ], + indices: [ + { + names: ['*'], + privileges: ['all'], + }, ], }, kibana: [ diff --git a/x-pack/test/functional/page_objects/snapshot_restore_page.ts b/x-pack/test/functional/page_objects/snapshot_restore_page.ts index 8c41f4a15c7f2..7a27081113212 100644 --- a/x-pack/test/functional/page_objects/snapshot_restore_page.ts +++ b/x-pack/test/functional/page_objects/snapshot_restore_page.ts @@ -10,6 +10,7 @@ import { FtrProviderContext } from '../ftr_provider_context'; export function SnapshotRestorePageProvider({ getService }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const retry = getService('retry'); + const find = getService('find'); return { async appTitleText() { @@ -44,28 +45,43 @@ export function SnapshotRestorePageProvider({ getService }: FtrProviderContext) 'Wait for register repository button to be on page', 10000, async () => { - return await testSubjects.isDisplayed('noRestoredSnapshotsHeader'); + return await testSubjects.isDisplayed( + emptyList ? 'noRestoredSnapshotsHeader' : 'restoreList' + ); } ); }, async navToSnapshots(emptyList: boolean = true) { await testSubjects.click('snapshots_tab'); await retry.waitForWithTimeout('Wait for snapshot list to be on page', 10000, async () => { - return await testSubjects.isDisplayed(emptyList ? 'snapshotListEmpty' : 'snapshotList'); + return await testSubjects.isDisplayed(emptyList ? 'emptyPrompt' : 'snapshotList'); }); }, - async fillCreateNewPolicyPageOne(policyName: string, snapshotName: string) { + async fillCreateNewPolicyPageOne( + policyName: string, + snapshotName: string, + repositoryName?: string + ) { await testSubjects.click('createPolicyButton'); await testSubjects.setValue('nameInput', policyName); await testSubjects.setValue('snapshotNameInput', snapshotName); + if (repositoryName) { + await testSubjects.selectValue('repositorySelect', repositoryName); + } await testSubjects.click('nextButton'); await retry.waitFor('all indices to be visible', async () => { return await testSubjects.isDisplayed('allIndicesToggle'); }); }, - async fillCreateNewPolicyPageTwo() { + async fillCreateNewPolicyPageTwo(singleIndexToSelect?: string) { + if (singleIndexToSelect) { + await testSubjects.click('allIndicesToggle'); + await testSubjects.click('useIndexPatternsButton'); + await testSubjects.setValue('comboBoxSearchInput', singleIndexToSelect); + await testSubjects.pressEnter('comboBoxSearchInput'); + } await testSubjects.click('nextButton'); await retry.waitFor('expire after value input to be visible', async () => { return await testSubjects.isDisplayed('expireAfterValueInput'); @@ -92,6 +108,18 @@ export function SnapshotRestorePageProvider({ getService }: FtrProviderContext) return await testSubjects.isDisplayed('policyLink'); }); }, + async closeSnaphsotFlyout() { + await testSubjects.click('euiFlyoutCloseButton'); + await retry.waitFor('snapshot table to be visible', async () => { + return await testSubjects.isDisplayed('snapshotLink'); + }); + }, + async closeRepositoriesFlyout() { + await testSubjects.click('srRepositoryDetailsFlyoutCloseButton'); + await retry.waitFor('repositories table to be visible', async () => { + return await testSubjects.isDisplayed('repositoryLink'); + }); + }, async getSnapshotList() { const table = await testSubjects.find('snapshotTable'); const rows = await table.findAllByTestSubject('row'); @@ -120,6 +148,18 @@ export function SnapshotRestorePageProvider({ getService }: FtrProviderContext) }) ); }, + async getRestoreStatusList() { + const table = await testSubjects.find('restoreList'); + const rows = await table.findAllByTestSubject('row'); + return await Promise.all( + rows.map(async (row) => { + return { + index: await row.findByTestSubject('restoreTableIndex'), + isComplete: await row.findByTestSubject('restoreTableIsComplete'), + }; + }) + ); + }, async viewRepositoryDetails(name: string) { const repos = await this.getRepoList(); if (repos.length === 1) { @@ -137,5 +177,100 @@ export function SnapshotRestorePageProvider({ getService }: FtrProviderContext) }); return await testSubjects.getVisibleText('cleanupCodeBlock'); }, + + async clickPolicyNameLink(name: string): Promise { + await find.clickByLinkText(name); + }, + + async clickRestoredStatusNameLink(name: string): Promise { + await find.clickByLinkText(name); + }, + + async clickPolicyActionButton() { + await testSubjects.click('policyActionMenuButton'); + await retry.waitFor('run button to be visible', async () => { + return await testSubjects.isDisplayed('policyActionMenuRunPolicy'); + }); + }, + + async clickRunPolicy() { + await testSubjects.click('policyActionMenuRunPolicy'); + await retry.waitFor('confirm modal to be visible', async () => { + return await testSubjects.isDisplayed('confirmModalConfirmButton'); + }); + }, + + async clickConfirmationModal() { + await testSubjects.click('confirmModalConfirmButton'); + }, + + async clickShowCollapsedIndicesIfPresent() { + if (await testSubjects.exists('collapsibleIndicesArrow')) { + await testSubjects.click('collapsibleIndicesArrow'); + } + }, + + async restoreSnapshot(indexName: string, rename: boolean = false) { + await testSubjects.click('restoreSnapshotButton'); + await retry.waitFor('restore form to be visible', async () => { + return await testSubjects.isDisplayed('snapshotRestoreApp'); + }); + + await testSubjects.click('allDsAndIndicesToggle'); + await testSubjects.click('restoreIndexPatternsButton'); + await testSubjects.setValue('comboBoxSearchInput', indexName); + await testSubjects.pressEnter('comboBoxSearchInput'); + + if (rename) { + await testSubjects.click('restoreRenameToggle'); + await testSubjects.setValue('capturePattern', `${indexName}(.*)`); + await testSubjects.setValue('replacementPattern', `restored_${indexName}$1`); + } + await testSubjects.click('nextButton'); + await retry.waitFor('index settings to be visible', async () => { + return await testSubjects.isDisplayed('indexSettingsTitle'); + }); + await testSubjects.click('nextButton'); + await retry.waitFor('review step to be visible', async () => { + return await testSubjects.isDisplayed('reviewSnapshotTitle'); + }); + await testSubjects.click('restoreButton'); + }, + + async createSourceOnlyRepositoryStepOne(repositoryName: string) { + await testSubjects.click('registerRepositoryButton'); + await testSubjects.setValue('nameInput', `${repositoryName}`); + await testSubjects.click('fsRepositoryType'); + await testSubjects.click('sourceOnlyToggle'); + await testSubjects.click('nextButton'); + await retry.waitFor('step two to be visible', async () => { + return await testSubjects.isDisplayed('stepTwo'); + }); + }, + async createSourceOnlyRepositoryStepTwo(location: string) { + await testSubjects.setValue('locationInput', location); + await testSubjects.click('compressToggle'); + await testSubjects.click('submitButton'); + await retry.waitFor('repository list to be visible', async () => { + return await testSubjects.isDisplayed('repositoryList'); + }); + }, + + async refreshWhileSnapshotIsInProgress() { + let isInProgress = true; + while (isInProgress) { + const table = await testSubjects.find('snapshotTable'); + const rows = await table.findAllByTestSubject('row'); + const snapshotState = await ( + await rows[0].findByTestSubject('snapshotState') + ).getVisibleText(); + + if (snapshotState === 'In progress') { + await testSubjects.click('reloadButton'); + } else { + isInProgress = false; + } + } + }, }; } From fac6ed88352cc673cb26fd16c7c3cb4b88476979 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 21 Jan 2025 18:24:52 +1100 Subject: [PATCH 018/148] [api-docs] 2025-01-21 Daily api_docs build (#207288) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/959 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- .../ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.devdocs.json | 26 ++- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.devdocs.json | 6 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_quality.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_usage.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 4 +- api_docs/deprecations_by_plugin.mdx | 3 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/discover_shared.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.devdocs.json | 62 ------- api_docs/embeddable.mdx | 4 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/entities_data_access.mdx | 2 +- api_docs/entity_manager.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/esql.mdx | 2 +- api_docs/esql_data_grid.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.devdocs.json | 6 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/fields_metadata.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/inference.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/ingest_pipelines.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/integration_assistant.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/inventory.mdx | 2 +- api_docs/investigate.mdx | 2 +- api_docs/investigate_app.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_ai_assistant.mdx | 2 +- api_docs/kbn_ai_assistant_common.mdx | 2 +- api_docs/kbn_ai_assistant_icon.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_log_pattern_analysis.mdx | 2 +- api_docs/kbn_aiops_log_rate_analysis.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_comparators.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_grouping.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_data_view.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_types.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_avc_banner.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- .../kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cbor.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_charts_theme.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_cloud_security_posture.mdx | 2 +- .../kbn_cloud_security_posture_common.mdx | 2 +- api_docs/kbn_cloud_security_posture_graph.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mock.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...ent_management_content_insights_public.mdx | 2 +- ...ent_management_content_insights_server.mdx | 2 +- ...bn_content_management_favorites_common.mdx | 2 +- ...bn_content_management_favorites_public.mdx | 2 +- ...bn_content_management_favorites_server.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...tent_management_table_list_view_common.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- .../kbn_content_management_user_profiles.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_browser.mdx | 2 +- ...bn_core_feature_flags_browser_internal.mdx | 2 +- .../kbn_core_feature_flags_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_server.mdx | 2 +- ...kbn_core_feature_flags_server_internal.mdx | 2 +- .../kbn_core_feature_flags_server_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- ...e_http_router_server_internal.devdocs.json | 54 +++++- .../kbn_core_http_router_server_internal.mdx | 4 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.devdocs.json | 39 +++- api_docs/kbn_core_http_server.mdx | 4 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server_utils.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- .../kbn_core_plugins_contracts_browser.mdx | 2 +- .../kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_security_browser.mdx | 2 +- .../kbn_core_security_browser_internal.mdx | 2 +- api_docs/kbn_core_security_browser_mocks.mdx | 2 +- api_docs/kbn_core_security_common.mdx | 2 +- api_docs/kbn_core_security_server.mdx | 2 +- .../kbn_core_security_server_internal.mdx | 2 +- api_docs/kbn_core_security_server_mocks.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_internal.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- .../kbn_core_ui_settings_common.devdocs.json | 36 ++-- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- ...e_ui_settings_server_internal.devdocs.json | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_browser.mdx | 2 +- ...kbn_core_user_profile_browser_internal.mdx | 2 +- .../kbn_core_user_profile_browser_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_common.mdx | 2 +- api_docs/kbn_core_user_profile_server.mdx | 2 +- .../kbn_core_user_profile_server_internal.mdx | 2 +- .../kbn_core_user_profile_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_forge.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_data_stream_adapter.mdx | 2 +- api_docs/kbn_data_view_utils.devdocs.json | 17 +- api_docs/kbn_data_view_utils.mdx | 4 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_fleet.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_deeplinks_security.mdx | 2 +- api_docs/kbn_deeplinks_shared.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- .../kbn_discover_contextual_components.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- .../kbn_elastic_assistant_common.devdocs.json | 16 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_entities_schema.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_esql_ast.mdx | 2 +- api_docs/kbn_esql_editor.mdx | 2 +- api_docs/kbn_esql_utils.mdx | 2 +- api_docs/kbn_esql_validation_autocomplete.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- .../kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_gen_ai_functional_testing.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_grid_layout.mdx | 2 +- api_docs/kbn_grouping.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_index_adapter.mdx | 2 +- ...dex_lifecycle_management_common_shared.mdx | 2 +- .../kbn_index_management_shared_types.mdx | 2 +- api_docs/kbn_inference_common.mdx | 2 +- api_docs/kbn_inference_endpoint_ui_common.mdx | 2 +- api_docs/kbn_inference_integration_flyout.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_investigation_shared.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_ipynb.mdx | 2 +- api_docs/kbn_item_buffer.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_json_schemas.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_lens_formula_docs.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_content_badge.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_manifest.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_cancellable_search.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_field_stats_flyout.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_parse_interval.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_time_buckets.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_ml_validators.mdx | 2 +- api_docs/kbn_mock_idp_utils.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_utils.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_object_versioning_utils.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- .../kbn_observability_alerting_rule_utils.mdx | 2 +- .../kbn_observability_alerting_test_data.mdx | 2 +- ...ility_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_observability_logs_overview.mdx | 2 +- ...kbn_observability_synthetics_test_data.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_palettes.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_check.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_presentation_containers.mdx | 2 +- api_docs/kbn_presentation_publishing.mdx | 2 +- api_docs/kbn_product_doc_artifact_builder.mdx | 2 +- api_docs/kbn_product_doc_common.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_hooks.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- .../kbn_react_mute_legacy_root_warning.mdx | 2 +- api_docs/kbn_recently_accessed.mdx | 2 +- api_docs/kbn_relocate.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_csv_share_panel.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- .../kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- .../kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- .../kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_response_ops_rule_form.mdx | 2 +- api_docs/kbn_response_ops_rule_params.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rollup.mdx | 2 +- api_docs/kbn_router_to_openapispec.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_saved_search_component.mdx | 2 +- api_docs/kbn_scout.mdx | 2 +- api_docs/kbn_scout_info.mdx | 2 +- api_docs/kbn_scout_reporting.mdx | 2 +- api_docs/kbn_screenshotting_server.mdx | 2 +- api_docs/kbn_search_api_keys_components.mdx | 2 +- api_docs/kbn_search_api_keys_server.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_search_shared_ui.mdx | 2 +- api_docs/kbn_search_types.mdx | 2 +- api_docs/kbn_security_api_key_management.mdx | 2 +- api_docs/kbn_security_authorization_core.mdx | 2 +- ...kbn_security_authorization_core_common.mdx | 2 +- api_docs/kbn_security_form_components.mdx | 2 +- api_docs/kbn_security_hardening.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- .../kbn_security_role_management_model.mdx | 2 +- ...kbn_security_solution_distribution_bar.mdx | 2 +- ...bn_security_solution_features.devdocs.json | 56 +++++- api_docs/kbn_security_solution_features.mdx | 4 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_security_ui_components.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- .../kbn_securitysolution_ecs.devdocs.json | 175 ++++++++++++++++++ api_docs/kbn_securitysolution_ecs.mdx | 4 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ion_exception_list_components.devdocs.json | 10 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- .../kbn_server_route_repository_client.mdx | 2 +- .../kbn_server_route_repository_utils.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_tabbed_modal.mdx | 2 +- api_docs/kbn_shared_ux_table_persist.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.devdocs.json | 78 ++++++-- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_predicates.mdx | 2 +- api_docs/kbn_sse_utils.mdx | 2 +- api_docs/kbn_sse_utils_client.mdx | 2 +- api_docs/kbn_sse_utils_server.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_streams_schema.mdx | 2 +- api_docs/kbn_synthetics_e2e.mdx | 2 +- api_docs/kbn_synthetics_private_location.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_eui_helpers.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_timerange.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_transpose_utils.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_try_in_console.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_unsaved_changes_prompt.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/llm_tasks.mdx | 2 +- api_docs/logs_data_access.mdx | 2 +- api_docs/logs_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.devdocs.json | 4 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_a_i_assistant_app.mdx | 2 +- .../observability_ai_assistant_management.mdx | 2 +- api_docs/observability_logs_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 24 +-- api_docs/presentation_panel.mdx | 2 +- api_docs/presentation_util.devdocs.json | 35 ---- api_docs/presentation_util.mdx | 4 +- api_docs/product_doc_base.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/search_assistant.mdx | 2 +- api_docs/search_connectors.mdx | 2 +- api_docs/search_homepage.mdx | 2 +- api_docs/search_indices.mdx | 2 +- api_docs/search_inference_endpoints.mdx | 2 +- api_docs/search_navigation.mdx | 2 +- api_docs/search_notebooks.mdx | 2 +- api_docs/search_playground.mdx | 2 +- api_docs/search_synonyms.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.devdocs.json | 15 ++ api_docs/security_solution.mdx | 4 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/slo.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/streams.mdx | 2 +- api_docs/streams_app.mdx | 2 +- api_docs/task_manager.devdocs.json | 21 +++ api_docs/task_manager.mdx | 4 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.devdocs.json | 13 ++ api_docs/threat_intelligence.mdx | 4 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.devdocs.json | 12 -- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.devdocs.json | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 798 files changed, 1309 insertions(+), 975 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 6d2f227565d36..a63e3c5518651 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: 2025-01-20 +date: 2025-01-21 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 ee7095a2218da..f40ab8f1948cf 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index efc4f16272f94..ed128e4f76c10 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 55063aaec9de4..934b76656ce25 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index c680add486a53..ee843ec440fdc 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -4792,7 +4792,31 @@ "UnsnoozeParams", ") => Promise; unmuteAll: (options: { id: string; }) => Promise; muteInstance: (options: Readonly<{} & { alertId: string; alertInstanceId: string; }>) => Promise; unmuteInstance: (options: Readonly<{} & { alertId: string; alertInstanceId: string; }>) => Promise; bulkUntrackAlerts: (options: Readonly<{ indices?: string[] | undefined; ruleTypeIds?: string[] | undefined; alertUuids?: string[] | undefined; query?: any[] | undefined; } & { isUsingQuery: boolean; }>) => Promise; runSoon: (options: { id: string; }) => Promise; listRuleTypes: () => Promise<", "RegistryAlertTypeWithAuth", - "[]>; scheduleBackfill: (params: Readonly<{ end?: string | undefined; } & { start: string; ruleId: string; }>[]) => Promise<(Readonly<{ end?: string | undefined; } & { id: string; spaceId: string; start: string; rule: Readonly<{ apiKeyCreatedByUser?: boolean | null | undefined; } & { params: Record; id: string; consumer: string; name: string; tags: string[]; enabled: boolean; alertTypeId: string; schedule: Readonly<{} & { interval: string; }>; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; apiKeyOwner: string | null; revision: number; }>; enabled: boolean; schedule: Readonly<{} & { interval: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; runAt: string; }>[]; createdAt: string; duration: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; }> | Readonly<{} & { error: Readonly<{ status?: number | undefined; } & { message: string; rule: Readonly<{ name?: string | undefined; } & { id: string; }>; }>; }>)[]>; getBackfill: (id: string) => Promise; id: string; consumer: string; name: string; tags: string[]; enabled: boolean; alertTypeId: string; schedule: Readonly<{} & { interval: string; }>; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; apiKeyOwner: string | null; revision: number; }>; enabled: boolean; schedule: Readonly<{} & { interval: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; runAt: string; }>[]; createdAt: string; duration: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; }>>; findBackfill: (params: Readonly<{ start?: string | undefined; end?: string | undefined; sortField?: \"start\" | \"createdAt\" | undefined; sortOrder?: \"asc\" | \"desc\" | undefined; ruleIds?: string | undefined; } & { page: number; perPage: number; }>) => Promise; id: string; consumer: string; name: string; tags: string[]; enabled: boolean; alertTypeId: string; schedule: Readonly<{} & { interval: string; }>; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; apiKeyOwner: string | null; revision: number; }>; enabled: boolean; schedule: Readonly<{} & { interval: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; runAt: string; }>[]; createdAt: string; duration: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; }>[]; perPage: number; total: number; }>>; deleteBackfill: (id: string) => Promise<{}>; getSpaceId: () => string | undefined; getAuthorization: () => ", + "[]>; scheduleBackfill: (params: Readonly<{ end?: string | undefined; runActions?: boolean | undefined; } & { start: string; ruleId: string; }>[]) => Promise<(Readonly<{ end?: string | undefined; warnings?: string[] | undefined; } & { id: string; spaceId: string; start: string; rule: Readonly<{ apiKeyCreatedByUser?: boolean | null | undefined; } & { params: Record; id: string; consumer: string; name: string; actions: Readonly<{ frequency?: Readonly<{} & { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; }> | undefined; alertsFilter?: Readonly<{ query?: Readonly<{ dsl?: string | undefined; } & { kql: string; filters: Readonly<{ query?: Record | undefined; $state?: Readonly<{} & { store: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.FilterStateStore", + "text": "FilterStateStore" + }, + "; }> | undefined; } & { meta: Record; }>[]; }> | undefined; timeframe?: Readonly<{} & { days: (2 | 1 | 7 | 6 | 5 | 4 | 3)[]; hours: Readonly<{} & { start: string; end: string; }>; timezone: string; }> | undefined; } & {}> | undefined; uuid?: string | undefined; useAlertDataForTemplate?: boolean | undefined; } & { params: Record; id: string; actionTypeId: string; group: string; }>[]; tags: string[]; enabled: boolean; alertTypeId: string; schedule: Readonly<{} & { interval: string; }>; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; apiKeyOwner: string | null; revision: number; }>; enabled: boolean; schedule: Readonly<{} & { interval: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; runAt: string; }>[]; createdAt: string; duration: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; }> | Readonly<{} & { error: Readonly<{ status?: number | undefined; } & { message: string; rule: Readonly<{ name?: string | undefined; } & { id: string; }>; }>; }>)[]>; getBackfill: (id: string) => Promise; id: string; consumer: string; name: string; actions: Readonly<{ frequency?: Readonly<{} & { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; }> | undefined; alertsFilter?: Readonly<{ query?: Readonly<{ dsl?: string | undefined; } & { kql: string; filters: Readonly<{ query?: Record | undefined; $state?: Readonly<{} & { store: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.FilterStateStore", + "text": "FilterStateStore" + }, + "; }> | undefined; } & { meta: Record; }>[]; }> | undefined; timeframe?: Readonly<{} & { days: (2 | 1 | 7 | 6 | 5 | 4 | 3)[]; hours: Readonly<{} & { start: string; end: string; }>; timezone: string; }> | undefined; } & {}> | undefined; uuid?: string | undefined; useAlertDataForTemplate?: boolean | undefined; } & { params: Record; id: string; actionTypeId: string; group: string; }>[]; tags: string[]; enabled: boolean; alertTypeId: string; schedule: Readonly<{} & { interval: string; }>; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; apiKeyOwner: string | null; revision: number; }>; enabled: boolean; schedule: Readonly<{} & { interval: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; runAt: string; }>[]; createdAt: string; duration: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; }>>; findBackfill: (params: Readonly<{ start?: string | undefined; end?: string | undefined; sortField?: \"start\" | \"createdAt\" | undefined; sortOrder?: \"asc\" | \"desc\" | undefined; ruleIds?: string | undefined; } & { page: number; perPage: number; }>) => Promise; id: string; consumer: string; name: string; actions: Readonly<{ frequency?: Readonly<{} & { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; }> | undefined; alertsFilter?: Readonly<{ query?: Readonly<{ dsl?: string | undefined; } & { kql: string; filters: Readonly<{ query?: Record | undefined; $state?: Readonly<{} & { store: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.FilterStateStore", + "text": "FilterStateStore" + }, + "; }> | undefined; } & { meta: Record; }>[]; }> | undefined; timeframe?: Readonly<{} & { days: (2 | 1 | 7 | 6 | 5 | 4 | 3)[]; hours: Readonly<{} & { start: string; end: string; }>; timezone: string; }> | undefined; } & {}> | undefined; uuid?: string | undefined; useAlertDataForTemplate?: boolean | undefined; } & { params: Record; id: string; actionTypeId: string; group: string; }>[]; tags: string[]; enabled: boolean; alertTypeId: string; schedule: Readonly<{} & { interval: string; }>; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; apiKeyOwner: string | null; revision: number; }>; enabled: boolean; schedule: Readonly<{} & { interval: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; runAt: string; }>[]; createdAt: string; duration: string; status: \"error\" | \"running\" | \"complete\" | \"pending\" | \"timeout\"; }>[]; perPage: number; total: number; }>>; deleteBackfill: (id: string) => Promise<{}>; getSpaceId: () => string | undefined; getAuthorization: () => ", { "pluginId": "alerting", "scope": "server", diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 96b660ca5b9d1..371d320633684 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index a8571862ccaf4..edc422bc73925 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 3b4aaeccc0e64..88c360797136a 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 4d37857b2153e..f43582f0b3b5a 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 5312dbc3f0cb6..8531eb28fd03d 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: 2025-01-20 +date: 2025-01-21 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 b335ce22e71e6..fe7a83fcfb815 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: 2025-01-20 +date: 2025-01-21 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 7afbc64aab34c..f479ad71ca2a0 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: 2025-01-20 +date: 2025-01-21 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 10e62e40fd5fc..7fb0528371196 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index ac8e45303ae7d..b3148d9554a11 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: 2025-01-20 +date: 2025-01-21 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 e57f0d7ffc894..c575ae1e5c961 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 4bf8a963a9e9e..8692a797c319f 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: 2025-01-20 +date: 2025-01-21 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 c7a02cf71d9f7..0e0b01bdb46f8 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: 2025-01-20 +date: 2025-01-21 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 e06a7ca6af709..8d233d86f9b57 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.devdocs.json b/api_docs/controls.devdocs.json index 9b1dedbf113ae..9e7dbbac3e8c7 100644 --- a/api_docs/controls.devdocs.json +++ b/api_docs/controls.devdocs.json @@ -1060,7 +1060,7 @@ "signature": [ "\"clearControl\"" ], - "path": "src/platform/plugins/shared/controls/public/actions/index.ts", + "path": "src/platform/plugins/shared/controls/public/actions/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1075,7 +1075,7 @@ "signature": [ "\"deleteControl\"" ], - "path": "src/platform/plugins/shared/controls/public/actions/index.ts", + "path": "src/platform/plugins/shared/controls/public/actions/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1090,7 +1090,7 @@ "signature": [ "\"editDataControl\"" ], - "path": "src/platform/plugins/shared/controls/public/actions/index.ts", + "path": "src/platform/plugins/shared/controls/public/actions/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 628f76f45faa8..490e141998f1c 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: 2025-01-20 +date: 2025-01-21 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 8667a012c47f3..5e67f1381d0d2 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: 2025-01-20 +date: 2025-01-21 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 49540a6dc8b36..054efc9da038f 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: 2025-01-20 +date: 2025-01-21 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 f423d8964a481..c5f774fc16158 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: 2025-01-20 +date: 2025-01-21 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 0c9e4234bb954..42255c0cf3b76 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_quality.mdx b/api_docs/data_quality.mdx index fdd044ce57fb3..9835a136de6a4 100644 --- a/api_docs/data_quality.mdx +++ b/api_docs/data_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataQuality title: "dataQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the dataQuality plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataQuality'] --- import dataQualityObj from './data_quality.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 2ce715264bd2e..90650fdc5310c 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: 2025-01-20 +date: 2025-01-21 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 a5c339daf6cff..a75a6cb1a9293 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_usage.mdx b/api_docs/data_usage.mdx index 30c2f568ab617..19562998354a1 100644 --- a/api_docs/data_usage.mdx +++ b/api_docs/data_usage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataUsage title: "dataUsage" image: https://source.unsplash.com/400x175/?github description: API docs for the dataUsage plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataUsage'] --- import dataUsageObj from './data_usage.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 5a5b37fca19fd..883d717a06364 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: 2025-01-20 +date: 2025-01-21 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 0bcb6594d2458..1fd01ee63d750 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: 2025-01-20 +date: 2025-01-21 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 a157297cd33d2..091779ce26db7 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: 2025-01-20 +date: 2025-01-21 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 80af816c1365d..5bb662bfa3b0b 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: 2025-01-20 +date: 2025-01-21 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 6a4fa2dd69a41..69cbb4d2e58dc 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 544a383d8a4b5..7165db150b5ed 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index e529945631d77..809d47b20bece 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | data, @kbn/search-errors, savedObjectsManagement, unifiedSearch, @kbn/unified-field-list, lens, controls, @kbn/lens-embeddable-utils, triggersActionsUi, dataVisualizer, ml, canvas, graph, fleet, transform, @kbn/ml-data-view-utils, upgradeAssistant, securitySolution, timelines, exploratoryView, stackAlerts, maps, visTypeTimeseries, uptime, ux, enterpriseSearch, @kbn/cloud-security-posture-graph, eventAnnotationListing, inputControlVis, visDefaultEditor, dataViewManagement, visTypeTimelion, visTypeVega | - | | | ml, securitySolution | - | | | actions, ml, savedObjectsTagging | - | -| | unifiedSearch, uiActionsEnhanced, controls, ml, discover, imageEmbeddable, securitySolution, links | - | +| | unifiedSearch, uiActionsEnhanced, ml, discover, imageEmbeddable, securitySolution, links | - | | | data, esql, visualizations, lens, maps, cases, ml, aiops, discover, reporting, discoverEnhanced, dashboardEnhanced, securitySolution, slo, synthetics, inputControlVis | - | | | @kbn/core, usageCollection, taskManager, security, monitoringCollection, files, banners, telemetry, securitySolution, @kbn/test-suites-xpack, cloudFullStory, customBranding, enterpriseSearch, interactiveSetup, mockIdpPlugin, spaces, ml | - | | | @kbn/core, visualizations, dataVisualizer, ml, aiops, graph, dashboardEnhanced, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index ff7c5f937d77a..ab633571bfeb1 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -474,7 +474,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [options_list_fetch_cache.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/public/controls/data_controls/options_list_control/options_list_fetch_cache.ts#:~:text=title) | - | -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/public/plugin.ts#:~:text=registerAction), [plugin.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/public/plugin.ts#:~:text=registerAction), [plugin.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/public/plugin.ts#:~:text=registerAction) | - | | | [control_group_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/server/control_group/control_group_persistable_state.ts#:~:text=SavedObjectReference), [control_group_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/server/control_group/control_group_persistable_state.ts#:~:text=SavedObjectReference), [control_group_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/server/control_group/control_group_persistable_state.ts#:~:text=SavedObjectReference), [options_list_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/server/options_list/options_list_persistable_state.ts#:~:text=SavedObjectReference), [options_list_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/server/options_list/options_list_persistable_state.ts#:~:text=SavedObjectReference), [options_list_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/server/options_list/options_list_persistable_state.ts#:~:text=SavedObjectReference), [range_slider_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/server/range_slider/range_slider_persistable_state.ts#:~:text=SavedObjectReference), [range_slider_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/server/range_slider/range_slider_persistable_state.ts#:~:text=SavedObjectReference), [range_slider_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/server/range_slider/range_slider_persistable_state.ts#:~:text=SavedObjectReference), [time_slider_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/controls/server/time_slider/time_slider_persistable_state.ts#:~:text=SavedObjectReference)+ 2 more | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 05999aedd1b63..e89f9022e17f6 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 0d11e583aa0c4..262948d8ecfe4 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: 2025-01-20 +date: 2025-01-21 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 090ba6285aba7..3e997954742b4 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: 2025-01-20 +date: 2025-01-21 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 8342255e6151c..2acdce52a8a9c 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index 3a2ae7c4cf2cb..5d94dfaf57bdc 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index e03f44493ff94..bd4a53d48ead8 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 7cc82baf8dc4f..65b5151459479 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index ba3a7e414ba4b..6d1a861ac88c9 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -1906,21 +1906,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.PANEL_HOVER_TRIGGER", - "type": "string", - "tags": [], - "label": "PANEL_HOVER_TRIGGER", - "description": [], - "signature": [ - "\"PANEL_HOVER_TRIGGER\"" - ], - "path": "src/platform/plugins/shared/embeddable/public/ui_actions/triggers.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.PANEL_NOTIFICATION_TRIGGER", @@ -2343,53 +2328,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.panelHoverTrigger", - "type": "Object", - "tags": [], - "label": "panelHoverTrigger", - "description": [], - "path": "src/platform/plugins/shared/embeddable/public/ui_actions/triggers.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.panelHoverTrigger.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "src/platform/plugins/shared/embeddable/public/ui_actions/triggers.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.panelHoverTrigger.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "path": "src/platform/plugins/shared/embeddable/public/ui_actions/triggers.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.panelHoverTrigger.description", - "type": "string", - "tags": [], - "label": "description", - "description": [], - "path": "src/platform/plugins/shared/embeddable/public/ui_actions/triggers.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.panelNotificationTrigger", diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 6b8587bde225f..ceb1cd0e6dd17 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 172 | 0 | 145 | 2 | +| 167 | 0 | 140 | 2 | ## Client diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 5240cbfbbf911..51547c793653c 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: 2025-01-20 +date: 2025-01-21 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 176ad84beb254..9ec41f875bc20 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: 2025-01-20 +date: 2025-01-21 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 2d022929aced4..919b1b22586f5 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/entities_data_access.mdx b/api_docs/entities_data_access.mdx index 83249be08d0bb..ef0d3a4ebc782 100644 --- a/api_docs/entities_data_access.mdx +++ b/api_docs/entities_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entitiesDataAccess title: "entitiesDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the entitiesDataAccess plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entitiesDataAccess'] --- import entitiesDataAccessObj from './entities_data_access.devdocs.json'; diff --git a/api_docs/entity_manager.mdx b/api_docs/entity_manager.mdx index babc04a6a428a..5838f72b9b2cd 100644 --- a/api_docs/entity_manager.mdx +++ b/api_docs/entity_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entityManager title: "entityManager" image: https://source.unsplash.com/400x175/?github description: API docs for the entityManager plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entityManager'] --- import entityManagerObj from './entity_manager.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 8e146c0bfea94..7d473f0b1b2d3 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/esql.mdx b/api_docs/esql.mdx index 0a383c1454493..908eeea1ef0f1 100644 --- a/api_docs/esql.mdx +++ b/api_docs/esql.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esql title: "esql" image: https://source.unsplash.com/400x175/?github description: API docs for the esql plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esql'] --- import esqlObj from './esql.devdocs.json'; diff --git a/api_docs/esql_data_grid.mdx b/api_docs/esql_data_grid.mdx index 9e8dc16a7ccde..1c1df0cc7a526 100644 --- a/api_docs/esql_data_grid.mdx +++ b/api_docs/esql_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esqlDataGrid title: "esqlDataGrid" image: https://source.unsplash.com/400x175/?github description: API docs for the esqlDataGrid plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esqlDataGrid'] --- import esqlDataGridObj from './esql_data_grid.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 5f1f8c6befb7c..ef98aedab868f 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 83991106139c0..277fa3704a039 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.devdocs.json b/api_docs/event_log.devdocs.json index c8f6c868c2522..45f39ac185ee7 100644 --- a/api_docs/event_log.devdocs.json +++ b/api_docs/event_log.devdocs.json @@ -1514,7 +1514,7 @@ "label": "data", "description": [], "signature": [ - "(Readonly<{ log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; error?: Readonly<{ id?: string | undefined; type?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; version?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; uuid?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; action?: Readonly<{ id?: string | undefined; name?: string | undefined; type_id?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; usage?: Readonly<{ request_body_bytes?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ outcome?: string | undefined; status?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_delayed_alerts?: string | number | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; backfill?: Readonly<{ id?: string | undefined; start?: string | undefined; interval?: string | undefined; } & {}> | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; flapping?: boolean | undefined; uuid?: string | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; saved_objects?: Readonly<{ id?: string | undefined; type?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; user_api_key?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined; event?: Readonly<{ id?: string | undefined; type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; start?: string | undefined; end?: string | undefined; outcome?: string | undefined; duration?: string | number | undefined; code?: string | undefined; severity?: string | number | undefined; category?: string[] | undefined; timezone?: string | undefined; risk_score?: number | undefined; url?: string | undefined; created?: string | undefined; provider?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined)[]" + "(Readonly<{ log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; error?: Readonly<{ id?: string | undefined; type?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; version?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; uuid?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; action?: Readonly<{ id?: string | undefined; name?: string | undefined; type_id?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; usage?: Readonly<{ request_body_bytes?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ outcome?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_delayed_alerts?: string | number | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; backfill?: Readonly<{ id?: string | undefined; start?: string | undefined; interval?: string | undefined; } & {}> | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; flapping?: boolean | undefined; uuid?: string | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; saved_objects?: Readonly<{ id?: string | undefined; type?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; user_api_key?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined; event?: Readonly<{ id?: string | undefined; type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; start?: string | undefined; end?: string | undefined; outcome?: string | undefined; duration?: string | number | undefined; timezone?: string | undefined; code?: string | undefined; severity?: string | number | undefined; category?: string[] | undefined; risk_score?: number | undefined; url?: string | undefined; created?: string | undefined; provider?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined)[]" ], "path": "x-pack/platform/plugins/shared/event_log/server/es/cluster_client_adapter.ts", "deprecated": false, @@ -1534,7 +1534,7 @@ "label": "IEvent", "description": [], "signature": [ - "DeepPartial | undefined; error?: Readonly<{ id?: string | undefined; type?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; version?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; uuid?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; action?: Readonly<{ id?: string | undefined; name?: string | undefined; type_id?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; usage?: Readonly<{ request_body_bytes?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ outcome?: string | undefined; status?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_delayed_alerts?: string | number | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; backfill?: Readonly<{ id?: string | undefined; start?: string | undefined; interval?: string | undefined; } & {}> | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; flapping?: boolean | undefined; uuid?: string | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; saved_objects?: Readonly<{ id?: string | undefined; type?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; user_api_key?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined; event?: Readonly<{ id?: string | undefined; type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; start?: string | undefined; end?: string | undefined; outcome?: string | undefined; duration?: string | number | undefined; code?: string | undefined; severity?: string | number | undefined; category?: string[] | undefined; timezone?: string | undefined; risk_score?: number | undefined; url?: string | undefined; created?: string | undefined; provider?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" + "DeepPartial | undefined; error?: Readonly<{ id?: string | undefined; type?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; version?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; uuid?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; action?: Readonly<{ id?: string | undefined; name?: string | undefined; type_id?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; usage?: Readonly<{ request_body_bytes?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ outcome?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_delayed_alerts?: string | number | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; backfill?: Readonly<{ id?: string | undefined; start?: string | undefined; interval?: string | undefined; } & {}> | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; flapping?: boolean | undefined; uuid?: string | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; saved_objects?: Readonly<{ id?: string | undefined; type?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; user_api_key?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined; event?: Readonly<{ id?: string | undefined; type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; start?: string | undefined; end?: string | undefined; outcome?: string | undefined; duration?: string | number | undefined; timezone?: string | undefined; code?: string | undefined; severity?: string | number | undefined; category?: string[] | undefined; risk_score?: number | undefined; url?: string | undefined; created?: string | undefined; provider?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" ], "path": "x-pack/platform/plugins/shared/event_log/generated/schemas.ts", "deprecated": false, @@ -1549,7 +1549,7 @@ "label": "IValidatedEvent", "description": [], "signature": [ - "Readonly<{ log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; error?: Readonly<{ id?: string | undefined; type?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; version?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; uuid?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; action?: Readonly<{ id?: string | undefined; name?: string | undefined; type_id?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; usage?: Readonly<{ request_body_bytes?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ outcome?: string | undefined; status?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_delayed_alerts?: string | number | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; backfill?: Readonly<{ id?: string | undefined; start?: string | undefined; interval?: string | undefined; } & {}> | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; flapping?: boolean | undefined; uuid?: string | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; saved_objects?: Readonly<{ id?: string | undefined; type?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; user_api_key?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined; event?: Readonly<{ id?: string | undefined; type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; start?: string | undefined; end?: string | undefined; outcome?: string | undefined; duration?: string | number | undefined; code?: string | undefined; severity?: string | number | undefined; category?: string[] | undefined; timezone?: string | undefined; risk_score?: number | undefined; url?: string | undefined; created?: string | undefined; provider?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined" + "Readonly<{ log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; error?: Readonly<{ id?: string | undefined; type?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; version?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; uuid?: string | undefined; category?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; action?: Readonly<{ id?: string | undefined; name?: string | undefined; type_id?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; usage?: Readonly<{ request_body_bytes?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; alerting?: Readonly<{ outcome?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; status?: string | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_delayed_alerts?: string | number | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; backfill?: Readonly<{ id?: string | undefined; start?: string | undefined; interval?: string | undefined; } & {}> | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; flapping?: boolean | undefined; uuid?: string | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; saved_objects?: Readonly<{ id?: string | undefined; type?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; user_api_key?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined; event?: Readonly<{ id?: string | undefined; type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; start?: string | undefined; end?: string | undefined; outcome?: string | undefined; duration?: string | number | undefined; timezone?: string | undefined; code?: string | undefined; severity?: string | number | undefined; category?: string[] | undefined; risk_score?: number | undefined; url?: string | undefined; created?: string | undefined; provider?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined" ], "path": "x-pack/platform/plugins/shared/event_log/generated/schemas.ts", "deprecated": false, diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index d6a989a3122b1..4ca98fe9775d8 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: 2025-01-20 +date: 2025-01-21 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 f16bffdfc586f..eaa5226366067 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: 2025-01-20 +date: 2025-01-21 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 f1592d1746af3..e2a1f47fe1c45 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: 2025-01-20 +date: 2025-01-21 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 acb24f303e2e6..c0da9669e7824 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: 2025-01-20 +date: 2025-01-21 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 1d9076ee0f962..b128637eb24b3 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: 2025-01-20 +date: 2025-01-21 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 0e63185e362f9..3fcdfe5dda561 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: 2025-01-20 +date: 2025-01-21 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 c2a68bc856eb4..9a36105d63b03 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: 2025-01-20 +date: 2025-01-21 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 0c046a3700968..41a2501798eb9 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: 2025-01-20 +date: 2025-01-21 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 0234730fc6c94..0c99cdefbeff6 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: 2025-01-20 +date: 2025-01-21 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 dd5c108f7583d..8bad663253b2a 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: 2025-01-20 +date: 2025-01-21 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 c3f613711b42d..68a960bd019e3 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: 2025-01-20 +date: 2025-01-21 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 e96444e60204c..bc7a5d0bbf2db 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: 2025-01-20 +date: 2025-01-21 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 39da2a80b1526..b92b6cd6610b3 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: 2025-01-20 +date: 2025-01-21 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 642cf1b5884d9..c5d5155deadc0 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: 2025-01-20 +date: 2025-01-21 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 d9e98503f8378..88762f75c4905 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: 2025-01-20 +date: 2025-01-21 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 5376d768e66b3..0131a377ee5f6 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: 2025-01-20 +date: 2025-01-21 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 0477b4853c644..ae2c981173fe1 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: 2025-01-20 +date: 2025-01-21 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 d78f69a0c31f9..9783c28c08eb4 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/fields_metadata.mdx b/api_docs/fields_metadata.mdx index 2b1d30dcb0182..0b84524b5346e 100644 --- a/api_docs/fields_metadata.mdx +++ b/api_docs/fields_metadata.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldsMetadata title: "fieldsMetadata" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldsMetadata plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldsMetadata'] --- import fieldsMetadataObj from './fields_metadata.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 47ab216ea71f9..ab3d6f4fc34b8 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: 2025-01-20 +date: 2025-01-21 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 741384a1d7317..1c0ba92614732 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: 2025-01-20 +date: 2025-01-21 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 3e4a53beee39d..d139bf67d9254 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: 2025-01-20 +date: 2025-01-21 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 1bed0bf7a0717..61cfef1885775 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: 2025-01-20 +date: 2025-01-21 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 2d6456c364c32..75315fc87a789 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: 2025-01-20 +date: 2025-01-21 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 de3d1bd92f98f..c5654002e12ad 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: 2025-01-20 +date: 2025-01-21 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 872f61a6d81d1..7eb197ac99b0e 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: 2025-01-20 +date: 2025-01-21 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 69980e0a40796..815dd0d82aabb 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index fef01b90f97c2..5d58598b3bb97 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/inference.mdx b/api_docs/inference.mdx index 393dda548f20d..23f4c1b1b67b9 100644 --- a/api_docs/inference.mdx +++ b/api_docs/inference.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inference title: "inference" image: https://source.unsplash.com/400x175/?github description: API docs for the inference plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inference'] --- import inferenceObj from './inference.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 9ebf48fc590a9..28a606d90f424 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index 1e0c3ffc50bf5..488029a927082 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 0fab8c8f84591..8c8b6acc0265f 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/integration_assistant.mdx b/api_docs/integration_assistant.mdx index 36227de3ab755..45ca25f22b2a8 100644 --- a/api_docs/integration_assistant.mdx +++ b/api_docs/integration_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/integrationAssistant title: "integrationAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the integrationAssistant plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'integrationAssistant'] --- import integrationAssistantObj from './integration_assistant.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 3d19732b1fe5c..d3841a4c8a0d4 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/inventory.mdx b/api_docs/inventory.mdx index e10be4cf87f02..aae4ea7a6dc75 100644 --- a/api_docs/inventory.mdx +++ b/api_docs/inventory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inventory title: "inventory" image: https://source.unsplash.com/400x175/?github description: API docs for the inventory plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inventory'] --- import inventoryObj from './inventory.devdocs.json'; diff --git a/api_docs/investigate.mdx b/api_docs/investigate.mdx index 256268961e018..dd20ac692ed6d 100644 --- a/api_docs/investigate.mdx +++ b/api_docs/investigate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigate title: "investigate" image: https://source.unsplash.com/400x175/?github description: API docs for the investigate plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigate'] --- import investigateObj from './investigate.devdocs.json'; diff --git a/api_docs/investigate_app.mdx b/api_docs/investigate_app.mdx index 82e0b7001cbf4..fc4bbdc6b4a47 100644 --- a/api_docs/investigate_app.mdx +++ b/api_docs/investigate_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigateApp title: "investigateApp" image: https://source.unsplash.com/400x175/?github description: API docs for the investigateApp plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigateApp'] --- import investigateAppObj from './investigate_app.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 582ab965c0400..b67f24a297a4f 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant.mdx b/api_docs/kbn_ai_assistant.mdx index 6e9db1f188ead..a36996f754c92 100644 --- a/api_docs/kbn_ai_assistant.mdx +++ b/api_docs/kbn_ai_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant title: "@kbn/ai-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant'] --- import kbnAiAssistantObj from './kbn_ai_assistant.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_common.mdx b/api_docs/kbn_ai_assistant_common.mdx index a2791bb44d03f..47756de9cd1a4 100644 --- a/api_docs/kbn_ai_assistant_common.mdx +++ b/api_docs/kbn_ai_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-common title: "@kbn/ai-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-common'] --- import kbnAiAssistantCommonObj from './kbn_ai_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_icon.mdx b/api_docs/kbn_ai_assistant_icon.mdx index 61cfdb086270f..9ca8d8e8dc494 100644 --- a/api_docs/kbn_ai_assistant_icon.mdx +++ b/api_docs/kbn_ai_assistant_icon.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-icon title: "@kbn/ai-assistant-icon" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-icon plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-icon'] --- import kbnAiAssistantIconObj from './kbn_ai_assistant_icon.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 58bbd55aa5d1d..8511c584efa85 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index f887ab1abc281..9e7641c635a3d 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index 685235b4c0c5b..af90d46a4036c 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index b87f329bed2a2..e52d50d12e39d 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_comparators.mdx b/api_docs/kbn_alerting_comparators.mdx index 6a53c3c714786..df962bf7e655b 100644 --- a/api_docs/kbn_alerting_comparators.mdx +++ b/api_docs/kbn_alerting_comparators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-comparators title: "@kbn/alerting-comparators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-comparators plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-comparators'] --- import kbnAlertingComparatorsObj from './kbn_alerting_comparators.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 13cadc44d32cd..6a73831a2c09b 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 78e58c51c879a..bcef77c0dc7e9 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 15cb0b9e51413..839c1fc1a4a98 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: 2025-01-20 +date: 2025-01-21 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_grouping.mdx b/api_docs/kbn_alerts_grouping.mdx index 9f845231d3124..03a487c97ea43 100644 --- a/api_docs/kbn_alerts_grouping.mdx +++ b/api_docs/kbn_alerts_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-grouping title: "@kbn/alerts-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-grouping plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-grouping'] --- import kbnAlertsGroupingObj from './kbn_alerts_grouping.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 14d492b55107d..60dea47bb73e1 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: 2025-01-20 +date: 2025-01-21 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 d1a192b10814e..2902514bc858b 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index d756d5afdb800..048dbef126a49 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index aed7e1dce41dc..e4fe0fee0a31c 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: 2025-01-20 +date: 2025-01-21 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_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index 8ca83939fe5d2..4bc9851ed81ac 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 2ec6bdfdad08c..db13a99739fda 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: 2025-01-20 +date: 2025-01-21 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 5bc771a4af943..c0faafd17d9ac 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: 2025-01-20 +date: 2025-01-21 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_types.mdx b/api_docs/kbn_apm_types.mdx index 8bde14cd5f322..e2e2f512532a3 100644 --- a/api_docs/kbn_apm_types.mdx +++ b/api_docs/kbn_apm_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-types title: "@kbn/apm-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-types plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-types'] --- import kbnApmTypesObj from './kbn_apm_types.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index a9873cf019d91..2c5e7c524cb70 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_avc_banner.mdx b/api_docs/kbn_avc_banner.mdx index 362c10fc16c7a..12325977e3f88 100644 --- a/api_docs/kbn_avc_banner.mdx +++ b/api_docs/kbn_avc_banner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-avc-banner title: "@kbn/avc-banner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/avc-banner plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/avc-banner'] --- import kbnAvcBannerObj from './kbn_avc_banner.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 44c53f0754a35..1cb1f1901d89e 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 4c00dd8cf53e7..9acd39223978b 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index e82cd78e6a01f..d1c0c6c180d76 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index cddb6cd52fc36..6fb2653d73b53 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cbor.mdx b/api_docs/kbn_cbor.mdx index 38f47e6f70cb4..b183613c2799e 100644 --- a/api_docs/kbn_cbor.mdx +++ b/api_docs/kbn_cbor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cbor title: "@kbn/cbor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cbor plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cbor'] --- import kbnCborObj from './kbn_cbor.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index ca913a236e8a0..d93f650471f63 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: 2025-01-20 +date: 2025-01-21 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 12164a9bc0e8c..21a278e6b31eb 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: 2025-01-20 +date: 2025-01-21 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 be3951b376b55..a2072d7ee4fe1 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_charts_theme.mdx b/api_docs/kbn_charts_theme.mdx index 6cfcb4a470074..c3160f022e85f 100644 --- a/api_docs/kbn_charts_theme.mdx +++ b/api_docs/kbn_charts_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-charts-theme title: "@kbn/charts-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/charts-theme plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/charts-theme'] --- import kbnChartsThemeObj from './kbn_charts_theme.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index c0cf31384b97d..4019af1c9e3cb 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: 2025-01-20 +date: 2025-01-21 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 f4efb0af6c464..dbeb1bdf4eaab 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: 2025-01-20 +date: 2025-01-21 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 e786f42d55365..84167ac1626e4 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: 2025-01-20 +date: 2025-01-21 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 a05126c551837..66c8776fe064a 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture.mdx b/api_docs/kbn_cloud_security_posture.mdx index b0c1db9f356ee..15d95bae725ab 100644 --- a/api_docs/kbn_cloud_security_posture.mdx +++ b/api_docs/kbn_cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture title: "@kbn/cloud-security-posture" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture'] --- import kbnCloudSecurityPostureObj from './kbn_cloud_security_posture.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_common.mdx b/api_docs/kbn_cloud_security_posture_common.mdx index b20a10bfc0aa2..a23f67cdb79b4 100644 --- a/api_docs/kbn_cloud_security_posture_common.mdx +++ b/api_docs/kbn_cloud_security_posture_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-common title: "@kbn/cloud-security-posture-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-common'] --- import kbnCloudSecurityPostureCommonObj from './kbn_cloud_security_posture_common.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_graph.mdx b/api_docs/kbn_cloud_security_posture_graph.mdx index d0f5ee08ffcd0..f1bdfc0b38bdf 100644 --- a/api_docs/kbn_cloud_security_posture_graph.mdx +++ b/api_docs/kbn_cloud_security_posture_graph.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-graph title: "@kbn/cloud-security-posture-graph" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-graph plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-graph'] --- import kbnCloudSecurityPostureGraphObj from './kbn_cloud_security_posture_graph.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index eec631d26133c..6a1a343ef74b5 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index a7e0747404d79..ec8e171e70066 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index d103626deb39d..5837de32bbe16 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 372a95a251f7a..00d80e702071d 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: 2025-01-20 +date: 2025-01-21 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 458f5d87a40bd..1e06b600c86ff 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: 2025-01-20 +date: 2025-01-21 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 c42a9e3d36989..fd2a8c9263982 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: 2025-01-20 +date: 2025-01-21 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 84432a973af3c..af07f7c6249b4 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: 2025-01-20 +date: 2025-01-21 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 a37b6987525d9..11e1fdccb8f73 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: 2025-01-20 +date: 2025-01-21 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_content_insights_public.mdx b/api_docs/kbn_content_management_content_insights_public.mdx index 9e79c5c2af26e..bc983bf71b42a 100644 --- a/api_docs/kbn_content_management_content_insights_public.mdx +++ b/api_docs/kbn_content_management_content_insights_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-public title: "@kbn/content-management-content-insights-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-public plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-public'] --- import kbnContentManagementContentInsightsPublicObj from './kbn_content_management_content_insights_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_server.mdx b/api_docs/kbn_content_management_content_insights_server.mdx index d16144819d3ae..268da68989d4d 100644 --- a/api_docs/kbn_content_management_content_insights_server.mdx +++ b/api_docs/kbn_content_management_content_insights_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-server title: "@kbn/content-management-content-insights-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-server'] --- import kbnContentManagementContentInsightsServerObj from './kbn_content_management_content_insights_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_common.mdx b/api_docs/kbn_content_management_favorites_common.mdx index 9728ba8dd1552..a8a4d536b4ee3 100644 --- a/api_docs/kbn_content_management_favorites_common.mdx +++ b/api_docs/kbn_content_management_favorites_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-common title: "@kbn/content-management-favorites-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-common'] --- import kbnContentManagementFavoritesCommonObj from './kbn_content_management_favorites_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_public.mdx b/api_docs/kbn_content_management_favorites_public.mdx index 9af68a4d80b82..ffc1406ee9bd6 100644 --- a/api_docs/kbn_content_management_favorites_public.mdx +++ b/api_docs/kbn_content_management_favorites_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-public title: "@kbn/content-management-favorites-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-public plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-public'] --- import kbnContentManagementFavoritesPublicObj from './kbn_content_management_favorites_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_server.mdx b/api_docs/kbn_content_management_favorites_server.mdx index 831c72bb6e0ff..00204dfb1f9a6 100644 --- a/api_docs/kbn_content_management_favorites_server.mdx +++ b/api_docs/kbn_content_management_favorites_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-server title: "@kbn/content-management-favorites-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-server'] --- import kbnContentManagementFavoritesServerObj from './kbn_content_management_favorites_server.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 94fa9baa4e901..923546ac63f70 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: 2025-01-20 +date: 2025-01-21 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 ed2c91ffef07b..9f88657e6642d 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: 2025-01-20 +date: 2025-01-21 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_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index aa4e723c9c269..0c4bc4671f710 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.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 cf3bf2f2fcf55..3434febac70e9 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: 2025-01-20 +date: 2025-01-21 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_user_profiles.mdx b/api_docs/kbn_content_management_user_profiles.mdx index 557a6a0c93aa2..9d4c612e6fdad 100644 --- a/api_docs/kbn_content_management_user_profiles.mdx +++ b/api_docs/kbn_content_management_user_profiles.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-user-profiles title: "@kbn/content-management-user-profiles" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-user-profiles plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-user-profiles'] --- import kbnContentManagementUserProfilesObj from './kbn_content_management_user_profiles.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 2175c9bbf516b..c1e4c7f099967 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: 2025-01-20 +date: 2025-01-21 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 8a5c4d95d726f..1765745772c8f 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: 2025-01-20 +date: 2025-01-21 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 0954b54ab469e..ccaf2295d2c2e 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: 2025-01-20 +date: 2025-01-21 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 45f306dadd1fd..a67c64791d747 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: 2025-01-20 +date: 2025-01-21 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 228935eb52b5a..89119365143a6 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: 2025-01-20 +date: 2025-01-21 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 ce61e393621e6..18637bca6207c 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: 2025-01-20 +date: 2025-01-21 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 2462efb49768c..0c344e8d79a3c 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: 2025-01-20 +date: 2025-01-21 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 8bc2ba1249a11..36a2ba90c2be1 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: 2025-01-20 +date: 2025-01-21 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 4772ae07f0fde..31c5669e26ee4 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: 2025-01-20 +date: 2025-01-21 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 1f5a406257269..97aba3647ae23 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: 2025-01-20 +date: 2025-01-21 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 0461ad7270c12..ef3e64f0a6280 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: 2025-01-20 +date: 2025-01-21 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 7534220a8b91c..1c24df471cf8f 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: 2025-01-20 +date: 2025-01-21 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 9bb33c126c10a..6b93038ba5999 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: 2025-01-20 +date: 2025-01-21 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 86b5fbc34b5bc..bdd9334565e3a 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: 2025-01-20 +date: 2025-01-21 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 508161812c1e2..5b43b660349a1 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: 2025-01-20 +date: 2025-01-21 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 d3ca5372d7b23..90322fff8bf3b 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: 2025-01-20 +date: 2025-01-21 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 2e40ef052d09a..253c55f82de99 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: 2025-01-20 +date: 2025-01-21 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 b47dad8339274..75f7a8c2bbffc 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: 2025-01-20 +date: 2025-01-21 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 7bcb8d8acdc92..e96bffabb4eee 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: 2025-01-20 +date: 2025-01-21 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 3a724cf347bf4..01d59ef4d5204 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: 2025-01-20 +date: 2025-01-21 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 d9f7703eb41b5..9c98db2250a5e 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: 2025-01-20 +date: 2025-01-21 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 b1d8d7b8390aa..297a87130c84a 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: 2025-01-20 +date: 2025-01-21 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 3699eb10ff369..23edc8ceed427 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: 2025-01-20 +date: 2025-01-21 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 f4823bc835bd5..aa57371ebbc83 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: 2025-01-20 +date: 2025-01-21 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 1f7451a49924a..0c2de4b7d40c5 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: 2025-01-20 +date: 2025-01-21 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 133530bd12733..c04597ea89d85 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: 2025-01-20 +date: 2025-01-21 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 b8501c5691f9c..34ab3e5b66426 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: 2025-01-20 +date: 2025-01-21 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 630fed1c95bc4..11eadffa940c1 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: 2025-01-20 +date: 2025-01-21 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 8b085daf5e3ca..dc2b7f449a4a2 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: 2025-01-20 +date: 2025-01-21 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 d72c11fab7c0d..a0883bed6d92d 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: 2025-01-20 +date: 2025-01-21 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 ae0c5f25e13c6..d57cc6ddf5a9a 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: 2025-01-20 +date: 2025-01-21 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 e9cbdc779be97..a327c2cd12107 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: 2025-01-20 +date: 2025-01-21 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 73d593070c548..68911fbe31e18 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: 2025-01-20 +date: 2025-01-21 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 edb42179933e4..af1a7a0f8a9cf 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: 2025-01-20 +date: 2025-01-21 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 ef9b2b8096c56..7b379d04f6782 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: 2025-01-20 +date: 2025-01-21 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 ede3bceac5cec..dfb3a70ef89db 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: 2025-01-20 +date: 2025-01-21 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 bd2fb782ddb32..9ea44b91d2432 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: 2025-01-20 +date: 2025-01-21 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 ac0b6ad4340f0..6194906273b15 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: 2025-01-20 +date: 2025-01-21 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 c51c9262b521f..c62319895aa2a 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: 2025-01-20 +date: 2025-01-21 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 c96e3ade246f8..7067695de3877 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: 2025-01-20 +date: 2025-01-21 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 7563c11a0f066..e6b175a4d402d 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: 2025-01-20 +date: 2025-01-21 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 1cb64914b43cf..32f6ba579e9d8 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: 2025-01-20 +date: 2025-01-21 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 26d60a95b00cd..6771f6ccca5ee 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: 2025-01-20 +date: 2025-01-21 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 7fdf05c8521ae..b7155a13e5b83 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: 2025-01-20 +date: 2025-01-21 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 722e3e4f3453f..b8da0e0ece380 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: 2025-01-20 +date: 2025-01-21 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 0347877357f78..89183e4a512a1 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: 2025-01-20 +date: 2025-01-21 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 8992e773e9482..9c6d1a8a78775 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: 2025-01-20 +date: 2025-01-21 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 19a88605fb597..32ba3698562c2 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: 2025-01-20 +date: 2025-01-21 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 e4c4036924a6c..be8ee956b2813 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: 2025-01-20 +date: 2025-01-21 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 c0ff63b7bbd86..454d4f8173185 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: 2025-01-20 +date: 2025-01-21 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 dc36435629311..3b8f2726aca12 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: 2025-01-20 +date: 2025-01-21 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 024761c7ea5f3..9c798350811ef 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: 2025-01-20 +date: 2025-01-21 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 8ea017d6b71ad..38e6e06d0ab40 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: 2025-01-20 +date: 2025-01-21 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 3ac61d1f2ba48..824be56073304 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: 2025-01-20 +date: 2025-01-21 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 78e719d51ce37..9a496aea93559 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: 2025-01-20 +date: 2025-01-21 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 855d8c4795188..2978a4dd55d7f 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: 2025-01-20 +date: 2025-01-21 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 4323827a5c30e..08b04896c5e5b 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: 2025-01-20 +date: 2025-01-21 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 d3504aab01994..a2cf06f0e695b 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: 2025-01-20 +date: 2025-01-21 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 83bfae57cdb38..cda98044653d7 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: 2025-01-20 +date: 2025-01-21 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_feature_flags_browser.mdx b/api_docs/kbn_core_feature_flags_browser.mdx index e1e7e3b6c6320..de360c3aea4c3 100644 --- a/api_docs/kbn_core_feature_flags_browser.mdx +++ b/api_docs/kbn_core_feature_flags_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser title: "@kbn/core-feature-flags-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser'] --- import kbnCoreFeatureFlagsBrowserObj from './kbn_core_feature_flags_browser.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_internal.mdx b/api_docs/kbn_core_feature_flags_browser_internal.mdx index 5fa6f7ec385b3..e3825e159d85d 100644 --- a/api_docs/kbn_core_feature_flags_browser_internal.mdx +++ b/api_docs/kbn_core_feature_flags_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-internal title: "@kbn/core-feature-flags-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-internal plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-internal'] --- import kbnCoreFeatureFlagsBrowserInternalObj from './kbn_core_feature_flags_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_mocks.mdx b/api_docs/kbn_core_feature_flags_browser_mocks.mdx index 7b472520442be..738d54ece058c 100644 --- a/api_docs/kbn_core_feature_flags_browser_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-mocks title: "@kbn/core-feature-flags-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-mocks plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-mocks'] --- import kbnCoreFeatureFlagsBrowserMocksObj from './kbn_core_feature_flags_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server.mdx b/api_docs/kbn_core_feature_flags_server.mdx index 2b4ace3d53ce6..fc71d7ff63b4c 100644 --- a/api_docs/kbn_core_feature_flags_server.mdx +++ b/api_docs/kbn_core_feature_flags_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server title: "@kbn/core-feature-flags-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server'] --- import kbnCoreFeatureFlagsServerObj from './kbn_core_feature_flags_server.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_internal.mdx b/api_docs/kbn_core_feature_flags_server_internal.mdx index 82c628f9e1c88..b350091b46cec 100644 --- a/api_docs/kbn_core_feature_flags_server_internal.mdx +++ b/api_docs/kbn_core_feature_flags_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-internal title: "@kbn/core-feature-flags-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-internal plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-internal'] --- import kbnCoreFeatureFlagsServerInternalObj from './kbn_core_feature_flags_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_mocks.mdx b/api_docs/kbn_core_feature_flags_server_mocks.mdx index 9890b085b4a70..a6c321ec3bf8c 100644 --- a/api_docs/kbn_core_feature_flags_server_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-mocks title: "@kbn/core-feature-flags-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-mocks plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-mocks'] --- import kbnCoreFeatureFlagsServerMocksObj from './kbn_core_feature_flags_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 9179b07741146..f96a0b0cca938 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: 2025-01-20 +date: 2025-01-21 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 06159c5ead3ec..5e66efa5874ab 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: 2025-01-20 +date: 2025-01-21 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 53fd54b30cda7..08d4ab9498515 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: 2025-01-20 +date: 2025-01-21 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 7f80101004bce..9e7e57043e6c5 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: 2025-01-20 +date: 2025-01-21 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 d58df6340e037..568182da99cba 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: 2025-01-20 +date: 2025-01-21 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 8e1a47001a493..dbef6f824952b 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: 2025-01-20 +date: 2025-01-21 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 11709d4d6bead..83b03e1d87f67 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: 2025-01-20 +date: 2025-01-21 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 378c97f30d754..753547f3122ce 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: 2025-01-20 +date: 2025-01-21 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 30e63ad5c07f8..2de300a0d86fb 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: 2025-01-20 +date: 2025-01-21 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.devdocs.json b/api_docs/kbn_core_http_router_server_internal.devdocs.json index f30f0747890c0..8fa0e89019c52 100644 --- a/api_docs/kbn_core_http_router_server_internal.devdocs.json +++ b/api_docs/kbn_core_http_router_server_internal.devdocs.json @@ -65,7 +65,7 @@ "label": "from", "description": [], "signature": [ - "({ router, log, defaultHandlerResolutionStrategy, isDev, useVersionResolutionStrategyForInternalPaths, }: ", + "({ router, log, defaultHandlerResolutionStrategy, env, useVersionResolutionStrategyForInternalPaths, }: ", "VersionedRouterArgs", ") => ", "CoreVersionedRouter" @@ -79,7 +79,7 @@ "id": "def-server.CoreVersionedRouter.from.$1", "type": "Object", "tags": [], - "label": "{\n router,\n log,\n defaultHandlerResolutionStrategy,\n isDev,\n useVersionResolutionStrategyForInternalPaths,\n }", + "label": "{\n router,\n log,\n defaultHandlerResolutionStrategy,\n env,\n useVersionResolutionStrategyForInternalPaths,\n }", "description": [], "signature": [ "VersionedRouterArgs" @@ -569,6 +569,56 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/core-http-router-server-internal", + "id": "def-server.getWarningHeaderMessageFromRouteDeprecation", + "type": "Function", + "tags": [], + "label": "getWarningHeaderMessageFromRouteDeprecation", + "description": [], + "signature": [ + "(deprecationObject: ", + "RouteDeprecationInfo", + ", kibanaVersion: string) => string" + ], + "path": "src/core/packages/http/router-server-internal/src/get_warning_header_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-http-router-server-internal", + "id": "def-server.getWarningHeaderMessageFromRouteDeprecation.$1", + "type": "Object", + "tags": [], + "label": "deprecationObject", + "description": [], + "signature": [ + "RouteDeprecationInfo" + ], + "path": "src/core/packages/http/router-server-internal/src/get_warning_header_message.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-http-router-server-internal", + "id": "def-server.getWarningHeaderMessageFromRouteDeprecation.$2", + "type": "string", + "tags": [], + "label": "kibanaVersion", + "description": [], + "signature": [ + "string" + ], + "path": "src/core/packages/http/router-server-internal/src/get_warning_header_message.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/core-http-router-server-internal", "id": "def-server.isSafeMethod", diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 723dbba646a53..355c434e41a95 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 54 | 7 | 54 | 0 | +| 57 | 7 | 57 | 0 | ## Server diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 083d3536b1e92..b927e3d8aad52 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json index 669c4c259d40f..5460beb36c312 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -4060,6 +4060,10 @@ "plugin": "searchPlayground", "path": "x-pack/solutions/search/plugins/search_playground/server/routes.ts" }, + { + "plugin": "searchSynonyms", + "path": "x-pack/solutions/search/plugins/search_synonyms/server/routes.ts" + }, { "plugin": "serverlessSearch", "path": "x-pack/solutions/search/plugins/serverless_search/server/routes/api_key_routes.ts" @@ -9992,6 +9996,23 @@ "path": "src/core/packages/http/server/src/lifecycle/on_pre_response.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.OnPreResponseInfo.headers", + "type": "CompoundType", + "tags": [], + "label": "headers", + "description": [ + "So any pre response handler can check the headers if needed, to avoid an overwrite for example" + ], + "signature": [ + "ResponseHeaders", + " | undefined" + ], + "path": "src/core/packages/http/server/src/lifecycle/on_pre_response.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -11424,7 +11445,7 @@ "tags": [], "label": "message", "description": [ - "\nThe description message to be displayed for the deprecation.\nCheck the README for writing deprecations in `src/core/server/deprecations/README.mdx`" + "\nThe description message to be displayed for the deprecation.\nThis will also appear in the '299 Kibana-{version} {message}' header warning when someone calls the route.\nKeep the message concise to avoid long header values. It is recommended to keep the message under 255 characters.\nCheck the README for writing deprecations in `src/core/server/deprecations/README.mdx`" ], "signature": [ "string | undefined" @@ -14877,35 +14898,35 @@ }, { "plugin": "securitySolution", - "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/perform_rule_upgrade_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.ts" }, { "plugin": "securitySolution", - "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/export_rules/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/create_legacy_notification/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/perform_rule_upgrade_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/export_rules/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/create_legacy_notification/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/route.ts" }, { "plugin": "securitySolution", diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 8f4730f000aed..685dcd6bed670 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 568 | 2 | 243 | 0 | +| 569 | 2 | 243 | 0 | ## Server diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index c79dc180c4cde..3628bc856ce0c 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: 2025-01-20 +date: 2025-01-21 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 247c7947579cd..2aba169f9d520 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: 2025-01-20 +date: 2025-01-21 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_http_server_utils.mdx b/api_docs/kbn_core_http_server_utils.mdx index 31598c055f7ac..81af6b5a3959b 100644 --- a/api_docs/kbn_core_http_server_utils.mdx +++ b/api_docs/kbn_core_http_server_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-utils title: "@kbn/core-http-server-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-utils'] --- import kbnCoreHttpServerUtilsObj from './kbn_core_http_server_utils.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 6c5dd2db1fac6..7753e3b75ea51 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: 2025-01-20 +date: 2025-01-21 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 b890ee9bbbb65..98cda3564c991 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: 2025-01-20 +date: 2025-01-21 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 3918978f14118..6182d4c772bfe 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: 2025-01-20 +date: 2025-01-21 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 7a9b1446685af..d42df1d62a841 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: 2025-01-20 +date: 2025-01-21 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 baf77173d4c02..29f0d89291b2d 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: 2025-01-20 +date: 2025-01-21 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 243ca76104535..62fec3e508f4f 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: 2025-01-20 +date: 2025-01-21 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 739d8940d8efa..06a127b0a8659 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: 2025-01-20 +date: 2025-01-21 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 36edf3a58ab18..06d5c99f3196c 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: 2025-01-20 +date: 2025-01-21 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 3f12640926d44..13e670638190a 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: 2025-01-20 +date: 2025-01-21 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 8389875699e50..e8990bd7fe99b 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: 2025-01-20 +date: 2025-01-21 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 77f2bd449a633..a15148ec01ab4 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: 2025-01-20 +date: 2025-01-21 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 f50d3563d08cc..30a31d4659319 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: 2025-01-20 +date: 2025-01-21 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 aaa1eabc61d6c..e1ef99fcef2bd 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: 2025-01-20 +date: 2025-01-21 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 0efa5ee3d50e9..1cac81a5615bb 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: 2025-01-20 +date: 2025-01-21 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 23011828a0751..3db69765702d9 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: 2025-01-20 +date: 2025-01-21 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 5be1e1c8dfcbd..7c7eb32a581d7 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: 2025-01-20 +date: 2025-01-21 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 0c686eee0bc8c..d940ebf4dc0eb 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: 2025-01-20 +date: 2025-01-21 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 482e79ca2098f..9272cf5693069 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: 2025-01-20 +date: 2025-01-21 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 7d00d29ebf7b0..3753e351b1c35 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: 2025-01-20 +date: 2025-01-21 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 2e575c13c584e..0df34e08e40cc 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: 2025-01-20 +date: 2025-01-21 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 213f7aab77eb8..5592c354a8940 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: 2025-01-20 +date: 2025-01-21 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 0ce581177e8c2..9f44dc6309e29 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: 2025-01-20 +date: 2025-01-21 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 c33d1adc65f69..5b70f981e2223 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: 2025-01-20 +date: 2025-01-21 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 cf6f7c796a8f5..d3dcf9af582eb 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: 2025-01-20 +date: 2025-01-21 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 4b107db9b49c1..080573225c73b 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: 2025-01-20 +date: 2025-01-21 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 541a1d503d702..b956befaa93e2 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: 2025-01-20 +date: 2025-01-21 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 16695a72c5ea1..2b9eaad882f9c 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: 2025-01-20 +date: 2025-01-21 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 d142726bf2b86..27cfc2a791282 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: 2025-01-20 +date: 2025-01-21 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 40795657c4224..6fbfdbceceb10 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: 2025-01-20 +date: 2025-01-21 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 cd2df10b4aba0..ebc6700293865 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: 2025-01-20 +date: 2025-01-21 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 74140a0887c63..3a92541f914d2 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: 2025-01-20 +date: 2025-01-21 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 b3f4d1a0e37ac..cceb57c3795c9 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: 2025-01-20 +date: 2025-01-21 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 848a7c967f0bd..3b4d155dc9943 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: 2025-01-20 +date: 2025-01-21 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 7dd6e37f41998..0f5f26c4c3dbb 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 5671c6635a5cc..0a590bbb30d15 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 761ee70dcbfab..0c568efab322f 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index dbaed9ccb2c32..7767bf61b0223 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: 2025-01-20 +date: 2025-01-21 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 956dbe4422dd1..cc33cf7efdd4a 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: 2025-01-20 +date: 2025-01-21 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 0301add004bb6..e881cdebbc126 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: 2025-01-20 +date: 2025-01-21 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 ff27c55c996e7..512788a83b471 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: 2025-01-20 +date: 2025-01-21 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.mdx b/api_docs/kbn_core_rendering_browser.mdx index a3ccc40c10ad0..b6d7dc64819cb 100644 --- a/api_docs/kbn_core_rendering_browser.mdx +++ b/api_docs/kbn_core_rendering_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser title: "@kbn/core-rendering-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser'] --- import kbnCoreRenderingBrowserObj from './kbn_core_rendering_browser.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 093cf66f4bbf8..3988a8e66e8c8 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: 2025-01-20 +date: 2025-01-21 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 010903b6331b1..7ce537543bce4 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: 2025-01-20 +date: 2025-01-21 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 c75fbee62f418..1f96538d9dfb4 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: 2025-01-20 +date: 2025-01-21 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 f581917bd34ed..2443294f4b9bc 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: 2025-01-20 +date: 2025-01-21 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 8ce56f7410205..c418826987165 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: 2025-01-20 +date: 2025-01-21 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 d7e0548c28ffe..51c5ae3525760 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: 2025-01-20 +date: 2025-01-21 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 1711b06e0f24c..2e20765155501 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: 2025-01-20 +date: 2025-01-21 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 cd79a56351f6a..d24791fc11887 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: 2025-01-20 +date: 2025-01-21 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 78f2d2835bdbb..a419ebbca4489 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: 2025-01-20 +date: 2025-01-21 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 53a20b04a4bc1..45a800a4c4d53 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: 2025-01-20 +date: 2025-01-21 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 d08bab119aea5..3ef2242502e23 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: 2025-01-20 +date: 2025-01-21 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 7f1274c012914..4b042d20fd952 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: 2025-01-20 +date: 2025-01-21 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 1546c7efc4ef6..c3abffff6f5a1 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: 2025-01-20 +date: 2025-01-21 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 12a9a4d7b7f2a..5f25340946a38 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: 2025-01-20 +date: 2025-01-21 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 619c082fa6453..fd6e4c6ddc84b 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: 2025-01-20 +date: 2025-01-21 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 7ca460eb69cb7..e35be7a83e9b0 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: 2025-01-20 +date: 2025-01-21 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 a4c37207030ae..eb152b75fc50f 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: 2025-01-20 +date: 2025-01-21 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 a77a6aa8683fe..7e1cf2d4b66ad 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: 2025-01-20 +date: 2025-01-21 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 dc0ae1945c4ce..991e91edc1815 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: 2025-01-20 +date: 2025-01-21 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 4687b30e94388..6038cf799222c 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: 2025-01-20 +date: 2025-01-21 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 84b1c197a9039..b56a6c965e86c 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: 2025-01-20 +date: 2025-01-21 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_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index 9f80901dd9d96..537e18beba232 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index 76be522922f59..f7a2a6cbda7c6 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index 0bafc381b48a4..bf077b4548cdf 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index f3ea8cfd62cb4..9205797788cc6 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index dabab9027e473..13b09a8372d86 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index 23b4233b6080c..5a66332ab1662 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index ca94dd785a8a3..f902590260a22 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index ed3a8aa60da76..8c87c3b4f8b82 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: 2025-01-20 +date: 2025-01-21 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_server.mdx b/api_docs/kbn_core_status_server.mdx index 8d3a9fa78a7e0..f4c1e7b15f1e8 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: 2025-01-20 +date: 2025-01-21 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 5906dc6dad034..d6a1602f30d73 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: 2025-01-20 +date: 2025-01-21 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 89868e6b96041..33d7779efa69d 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: 2025-01-20 +date: 2025-01-21 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 111c1ba01e2d6..5951226911b6f 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: 2025-01-20 +date: 2025-01-21 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 dce30e704e62d..fb6dfbf75e07e 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: 2025-01-20 +date: 2025-01-21 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 25505915567b6..7844fdba1445f 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index f5ab6da3c296a..aa7c3be019f4f 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index f796db62e50e0..a8b5a1c4bd9d7 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: 2025-01-20 +date: 2025-01-21 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 e9f4384296f4e..386e390fd7aee 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: 2025-01-20 +date: 2025-01-21 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 7700593fa1c66..70b74cbe21919 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: 2025-01-20 +date: 2025-01-21 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 5d723ab6d7bd4..b36b420fc7f26 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: 2025-01-20 +date: 2025-01-21 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 e1fdfc6a43295..a6df82b890091 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: 2025-01-20 +date: 2025-01-21 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 7808fd267e707..57647aa6241f0 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: 2025-01-20 +date: 2025-01-21 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 b8a23f602b759..053c694e488aa 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: 2025-01-20 +date: 2025-01-21 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 42677115f76b6..8e6ab60bbc687 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: 2025-01-20 +date: 2025-01-21 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.devdocs.json b/api_docs/kbn_core_ui_settings_common.devdocs.json index 4fba867fa5ccb..316b1a99db4dc 100644 --- a/api_docs/kbn_core_ui_settings_common.devdocs.json +++ b/api_docs/kbn_core_ui_settings_common.devdocs.json @@ -96,7 +96,7 @@ "label": "parseThemeNameValue", "description": [], "signature": [ - "(value: unknown) => string" + "(value: unknown) => \"amsterdam\" | \"borealis\"" ], "path": "src/core/packages/ui-settings/common/src/theme.ts", "deprecated": false, @@ -644,7 +644,7 @@ "label": "DEFAULT_THEME_NAME", "description": [], "signature": [ - "\"amsterdam\"" + "\"borealis\"" ], "path": "src/core/packages/ui-settings/common/src/theme.ts", "deprecated": false, @@ -683,21 +683,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/core-ui-settings-common", - "id": "def-common.SUPPORTED_THEME_NAMES", - "type": "Array", - "tags": [], - "label": "SUPPORTED_THEME_NAMES", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/core/packages/ui-settings/common/src/theme.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/core-ui-settings-common", "id": "def-common.ThemeName", @@ -706,7 +691,7 @@ "label": "ThemeName", "description": [], "signature": [ - "string" + "\"amsterdam\" | \"borealis\"" ], "path": "src/core/packages/ui-settings/common/src/theme.ts", "deprecated": false, @@ -811,6 +796,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/core-ui-settings-common", + "id": "def-common.SUPPORTED_THEME_NAMES", + "type": "Object", + "tags": [], + "label": "SUPPORTED_THEME_NAMES", + "description": [], + "signature": [ + "readonly [\"amsterdam\", \"borealis\"]" + ], + "path": "src/core/packages/ui-settings/common/src/theme.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/core-ui-settings-common", "id": "def-common.SUPPORTED_THEME_TAGS", diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index a1f1637ad71e7..160173150254a 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: 2025-01-20 +date: 2025-01-21 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 7a6ac413537f0..2bf9cbcd09058 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: 2025-01-20 +date: 2025-01-21 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.devdocs.json b/api_docs/kbn_core_ui_settings_server_internal.devdocs.json index d42798073bd05..c4eae145b9fc6 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.devdocs.json +++ b/api_docs/kbn_core_ui_settings_server_internal.devdocs.json @@ -321,7 +321,7 @@ "section": "def-common.Type", "text": "Type" }, - " | undefined>; }>" + " | undefined>; }>" ], "path": "src/core/packages/ui-settings/server-internal/src/ui_settings_config.ts", "deprecated": false, diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 018c49b8f0caa..d74660cc520e3 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: 2025-01-20 +date: 2025-01-21 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 e9ca4849b4d96..4cc09dde99d97 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: 2025-01-20 +date: 2025-01-21 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 3fe59b4227f5f..7804b0a708e2a 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: 2025-01-20 +date: 2025-01-21 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 c5406c8910f83..0536f47171248 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: 2025-01-20 +date: 2025-01-21 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 dd38c7e031473..bc537fce497cd 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: 2025-01-20 +date: 2025-01-21 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_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index d21780c5752f8..a2b4424381f9f 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index 50e66b5372ea1..e3c509db48f56 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index ddd6b8da4284d..b48833992dd77 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index 1183e15e007bc..26e206955e77f 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index f52785c4bc271..f7dacd221663c 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index acf9576dd5faf..333098bce0dc5 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index b74c3f84b7bcf..068f44b0c792d 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_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 dc10c1a04c879..836fdc6667814 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: 2025-01-20 +date: 2025-01-21 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_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index ffb0801dbd7bc..94dc56d031259 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: 2025-01-20 +date: 2025-01-21 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 4a07ffb84b69a..3cdf0a43ef5f2 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: 2025-01-20 +date: 2025-01-21 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 bf41b2d5fd73d..b1ce962802a45 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index f9fa64493f2d5..c99d49903dd26 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 9ed2438f808e1..7ca730f986987 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index f567e2fa87610..6a1fe9460ed04 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index d0ffe47eeb33d..faf50a208a343 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 794508f8c76a4..a8f63d5518550 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index fc5f35bb8f1b3..50a972b81cdf4 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.devdocs.json b/api_docs/kbn_data_view_utils.devdocs.json index 63cde7b6efec9..d6d84647037c5 100644 --- a/api_docs/kbn_data_view_utils.devdocs.json +++ b/api_docs/kbn_data_view_utils.devdocs.json @@ -83,7 +83,7 @@ "label": "createRegExpPatternFrom", "description": [], "signature": [ - "(basePatterns: string | string[]) => RegExp" + "(basePatterns: string | string[], selector: Selector) => RegExp" ], "path": "src/platform/packages/shared/kbn-data-view-utils/src/utils/create_regexp_pattern_from.ts", "deprecated": false, @@ -103,6 +103,21 @@ "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "@kbn/data-view-utils", + "id": "def-common.createRegExpPatternFrom.$2", + "type": "CompoundType", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "Selector" + ], + "path": "src/platform/packages/shared/kbn-data-view-utils/src/utils/create_regexp_pattern_from.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true } ], "returnComment": [], diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index 55ad19de2515b..d9130e46abc0c 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.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 | |-------------------|-----------|------------------------|-----------------| -| 7 | 0 | 5 | 0 | +| 8 | 0 | 6 | 0 | ## Common diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 0687e4ab7fb93..e89fbe2d743e4 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: 2025-01-20 +date: 2025-01-21 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 a4d712fe446ab..90c3264104b0c 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: 2025-01-20 +date: 2025-01-21 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 6f6f9f9677c11..34d1127623b33 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index 7aaf1294e9743..9b0121134ab51 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 4b235c1555e46..0508f83c04c7d 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: 2025-01-20 +date: 2025-01-21 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 6020cd4e84f94..cdcb6ce205f97 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: 2025-01-20 +date: 2025-01-21 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 bbac9cf5270fb..7da164fec6382 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: 2025-01-20 +date: 2025-01-21 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 3a3670d1e23fe..2078527870d3c 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index 4a8937c1e5e34..1b4ff48536f38 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index 978ee3fd1fe74..1034b61d46a6a 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index ea3aedd59764e..88f316d341330 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: 2025-01-20 +date: 2025-01-21 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 4ad5a2bdda73d..65b96212a5ffd 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: 2025-01-20 +date: 2025-01-21 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 b54f16c5979c0..2b9a591fa919e 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: 2025-01-20 +date: 2025-01-21 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 c219dfd653ccf..1b2df0f169484 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: 2025-01-20 +date: 2025-01-21 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 a92bfebd764b2..c6b832645859a 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: 2025-01-20 +date: 2025-01-21 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 b22ea8fcc5028..34478bd54a978 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: 2025-01-20 +date: 2025-01-21 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 3f9ad830a4652..c2b97cb040a19 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: 2025-01-20 +date: 2025-01-21 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 e5f7c8957f0f4..e93a351a2b1bc 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_contextual_components.mdx b/api_docs/kbn_discover_contextual_components.mdx index 030bfafe5d367..9f810a0cf8d24 100644 --- a/api_docs/kbn_discover_contextual_components.mdx +++ b/api_docs/kbn_discover_contextual_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-contextual-components title: "@kbn/discover-contextual-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-contextual-components plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-contextual-components'] --- import kbnDiscoverContextualComponentsObj from './kbn_discover_contextual_components.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 98542ce7c9715..b61521c7124b5 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index e90798e1f6646..7c2364ebcff03 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: 2025-01-20 +date: 2025-01-21 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 f7039488fe47d..cfa7287d47f8c 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: 2025-01-20 +date: 2025-01-21 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 0e89767742f33..9fba031a66284 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: 2025-01-20 +date: 2025-01-21 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 55cd2cc13ce68..f23c088dc6b10 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index d2ccad9b3114d..024b80b881947 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: 2025-01-20 +date: 2025-01-21 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_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index c17a0ac01c0a4..69bfd5febc3a2 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 924b6b441e1ee..f8a53049d4a7f 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.devdocs.json b/api_docs/kbn_elastic_assistant_common.devdocs.json index 2d07ae8be637a..3f03333bc8172 100644 --- a/api_docs/kbn_elastic_assistant_common.devdocs.json +++ b/api_docs/kbn_elastic_assistant_common.devdocs.json @@ -1703,7 +1703,7 @@ "label": "ConversationUpdateProps", "description": [], "signature": [ - "{ id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" + "{ id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, @@ -3645,7 +3645,7 @@ "label": "PerformBulkActionRequestBody", "description": [], "signature": [ - "{ create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" + "{ create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, @@ -3660,7 +3660,7 @@ "label": "PerformBulkActionRequestBodyInput", "description": [], "signature": [ - "{ create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" + "{ create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, @@ -4131,7 +4131,7 @@ "label": "UpdateConversationRequestBody", "description": [], "signature": [ - "{ id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" + "{ id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, @@ -4146,7 +4146,7 @@ "label": "UpdateConversationRequestBodyInput", "description": [], "signature": [ - "{ id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" + "{ id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, @@ -5009,7 +5009,7 @@ "label": "ConversationUpdateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, @@ -6301,7 +6301,7 @@ "label": "PerformBulkActionRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ delete: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>>; create: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; update: Zod.ZodOptional; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }>" + "Zod.ZodObject<{ delete: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>>; create: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; update: Zod.ZodOptional; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }>" ], "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, @@ -6676,7 +6676,7 @@ "label": "UpdateConversationRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index ecc439e774df1..5db7c27142bea 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_entities_schema.mdx b/api_docs/kbn_entities_schema.mdx index c5acf8adc99e7..99a922195572c 100644 --- a/api_docs/kbn_entities_schema.mdx +++ b/api_docs/kbn_entities_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-entities-schema title: "@kbn/entities-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/entities-schema plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/entities-schema'] --- import kbnEntitiesSchemaObj from './kbn_entities_schema.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 92a19383b9831..d58494d1ff8d3 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: 2025-01-20 +date: 2025-01-21 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 9cb11ef84807c..aa39f1a665ca3 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: 2025-01-20 +date: 2025-01-21 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 b743d6a0c200e..4df8aadff37a9 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 462670087c06c..716bdee1a22f7 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 2cb6442e34d91..f5b4976f91d21 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: 2025-01-20 +date: 2025-01-21 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 0f5b267426a49..4fc266dc32173 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index 305fd7b8a9d6d..41079d3debe32 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_editor.mdx b/api_docs/kbn_esql_editor.mdx index f774ae5beab8a..bd5f26991a297 100644 --- a/api_docs/kbn_esql_editor.mdx +++ b/api_docs/kbn_esql_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-editor title: "@kbn/esql-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-editor plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-editor'] --- import kbnEsqlEditorObj from './kbn_esql_editor.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index 06fc8051765b3..916b444f257c4 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index f4c9b4762dc90..6f3990f73e994 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 0d696f63976db..1dbbb90b0a7f8 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: 2025-01-20 +date: 2025-01-21 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 4af01680339bc..94961d6ef688b 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: 2025-01-20 +date: 2025-01-21 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 16d238f91a131..903a6c9a83356 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: 2025-01-20 +date: 2025-01-21 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 8928dff4ddab5..499c3443be87c 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 1ecadfdc5a140..36613676dc761 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index d45b08c53a2ab..5a01a1f8dc5d8 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: 2025-01-20 +date: 2025-01-21 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 1ba586070b1bd..29a2bac582ec3 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: 2025-01-20 +date: 2025-01-21 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_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 7a9eccdc16d84..4b6a69728692b 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_gen_ai_functional_testing.mdx b/api_docs/kbn_gen_ai_functional_testing.mdx index d4f3b1e272653..dd0c6e047ac11 100644 --- a/api_docs/kbn_gen_ai_functional_testing.mdx +++ b/api_docs/kbn_gen_ai_functional_testing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-gen-ai-functional-testing title: "@kbn/gen-ai-functional-testing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/gen-ai-functional-testing plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/gen-ai-functional-testing'] --- import kbnGenAiFunctionalTestingObj from './kbn_gen_ai_functional_testing.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 179a15a319062..fe29936649e2b 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: 2025-01-20 +date: 2025-01-21 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 0408a0656ac4e..fe419f484e40f 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: 2025-01-20 +date: 2025-01-21 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 dfb33236908c1..91e4437429414 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_grid_layout.mdx b/api_docs/kbn_grid_layout.mdx index 1b7a3184ac949..85c49e8cc8edc 100644 --- a/api_docs/kbn_grid_layout.mdx +++ b/api_docs/kbn_grid_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grid-layout title: "@kbn/grid-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grid-layout plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grid-layout'] --- import kbnGridLayoutObj from './kbn_grid_layout.devdocs.json'; diff --git a/api_docs/kbn_grouping.mdx b/api_docs/kbn_grouping.mdx index 5cdca1cb4741e..d76d611c1bf2e 100644 --- a/api_docs/kbn_grouping.mdx +++ b/api_docs/kbn_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grouping title: "@kbn/grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grouping plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grouping'] --- import kbnGroupingObj from './kbn_grouping.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 240af3f7fcb1d..7c8bb6e05c302 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: 2025-01-20 +date: 2025-01-21 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 442d2a4047b1b..40e8d0abbd58a 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: 2025-01-20 +date: 2025-01-21 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 db0cd0c218343..32137105a0443 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: 2025-01-20 +date: 2025-01-21 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 4359a9d6cf4e2..59abb50460fdc 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: 2025-01-20 +date: 2025-01-21 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 f26b34e69de7a..da4cee8e2344c 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: 2025-01-20 +date: 2025-01-21 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 b9502e9aa4a8d..8370637bba9f4 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: 2025-01-20 +date: 2025-01-21 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 e20da2f7a205d..7df566eeaf61f 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: 2025-01-20 +date: 2025-01-21 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 2bd70f4e4eaca..1ea23bc8abe91 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: 2025-01-20 +date: 2025-01-21 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 55dc4f09880e6..9ac6e388cf1a5 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_adapter.mdx b/api_docs/kbn_index_adapter.mdx index a37561c9ba77f..fb3a724647011 100644 --- a/api_docs/kbn_index_adapter.mdx +++ b/api_docs/kbn_index_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-adapter title: "@kbn/index-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-adapter plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-adapter'] --- import kbnIndexAdapterObj from './kbn_index_adapter.devdocs.json'; diff --git a/api_docs/kbn_index_lifecycle_management_common_shared.mdx b/api_docs/kbn_index_lifecycle_management_common_shared.mdx index 1e0cc5427e447..a6cd1f4f96c80 100644 --- a/api_docs/kbn_index_lifecycle_management_common_shared.mdx +++ b/api_docs/kbn_index_lifecycle_management_common_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-lifecycle-management-common-shared title: "@kbn/index-lifecycle-management-common-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-lifecycle-management-common-shared plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-lifecycle-management-common-shared'] --- import kbnIndexLifecycleManagementCommonSharedObj from './kbn_index_lifecycle_management_common_shared.devdocs.json'; diff --git a/api_docs/kbn_index_management_shared_types.mdx b/api_docs/kbn_index_management_shared_types.mdx index b0af49acbb3a1..98af5c96c79b9 100644 --- a/api_docs/kbn_index_management_shared_types.mdx +++ b/api_docs/kbn_index_management_shared_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management-shared-types title: "@kbn/index-management-shared-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management-shared-types plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management-shared-types'] --- import kbnIndexManagementSharedTypesObj from './kbn_index_management_shared_types.devdocs.json'; diff --git a/api_docs/kbn_inference_common.mdx b/api_docs/kbn_inference_common.mdx index 1489482dd6d9f..7664930b59ea0 100644 --- a/api_docs/kbn_inference_common.mdx +++ b/api_docs/kbn_inference_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-common title: "@kbn/inference-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-common'] --- import kbnInferenceCommonObj from './kbn_inference_common.devdocs.json'; diff --git a/api_docs/kbn_inference_endpoint_ui_common.mdx b/api_docs/kbn_inference_endpoint_ui_common.mdx index 40a554dc6eb90..8e3e4a6d3495d 100644 --- a/api_docs/kbn_inference_endpoint_ui_common.mdx +++ b/api_docs/kbn_inference_endpoint_ui_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-endpoint-ui-common title: "@kbn/inference-endpoint-ui-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-endpoint-ui-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-endpoint-ui-common'] --- import kbnInferenceEndpointUiCommonObj from './kbn_inference_endpoint_ui_common.devdocs.json'; diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index d91a8181a83cc..53b3352fe8c30 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 9a6f8e311033b..194dfaf1a8642 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: 2025-01-20 +date: 2025-01-21 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 4c35146cbe333..a09e8533e3dd8 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_investigation_shared.mdx b/api_docs/kbn_investigation_shared.mdx index b002aa253e78b..cfb8d078c0919 100644 --- a/api_docs/kbn_investigation_shared.mdx +++ b/api_docs/kbn_investigation_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-investigation-shared title: "@kbn/investigation-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/investigation-shared plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/investigation-shared'] --- import kbnInvestigationSharedObj from './kbn_investigation_shared.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 1b6b4c5fc5bfb..a2e41dd72af3b 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index 08b5f06f1e366..88230b430cdfe 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_item_buffer.mdx b/api_docs/kbn_item_buffer.mdx index d2f6a42b60ee4..4e139317e6645 100644 --- a/api_docs/kbn_item_buffer.mdx +++ b/api_docs/kbn_item_buffer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-item-buffer title: "@kbn/item-buffer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/item-buffer plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/item-buffer'] --- import kbnItemBufferObj from './kbn_item_buffer.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index bb136af6a35f1..1d27bdb33ffb6 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: 2025-01-20 +date: 2025-01-21 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 bd4584e3cfed6..7209934b2e7c2 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: 2025-01-20 +date: 2025-01-21 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 7385be2124cb0..12e60cfe2e311 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_json_schemas.mdx b/api_docs/kbn_json_schemas.mdx index ea15a50a0ddd7..43e8d5ca229ef 100644 --- a/api_docs/kbn_json_schemas.mdx +++ b/api_docs/kbn_json_schemas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-schemas title: "@kbn/json-schemas" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-schemas plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-schemas'] --- import kbnJsonSchemasObj from './kbn_json_schemas.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 0572d8c268d08..7ac854369ae26 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: 2025-01-20 +date: 2025-01-21 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.mdx b/api_docs/kbn_language_documentation.mdx index 29e234bd0c242..5125474e677b6 100644 --- a/api_docs/kbn_language_documentation.mdx +++ b/api_docs/kbn_language_documentation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation title: "@kbn/language-documentation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation'] --- import kbnLanguageDocumentationObj from './kbn_language_documentation.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index e268348f497cd..8765220d242f4 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 026e1a49f53a6..7bfadca8d37b4 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index f0c823da56311..328863d0597a1 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: 2025-01-20 +date: 2025-01-21 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 c93c3facf21a5..980b0138027f1 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index f10ce1f8c1833..8ed445ea748c5 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index a95264337f13b..30516ce174e11 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: 2025-01-20 +date: 2025-01-21 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 d40dd9598d193..d00ed6a10d961 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 6e0570aaf95d8..b2db4cabdfec0 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 0893afd1762c8..5a46c06bc48da 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index a535115998b01..1a0f7041f4ec9 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index e125791c28e92..bfe866d99d15e 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 9c95ffe2f2f9b..7443c057b5344 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 427f65d1521de..7a5102eebbfe0 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 26f740348fddd..5f00f88b7796e 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index a20e3e7cdf578..945aea75fd411 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 4ffa62cd500bc..30b55bfb9e4b1 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index a78847da2b7fb..796c1b1ce54af 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 74fd5d1719273..8edb57e7b19c3 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_manifest.mdx b/api_docs/kbn_manifest.mdx index edcf8f0cb264a..6c2015dc0b3b5 100644 --- a/api_docs/kbn_manifest.mdx +++ b/api_docs/kbn_manifest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-manifest title: "@kbn/manifest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/manifest plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/manifest'] --- import kbnManifestObj from './kbn_manifest.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 93f05da4580db..fb7715fb87860 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: 2025-01-20 +date: 2025-01-21 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 1d9e61048477c..e320f2834d0aa 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: 2025-01-20 +date: 2025-01-21 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 0c3345fd85356..fc87b2260bd89 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: 2025-01-20 +date: 2025-01-21 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 0b4c5b5a782e9..aa1ccb09646fa 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: 2025-01-20 +date: 2025-01-21 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_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index 23941bcaff8b6..7061c7cb5e9f7 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 921d0c57e7092..f257824f900c3 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 3ebc150b575b9..90744c7021c89 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 6fd3ab259beb4..bf1e56eae1bc5 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: 2025-01-20 +date: 2025-01-21 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 85eeb504fd2b3..facbbfb3abce9 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: 2025-01-20 +date: 2025-01-21 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 ac5f70047029e..e17543ef0022f 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: 2025-01-20 +date: 2025-01-21 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 30b744fbe3fd6..56824dd7ed581 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: 2025-01-20 +date: 2025-01-21 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 3d01a2962a6ed..b8401736abc4b 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: 2025-01-20 +date: 2025-01-21 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_field_stats_flyout.mdx b/api_docs/kbn_ml_field_stats_flyout.mdx index 552cad011c63e..adaad80ea7ae6 100644 --- a/api_docs/kbn_ml_field_stats_flyout.mdx +++ b/api_docs/kbn_ml_field_stats_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-field-stats-flyout title: "@kbn/ml-field-stats-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-field-stats-flyout plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-field-stats-flyout'] --- import kbnMlFieldStatsFlyoutObj from './kbn_ml_field_stats_flyout.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index bd16ca87cd1e6..6b2b8b92a3562 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index a376716017ce3..a99a6267497bd 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: 2025-01-20 +date: 2025-01-21 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 8fc97a9f00ed6..552c438739c84 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: 2025-01-20 +date: 2025-01-21 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_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 211378b5c8cbf..c6178d633046b 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: 2025-01-20 +date: 2025-01-21 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 b65dba44bee9f..efe3cfddc23a7 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: 2025-01-20 +date: 2025-01-21 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 589e508830a0f..795f6647fd8de 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: 2025-01-20 +date: 2025-01-21 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_parse_interval.mdx b/api_docs/kbn_ml_parse_interval.mdx index 1d0b05c89f96a..1cce30ea11d4a 100644 --- a/api_docs/kbn_ml_parse_interval.mdx +++ b/api_docs/kbn_ml_parse_interval.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-parse-interval title: "@kbn/ml-parse-interval" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-parse-interval plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-parse-interval'] --- import kbnMlParseIntervalObj from './kbn_ml_parse_interval.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index dab466ec6f42e..f70c036ddd4fe 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: 2025-01-20 +date: 2025-01-21 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 6f49c7e17b71b..76cc88ef76a30 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: 2025-01-20 +date: 2025-01-21 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 a118b909ee168..cb7e6b8265bc3 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: 2025-01-20 +date: 2025-01-21 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 07a7b96bd5a52..f6ed27b0bc237 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: 2025-01-20 +date: 2025-01-21 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 7eb8ea28a8872..90f3b654cad43 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: 2025-01-20 +date: 2025-01-21 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_time_buckets.mdx b/api_docs/kbn_ml_time_buckets.mdx index 515d1563f2eda..f104417ac8ddc 100644 --- a/api_docs/kbn_ml_time_buckets.mdx +++ b/api_docs/kbn_ml_time_buckets.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-time-buckets title: "@kbn/ml-time-buckets" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-time-buckets plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-time-buckets'] --- import kbnMlTimeBucketsObj from './kbn_ml_time_buckets.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index a399ae294d8bc..c3b98ec4306de 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: 2025-01-20 +date: 2025-01-21 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_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index ee6b1f400d15f..fa7e76a5a73ac 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index adca61bce1172..8a462e7ce9ed5 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_ml_validators.mdx b/api_docs/kbn_ml_validators.mdx index b35eb8b7d08fe..671d575f9970b 100644 --- a/api_docs/kbn_ml_validators.mdx +++ b/api_docs/kbn_ml_validators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-validators title: "@kbn/ml-validators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-validators plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-validators'] --- import kbnMlValidatorsObj from './kbn_ml_validators.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index 46bc0089b2718..92d6d97edd7e9 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index ade1df8abfda1..14b8c2e586889 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_utils.mdx b/api_docs/kbn_object_utils.mdx index 442021c880e08..9abbe61008099 100644 --- a/api_docs/kbn_object_utils.mdx +++ b/api_docs/kbn_object_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-utils title: "@kbn/object-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-utils'] --- import kbnObjectUtilsObj from './kbn_object_utils.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 46f3fffa99595..255c8f04803a8 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_object_versioning_utils.mdx b/api_docs/kbn_object_versioning_utils.mdx index 8610e242fbef8..eac772b51f8cf 100644 --- a/api_docs/kbn_object_versioning_utils.mdx +++ b/api_docs/kbn_object_versioning_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning-utils title: "@kbn/object-versioning-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning-utils'] --- import kbnObjectVersioningUtilsObj from './kbn_object_versioning_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 06338ff86eae0..e62be78b4d368 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_rule_utils.mdx b/api_docs/kbn_observability_alerting_rule_utils.mdx index 19d8c77c10dbc..97d453423acfd 100644 --- a/api_docs/kbn_observability_alerting_rule_utils.mdx +++ b/api_docs/kbn_observability_alerting_rule_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-rule-utils title: "@kbn/observability-alerting-rule-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-rule-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-rule-utils'] --- import kbnObservabilityAlertingRuleUtilsObj from './kbn_observability_alerting_rule_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 8fc22d254f80d..d8d73a214485f 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index cb49469adf0ea..a1973b309a108 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_observability_logs_overview.mdx b/api_docs/kbn_observability_logs_overview.mdx index 88da4aed301b4..f963a1e5044d3 100644 --- a/api_docs/kbn_observability_logs_overview.mdx +++ b/api_docs/kbn_observability_logs_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-logs-overview title: "@kbn/observability-logs-overview" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-logs-overview plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-logs-overview'] --- import kbnObservabilityLogsOverviewObj from './kbn_observability_logs_overview.devdocs.json'; diff --git a/api_docs/kbn_observability_synthetics_test_data.mdx b/api_docs/kbn_observability_synthetics_test_data.mdx index 355250f235512..a08ec24fd2e8e 100644 --- a/api_docs/kbn_observability_synthetics_test_data.mdx +++ b/api_docs/kbn_observability_synthetics_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-synthetics-test-data title: "@kbn/observability-synthetics-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-synthetics-test-data plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-synthetics-test-data'] --- import kbnObservabilitySyntheticsTestDataObj from './kbn_observability_synthetics_test_data.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index f4773135466ca..bd13dce043246 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 0b839bf23f6f0..8c59bd2802f06 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 13cf36a3cbfa0..fb6a1d5228fee 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: 2025-01-20 +date: 2025-01-21 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 fc5979113781d..f7ca41bccae04 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: 2025-01-20 +date: 2025-01-21 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 e34bea0aaad6b..8d18cbe3c6cff 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: 2025-01-20 +date: 2025-01-21 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_palettes.mdx b/api_docs/kbn_palettes.mdx index 3a2143a231152..fcb1b04f7105c 100644 --- a/api_docs/kbn_palettes.mdx +++ b/api_docs/kbn_palettes.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-palettes title: "@kbn/palettes" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/palettes plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/palettes'] --- import kbnPalettesObj from './kbn_palettes.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 5f48e8e3af9e5..06df8e146c091 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index a4af9240f300d..77c75e38ac925 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: 2025-01-20 +date: 2025-01-21 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_check.mdx b/api_docs/kbn_plugin_check.mdx index a7604a4c38fe6..046c1ffccbd81 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 5c6ec8a7cb4b3..56e5d6a15f9d4 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: 2025-01-20 +date: 2025-01-21 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 928596cf844e4..5302a6d85acb9 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index f5914b3e25583..c30383679bcfd 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 62b0b4136805f..00fac2593be4a 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; diff --git a/api_docs/kbn_product_doc_artifact_builder.mdx b/api_docs/kbn_product_doc_artifact_builder.mdx index 90d5b99bccac1..b48adf7d2c32a 100644 --- a/api_docs/kbn_product_doc_artifact_builder.mdx +++ b/api_docs/kbn_product_doc_artifact_builder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-artifact-builder title: "@kbn/product-doc-artifact-builder" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-artifact-builder plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-artifact-builder'] --- import kbnProductDocArtifactBuilderObj from './kbn_product_doc_artifact_builder.devdocs.json'; diff --git a/api_docs/kbn_product_doc_common.mdx b/api_docs/kbn_product_doc_common.mdx index 94043b7056ffc..43799df636df3 100644 --- a/api_docs/kbn_product_doc_common.mdx +++ b/api_docs/kbn_product_doc_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-common title: "@kbn/product-doc-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-common'] --- import kbnProductDocCommonObj from './kbn_product_doc_common.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index e26c3784de23c..01e76e189e4c3 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 56c30cad26fec..e7df5aa498203 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: 2025-01-20 +date: 2025-01-21 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 15468394ddaa5..5d91a050adc1f 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index 87eb94420707e..d50586cb356ba 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index ec91e4d064b2f..d5dde0fc6fca1 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index 523123e5fdb93..93788c516c2a3 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 278405deebcd7..2917127d7b204 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index d9a509df08faf..64d9cde0ef4b0 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index cf4c7e915770f..4c45c64e407db 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index b62dfad56e543..ed4e2cac565a9 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_react_mute_legacy_root_warning.mdx b/api_docs/kbn_react_mute_legacy_root_warning.mdx index 0c31222f9020e..3414235ad073d 100644 --- a/api_docs/kbn_react_mute_legacy_root_warning.mdx +++ b/api_docs/kbn_react_mute_legacy_root_warning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-mute-legacy-root-warning title: "@kbn/react-mute-legacy-root-warning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-mute-legacy-root-warning plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-mute-legacy-root-warning'] --- import kbnReactMuteLegacyRootWarningObj from './kbn_react_mute_legacy_root_warning.devdocs.json'; diff --git a/api_docs/kbn_recently_accessed.mdx b/api_docs/kbn_recently_accessed.mdx index e5bdf3bc1140b..bf7a783767932 100644 --- a/api_docs/kbn_recently_accessed.mdx +++ b/api_docs/kbn_recently_accessed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-recently-accessed title: "@kbn/recently-accessed" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/recently-accessed plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/recently-accessed'] --- import kbnRecentlyAccessedObj from './kbn_recently_accessed.devdocs.json'; diff --git a/api_docs/kbn_relocate.mdx b/api_docs/kbn_relocate.mdx index bfa66d3e3437c..009114d1841c0 100644 --- a/api_docs/kbn_relocate.mdx +++ b/api_docs/kbn_relocate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-relocate title: "@kbn/relocate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/relocate plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/relocate'] --- import kbnRelocateObj from './kbn_relocate.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 56669bee95248..9826867c3baef 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: 2025-01-20 +date: 2025-01-21 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 c2ebb3fbe3a60..e6da3d2ea3a2c 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: 2025-01-20 +date: 2025-01-21 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 690397c996779..ae9696a3004d9 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: 2025-01-20 +date: 2025-01-21 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 360b772fd5636..58c2fbcc492ae 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: 2025-01-20 +date: 2025-01-21 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 49cb8fcb6987c..714b216508143 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index da47a3611434a..e8290cc3eea29 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index 2f1b9f073f527..016759cbc3439 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 21a99bd19398a..ffba82eb9447a 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index d3ae1ec26a5c7..b7209e84887d6 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 86a4e7bd9f67e..69cbd58737145 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 5ec6e96e630a0..96aece4ac78c9 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 76bb25dbc919c..18a1057e48a0d 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index c9a1f2f9b5bf1..8423be7e371b5 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 79b004bcb33a5..72ebbbed8e6fa 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index b58f6f1f52af0..af34870420dfa 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 4019d773a4449..1f3762474e75a 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_form.mdx b/api_docs/kbn_response_ops_rule_form.mdx index 0430ae5840ce0..d11dde18c3dea 100644 --- a/api_docs/kbn_response_ops_rule_form.mdx +++ b/api_docs/kbn_response_ops_rule_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-form title: "@kbn/response-ops-rule-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-form plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-form'] --- import kbnResponseOpsRuleFormObj from './kbn_response_ops_rule_form.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_params.mdx b/api_docs/kbn_response_ops_rule_params.mdx index 45a2e537a29a6..0112b1dbeb84f 100644 --- a/api_docs/kbn_response_ops_rule_params.mdx +++ b/api_docs/kbn_response_ops_rule_params.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-params title: "@kbn/response-ops-rule-params" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-params plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-params'] --- import kbnResponseOpsRuleParamsObj from './kbn_response_ops_rule_params.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 07d7060b077db..2f1d010d13623 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rollup.mdx b/api_docs/kbn_rollup.mdx index fb547dde62213..40caf23529373 100644 --- a/api_docs/kbn_rollup.mdx +++ b/api_docs/kbn_rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rollup title: "@kbn/rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rollup plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rollup'] --- import kbnRollupObj from './kbn_rollup.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index 6801a40f201fb..12a23c2144529 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index b5af511207437..935d6c20c34ea 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 74fc75db368f3..cde4110778415 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: 2025-01-20 +date: 2025-01-21 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 682187aeb0070..ebd0acb30a25d 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: 2025-01-20 +date: 2025-01-21 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 725bdfd376b8d..f7a162459036e 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_saved_search_component.mdx b/api_docs/kbn_saved_search_component.mdx index 5d2b73a51eca6..f6bea5f4c4e2b 100644 --- a/api_docs/kbn_saved_search_component.mdx +++ b/api_docs/kbn_saved_search_component.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-search-component title: "@kbn/saved-search-component" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-search-component plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-search-component'] --- import kbnSavedSearchComponentObj from './kbn_saved_search_component.devdocs.json'; diff --git a/api_docs/kbn_scout.mdx b/api_docs/kbn_scout.mdx index 7753fc130cdda..fa68012aee055 100644 --- a/api_docs/kbn_scout.mdx +++ b/api_docs/kbn_scout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout title: "@kbn/scout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout'] --- import kbnScoutObj from './kbn_scout.devdocs.json'; diff --git a/api_docs/kbn_scout_info.mdx b/api_docs/kbn_scout_info.mdx index c253f606a8cd6..afd5d6f44b632 100644 --- a/api_docs/kbn_scout_info.mdx +++ b/api_docs/kbn_scout_info.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-info title: "@kbn/scout-info" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-info plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-info'] --- import kbnScoutInfoObj from './kbn_scout_info.devdocs.json'; diff --git a/api_docs/kbn_scout_reporting.mdx b/api_docs/kbn_scout_reporting.mdx index a90f546afe599..bf3df9716658a 100644 --- a/api_docs/kbn_scout_reporting.mdx +++ b/api_docs/kbn_scout_reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-reporting title: "@kbn/scout-reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-reporting plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-reporting'] --- import kbnScoutReportingObj from './kbn_scout_reporting.devdocs.json'; diff --git a/api_docs/kbn_screenshotting_server.mdx b/api_docs/kbn_screenshotting_server.mdx index 089216bdb30f0..ec4aa8c621900 100644 --- a/api_docs/kbn_screenshotting_server.mdx +++ b/api_docs/kbn_screenshotting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-screenshotting-server title: "@kbn/screenshotting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/screenshotting-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/screenshotting-server'] --- import kbnScreenshottingServerObj from './kbn_screenshotting_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_components.mdx b/api_docs/kbn_search_api_keys_components.mdx index 247522c97542c..5f5bc6b071348 100644 --- a/api_docs/kbn_search_api_keys_components.mdx +++ b/api_docs/kbn_search_api_keys_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-components title: "@kbn/search-api-keys-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-components plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-components'] --- import kbnSearchApiKeysComponentsObj from './kbn_search_api_keys_components.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_server.mdx b/api_docs/kbn_search_api_keys_server.mdx index a1b2a58b07a1e..91916a31a2c55 100644 --- a/api_docs/kbn_search_api_keys_server.mdx +++ b/api_docs/kbn_search_api_keys_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-server title: "@kbn/search-api-keys-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-server'] --- import kbnSearchApiKeysServerObj from './kbn_search_api_keys_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index abca47eccc603..808601d538356 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 5be033f5e0a9b..44c0369d976a0 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 49cca5cedf42a..00531937886e5 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 5531c8535d43f..178851496e139 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 8626775e5ce8d..7246c77b95ea6 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_shared_ui.mdx b/api_docs/kbn_search_shared_ui.mdx index b2fa536e19340..0cfca54dfa17c 100644 --- a/api_docs/kbn_search_shared_ui.mdx +++ b/api_docs/kbn_search_shared_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-shared-ui title: "@kbn/search-shared-ui" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-shared-ui plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-shared-ui'] --- import kbnSearchSharedUiObj from './kbn_search_shared_ui.devdocs.json'; diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index a3ed26cfb103b..44c75b97c79ef 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_api_key_management.mdx b/api_docs/kbn_security_api_key_management.mdx index 33b345e364134..df1b698cdc7d1 100644 --- a/api_docs/kbn_security_api_key_management.mdx +++ b/api_docs/kbn_security_api_key_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-api-key-management title: "@kbn/security-api-key-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-api-key-management plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-api-key-management'] --- import kbnSecurityApiKeyManagementObj from './kbn_security_api_key_management.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core.mdx b/api_docs/kbn_security_authorization_core.mdx index 6b2e4422700aa..c7e6cee81362b 100644 --- a/api_docs/kbn_security_authorization_core.mdx +++ b/api_docs/kbn_security_authorization_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core title: "@kbn/security-authorization-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core'] --- import kbnSecurityAuthorizationCoreObj from './kbn_security_authorization_core.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core_common.mdx b/api_docs/kbn_security_authorization_core_common.mdx index 9053eac7207b7..880fad19fd489 100644 --- a/api_docs/kbn_security_authorization_core_common.mdx +++ b/api_docs/kbn_security_authorization_core_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core-common title: "@kbn/security-authorization-core-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core-common'] --- import kbnSecurityAuthorizationCoreCommonObj from './kbn_security_authorization_core_common.devdocs.json'; diff --git a/api_docs/kbn_security_form_components.mdx b/api_docs/kbn_security_form_components.mdx index f196e2524eb46..4a32b4ea0875c 100644 --- a/api_docs/kbn_security_form_components.mdx +++ b/api_docs/kbn_security_form_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-form-components title: "@kbn/security-form-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-form-components plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-form-components'] --- import kbnSecurityFormComponentsObj from './kbn_security_form_components.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 544baf97be164..0f121b2a22aac 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index 82cc546b74227..40f9a4164d387 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index ece4e1c54e8c6..8bcce9120f45f 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 583c1c054e479..260467dfa2db8 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_role_management_model.mdx b/api_docs/kbn_security_role_management_model.mdx index 0206b599f5dab..6c49a334268f0 100644 --- a/api_docs/kbn_security_role_management_model.mdx +++ b/api_docs/kbn_security_role_management_model.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-role-management-model title: "@kbn/security-role-management-model" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-role-management-model plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-role-management-model'] --- import kbnSecurityRoleManagementModelObj from './kbn_security_role_management_model.devdocs.json'; diff --git a/api_docs/kbn_security_solution_distribution_bar.mdx b/api_docs/kbn_security_solution_distribution_bar.mdx index 187bd7c1a7b35..a1c543dd9f427 100644 --- a/api_docs/kbn_security_solution_distribution_bar.mdx +++ b/api_docs/kbn_security_solution_distribution_bar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-distribution-bar title: "@kbn/security-solution-distribution-bar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-distribution-bar plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-distribution-bar'] --- import kbnSecuritySolutionDistributionBarObj from './kbn_security_solution_distribution_bar.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.devdocs.json b/api_docs/kbn_security_solution_features.devdocs.json index 3d33ad5de26f0..9d52361e05552 100644 --- a/api_docs/kbn_security_solution_features.devdocs.json +++ b/api_docs/kbn_security_solution_features.devdocs.json @@ -231,7 +231,11 @@ " | ", "ProductFeatureAssistantKey", " | ", - "ProductFeatureAttackDiscoveryKey" + "ProductFeatureAttackDiscoveryKey", + " | ", + "ProductFeatureTimelineFeatureKey", + " | ", + "ProductFeatureNotesFeatureKey" ], "path": "x-pack/solutions/security/packages/features/src/product_features_keys.ts", "deprecated": false, @@ -394,6 +398,31 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/security-solution-features", + "id": "def-common.ProductFeaturesNotesConfig", + "type": "Type", + "tags": [], + "label": "ProductFeaturesNotesConfig", + "description": [], + "signature": [ + "Map<", + "ProductFeatureNotesFeatureKey", + ", ", + { + "pluginId": "@kbn/security-solution-features", + "scope": "common", + "docId": "kibKbnSecuritySolutionFeaturesPluginApi", + "section": "def-common.ProductFeatureKibanaConfig", + "text": "ProductFeatureKibanaConfig" + }, + ">" + ], + "path": "x-pack/solutions/security/packages/features/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/security-solution-features", "id": "def-common.ProductFeaturesSecurityConfig", @@ -421,6 +450,31 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/security-solution-features", + "id": "def-common.ProductFeaturesTimelineConfig", + "type": "Type", + "tags": [], + "label": "ProductFeaturesTimelineConfig", + "description": [], + "signature": [ + "Map<", + "ProductFeatureTimelineFeatureKey", + ", ", + { + "pluginId": "@kbn/security-solution-features", + "scope": "common", + "docId": "kibKbnSecuritySolutionFeaturesPluginApi", + "section": "def-common.ProductFeatureKibanaConfig", + "text": "ProductFeatureKibanaConfig" + }, + ">" + ], + "path": "x-pack/solutions/security/packages/features/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/security-solution-features", "id": "def-common.SubFeaturesPrivileges", diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 73b4e9545fba4..3408837890270 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-threat-hunting-explore](https://github.com/orgs/elast | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 15 | 0 | 15 | 7 | +| 17 | 0 | 17 | 9 | ## Common diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 7fd3bc014187b..ae622fc7b5202 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: 2025-01-20 +date: 2025-01-21 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 fc9f9d537a9b3..1d882c8ce4134 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: 2025-01-20 +date: 2025-01-21 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 f5ad97da54831..6a079a060c32f 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: 2025-01-20 +date: 2025-01-21 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_security_ui_components.mdx b/api_docs/kbn_security_ui_components.mdx index b8c1ed17c3b13..5c2f4db1dc656 100644 --- a/api_docs/kbn_security_ui_components.mdx +++ b/api_docs/kbn_security_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ui-components title: "@kbn/security-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ui-components plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ui-components'] --- import kbnSecurityUiComponentsObj from './kbn_security_ui_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 46f0d709dfa43..df932583051e9 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: 2025-01-20 +date: 2025-01-21 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 188eb9c975ade..ad662fb91d5dc 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: 2025-01-20 +date: 2025-01-21 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.devdocs.json b/api_docs/kbn_securitysolution_ecs.devdocs.json index a03c6128f86c4..50add3f39ac5a 100644 --- a/api_docs/kbn_securitysolution_ecs.devdocs.json +++ b/api_docs/kbn_securitysolution_ecs.devdocs.json @@ -849,6 +849,27 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.EcsSecurityExtension.service", + "type": "Object", + "tags": [], + "label": "service", + "description": [], + "signature": [ + { + "pluginId": "@kbn/securitysolution-ecs", + "scope": "common", + "docId": "kibKbnSecuritysolutionEcsPluginApi", + "section": "def-common.ServiceEcs", + "text": "ServiceEcs" + }, + " | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/securitysolution-ecs", "id": "def-common.EcsSecurityExtension._id", @@ -3469,6 +3490,160 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs", + "type": "Interface", + "tags": [], + "label": "ServiceEcs", + "description": [], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs.address", + "type": "Array", + "tags": [], + "label": "address", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs.environment", + "type": "Array", + "tags": [], + "label": "environment", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs.ephemeral_id", + "type": "Array", + "tags": [], + "label": "ephemeral_id", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs.id", + "type": "Array", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs.name", + "type": "Array", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs.node", + "type": "Object", + "tags": [], + "label": "node", + "description": [], + "signature": [ + "{ name: string[]; roles: string[]; role: string[]; } | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs.roles", + "type": "Array", + "tags": [], + "label": "roles", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs.state", + "type": "Array", + "tags": [], + "label": "state", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs.type", + "type": "Array", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-ecs", + "id": "def-common.ServiceEcs.version", + "type": "Array", + "tags": [], + "label": "version", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/service/index.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/securitysolution-ecs", "id": "def-common.SignalEcs", diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 7cf99a8030709..48742e0d80252 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-threat-hunting-explore](https://github.com/orgs/elast | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 341 | 1 | 337 | 32 | +| 353 | 1 | 349 | 32 | ## Common diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index ee567c0e48363..7d9973b4ed433 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: 2025-01-20 +date: 2025-01-21 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.devdocs.json b/api_docs/kbn_securitysolution_exception_list_components.devdocs.json index 85d199a001cc3..eec47a776e582 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.devdocs.json +++ b/api_docs/kbn_securitysolution_exception_list_components.devdocs.json @@ -868,7 +868,7 @@ "label": "formattedDateComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"summary\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "x-pack/solutions/security/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/meta/index.tsx", "deprecated": false, @@ -882,7 +882,7 @@ "label": "securityLinkAnchorComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"summary\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "x-pack/solutions/security/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/meta/index.tsx", "deprecated": false, @@ -1021,7 +1021,7 @@ "label": "securityLinkAnchorComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"summary\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "x-pack/solutions/security/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, @@ -1035,7 +1035,7 @@ "label": "formattedDateComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"summary\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "x-pack/solutions/security/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, @@ -1161,7 +1161,7 @@ "label": "showValueListModal", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"summary\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "x-pack/solutions/security/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index e86c4a19aec3d..fc3c9707cfbb2 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: 2025-01-20 +date: 2025-01-21 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_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 0d7cc8f053fcb..0c69b52f45d01 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: 2025-01-20 +date: 2025-01-21 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 224077e3150c7..dfe68b613e0d6 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: 2025-01-20 +date: 2025-01-21 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 87589ed1f787e..2dbe446f3d9cd 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: 2025-01-20 +date: 2025-01-21 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 88cd9283a8d2f..6aa0d41df1ac8 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: 2025-01-20 +date: 2025-01-21 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 0b6d1c85fdca1..16264833db6a8 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: 2025-01-20 +date: 2025-01-21 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 013ba7924d835..2fdb546f97e53 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: 2025-01-20 +date: 2025-01-21 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 bbc4280a43d30..7d87e5b0eaefb 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: 2025-01-20 +date: 2025-01-21 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 7b2003b520a4e..b6d700daaaa25 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: 2025-01-20 +date: 2025-01-21 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 268dd779dfaa0..24c24dab970c8 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: 2025-01-20 +date: 2025-01-21 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 e45fbf2ba3b6c..b570a941eb893 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: 2025-01-20 +date: 2025-01-21 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 95bbe1dc83b86..6cbd28a598f94 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: 2025-01-20 +date: 2025-01-21 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 343bccd96a90d..b8dbaf64254d5 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: 2025-01-20 +date: 2025-01-21 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 d875ba065897e..dd16f5252dfa3 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: 2025-01-20 +date: 2025-01-21 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 2384a8f2e913d..bfac5acb0700c 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_client.mdx b/api_docs/kbn_server_route_repository_client.mdx index fa33a09ffe067..4876acd1871f3 100644 --- a/api_docs/kbn_server_route_repository_client.mdx +++ b/api_docs/kbn_server_route_repository_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-client title: "@kbn/server-route-repository-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-client plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-client'] --- import kbnServerRouteRepositoryClientObj from './kbn_server_route_repository_client.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_utils.mdx b/api_docs/kbn_server_route_repository_utils.mdx index d625f4d9da4e5..515aecf73e78a 100644 --- a/api_docs/kbn_server_route_repository_utils.mdx +++ b/api_docs/kbn_server_route_repository_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-utils title: "@kbn/server-route-repository-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-utils'] --- import kbnServerRouteRepositoryUtilsObj from './kbn_server_route_repository_utils.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 6222a358f6ca6..53035a877c98e 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index ebf2286510318..caef62f8506ab 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 9d425ac85b07e..0b0dcc38618c2 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index d28d81e1320db..11c3fa3354417 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 5ebb38b6694e0..3c8dd29814e48 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 147448715fef1..6f88b396eea27 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: 2025-01-20 +date: 2025-01-21 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 36f090151f472..a90d81d9b1378 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: 2025-01-20 +date: 2025-01-21 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 36f281da0de6d..76d81e713a574 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index ab30e63ea9057..c4a98f7767455 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index cddabff04c202..b047a50727f64 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: 2025-01-20 +date: 2025-01-21 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 d0789a7b85b91..24c621bfed303 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: 2025-01-20 +date: 2025-01-21 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 265aedcfa2fcd..3b42b515b27dd 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: 2025-01-20 +date: 2025-01-21 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 3c4eab6eee65d..961f95d41361c 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 612da4d095fa8..003c731ed3a80 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index bbfc20ea34011..3c6a814819705 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: 2025-01-20 +date: 2025-01-21 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 a7999c5172795..b6ff0d246521c 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: 2025-01-20 +date: 2025-01-21 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 3ffcf6ec35d87..0a74a31dccd2c 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: 2025-01-20 +date: 2025-01-21 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 12774810fff9d..4bcd8c85c891a 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: 2025-01-20 +date: 2025-01-21 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 7a1276583c853..f42ec1d9131a3 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: 2025-01-20 +date: 2025-01-21 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 c8c409e255b19..cde16c87d9d19 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: 2025-01-20 +date: 2025-01-21 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 3929aace41a95..8cf8c064e1cc3 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: 2025-01-20 +date: 2025-01-21 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 ffb1df6fd7802..b5d893028d97c 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: 2025-01-20 +date: 2025-01-21 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 e58c8bd14466f..4354477b175b7 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: 2025-01-20 +date: 2025-01-21 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 2886e151ab7aa..37eafdfa829e2 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: 2025-01-20 +date: 2025-01-21 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 0cc9b9fefea68..aeaaffb8fde49 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: 2025-01-20 +date: 2025-01-21 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 ff5ef9cbc31c5..2d283f20f545a 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: 2025-01-20 +date: 2025-01-21 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 6d7323ed3d4af..7a79a2c446dd1 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: 2025-01-20 +date: 2025-01-21 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 12fe8a73fe468..a9b42a71e679f 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: 2025-01-20 +date: 2025-01-21 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 b719f3d387aa4..2856de2e2ed46 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: 2025-01-20 +date: 2025-01-21 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 b58e7cd153fac..bf102d7a3016a 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: 2025-01-20 +date: 2025-01-21 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 0283e4fb3168e..9e4f2649c2b63 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: 2025-01-20 +date: 2025-01-21 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 1f75ba5747988..bca8bb5e79482 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: 2025-01-20 +date: 2025-01-21 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 b81807669cd88..0d5133b06aac9 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: 2025-01-20 +date: 2025-01-21 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 f2b530b935a0c..cbb5387e53de6 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: 2025-01-20 +date: 2025-01-21 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 e1dd394b80cd1..4b99ee27e9179 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: 2025-01-20 +date: 2025-01-21 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 d8f109b0278c8..295996abf2eba 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: 2025-01-20 +date: 2025-01-21 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 30222c58808aa..887aa04e5f486 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: 2025-01-20 +date: 2025-01-21 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 561a9d10e1488..0f0e3625a280a 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: 2025-01-20 +date: 2025-01-21 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 c9f9752553c8f..31513c1f551a8 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: 2025-01-20 +date: 2025-01-21 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 c7929c257ad2e..b8f37487fd8eb 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: 2025-01-20 +date: 2025-01-21 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 e1f11d24a7678..61e94cbb23e2f 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: 2025-01-20 +date: 2025-01-21 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 fbd82f8fd4f9c..784ab03b46f38 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: 2025-01-20 +date: 2025-01-21 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 47dc019e8590c..83ae064a36508 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: 2025-01-20 +date: 2025-01-21 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 de8358403a7e4..4082c8ae53e8d 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: 2025-01-20 +date: 2025-01-21 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_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index a9b80edf29e13..567c0e8daa3c6 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_table_persist.mdx b/api_docs/kbn_shared_ux_table_persist.mdx index 09f55b51d7b6a..a5737fc125689 100644 --- a/api_docs/kbn_shared_ux_table_persist.mdx +++ b/api_docs/kbn_shared_ux_table_persist.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-table-persist title: "@kbn/shared-ux-table-persist" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-table-persist plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-table-persist'] --- import kbnSharedUxTablePersistObj from './kbn_shared_ux_table_persist.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 79d7032fa9bf3..fff51caff3d0a 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json index a12d24ea6ee25..da95b6af32208 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -835,7 +835,7 @@ "label": "FindSLODefinitionsResponse", "description": [], "signature": [ - "{ page: number; perPage: number; total: number; results: { id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }[]; }" + "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { createdBy?: string | undefined; updatedBy?: string | undefined; })[]; }" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, @@ -895,7 +895,7 @@ "label": "FindSLOResponse", "description": [], "signature": [ - "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; })[]; } & { searchAfter?: (string | number)[] | undefined; size?: number | undefined; }" + "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { createdBy?: string | undefined; updatedBy?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; })[]; } & { searchAfter?: (string | number)[] | undefined; size?: number | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts", "deprecated": false, @@ -1008,7 +1008,7 @@ "label": "GetSLOResponse", "description": [], "signature": [ - "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" + "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { createdBy?: string | undefined; updatedBy?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts", "deprecated": false, @@ -1278,7 +1278,7 @@ "label": "ResetSLOResponse", "description": [], "signature": [ - "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" + "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { createdBy?: string | undefined; updatedBy?: string | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, @@ -1293,7 +1293,7 @@ "label": "SLODefinitionResponse", "description": [], "signature": [ - "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" + "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { createdBy?: string | undefined; updatedBy?: string | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, @@ -1308,7 +1308,7 @@ "label": "SLOWithSummaryResponse", "description": [], "signature": [ - "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" + "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { createdBy?: string | undefined; updatedBy?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, @@ -1483,7 +1483,7 @@ "label": "UpdateSLOResponse", "description": [], "signature": [ - "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" + "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { createdBy?: string | undefined; updatedBy?: string | undefined; }" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, @@ -3940,6 +3940,8 @@ "; results: ", "ArrayC", "<", + "IntersectionC", + "<[", "TypeC", "<{ id: ", "Type", @@ -5511,7 +5513,13 @@ "StringC", "]>>]>; version: ", "NumberC", - "; }>>; }>" + "; }>, ", + "PartialC", + "<{ createdBy: ", + "StringC", + "; updatedBy: ", + "StringC", + "; }>]>>; }>" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, @@ -5716,6 +5724,8 @@ "<", "IntersectionC", "<[", + "IntersectionC", + "<[", "TypeC", "<{ id: ", "Type", @@ -7288,6 +7298,12 @@ "]>>]>; version: ", "NumberC", "; }>, ", + "PartialC", + "<{ createdBy: ", + "StringC", + "; updatedBy: ", + "StringC", + "; }>]>, ", "TypeC", "<{ summary: ", "IntersectionC", @@ -9124,6 +9140,8 @@ "label": "getSLOResponseSchema", "description": [], "signature": [ + "IntersectionC", + "<[", "IntersectionC", "<[", "TypeC", @@ -10698,6 +10716,12 @@ "]>>]>; version: ", "NumberC", "; }>, ", + "PartialC", + "<{ createdBy: ", + "StringC", + "; updatedBy: ", + "StringC", + "; }>]>, ", "TypeC", "<{ summary: ", "IntersectionC", @@ -13983,6 +14007,8 @@ "label": "resetSLOResponseSchema", "description": [], "signature": [ + "IntersectionC", + "<[", "TypeC", "<{ id: ", "Type", @@ -15554,7 +15580,13 @@ "StringC", "]>>]>; version: ", "NumberC", - "; }>" + "; }>, ", + "PartialC", + "<{ createdBy: ", + "StringC", + "; updatedBy: ", + "StringC", + "; }>]>" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, @@ -15661,6 +15693,8 @@ "label": "sloDefinitionSchema", "description": [], "signature": [ + "IntersectionC", + "<[", "TypeC", "<{ id: ", "Type", @@ -17232,7 +17266,13 @@ "StringC", "]>>]>; version: ", "NumberC", - "; }>" + "; }>, ", + "PartialC", + "<{ createdBy: ", + "StringC", + "; updatedBy: ", + "StringC", + "; }>]>" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, @@ -17369,6 +17409,8 @@ "label": "sloWithDataResponseSchema", "description": [], "signature": [ + "IntersectionC", + "<[", "IntersectionC", "<[", "TypeC", @@ -18943,6 +18985,12 @@ "]>>]>; version: ", "NumberC", "; }>, ", + "PartialC", + "<{ createdBy: ", + "StringC", + "; updatedBy: ", + "StringC", + "; }>]>, ", "TypeC", "<{ summary: ", "IntersectionC", @@ -21795,6 +21843,8 @@ "label": "updateSLOResponseSchema", "description": [], "signature": [ + "IntersectionC", + "<[", "TypeC", "<{ id: ", "Type", @@ -23366,7 +23416,13 @@ "StringC", "]>>]>; version: ", "NumberC", - "; }>" + "; }>, ", + "PartialC", + "<{ createdBy: ", + "StringC", + "; updatedBy: ", + "StringC", + "; }>]>" ], "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 122ecb473528e..66437148337e6 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: 2025-01-20 +date: 2025-01-21 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 0226c776f075a..fce8093aa312b 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index 9b92ccb1c2f25..0974f952e5cd8 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_sse_utils.mdx b/api_docs/kbn_sse_utils.mdx index ad09fadd5bf09..367f95c70c8fc 100644 --- a/api_docs/kbn_sse_utils.mdx +++ b/api_docs/kbn_sse_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils title: "@kbn/sse-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils'] --- import kbnSseUtilsObj from './kbn_sse_utils.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_client.mdx b/api_docs/kbn_sse_utils_client.mdx index 9e519c2798ddd..2b5dc63390254 100644 --- a/api_docs/kbn_sse_utils_client.mdx +++ b/api_docs/kbn_sse_utils_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-client title: "@kbn/sse-utils-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-client plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-client'] --- import kbnSseUtilsClientObj from './kbn_sse_utils_client.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_server.mdx b/api_docs/kbn_sse_utils_server.mdx index 5ecddb8e2bf81..6a67f30fcb63d 100644 --- a/api_docs/kbn_sse_utils_server.mdx +++ b/api_docs/kbn_sse_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-server title: "@kbn/sse-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-server plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-server'] --- import kbnSseUtilsServerObj from './kbn_sse_utils_server.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index f684f4c578153..666b056f6ccfe 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: 2025-01-20 +date: 2025-01-21 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 91a7760920734..ddc8053256065 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: 2025-01-20 +date: 2025-01-21 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 e76700319cd86..29588d716ec1f 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_streams_schema.mdx b/api_docs/kbn_streams_schema.mdx index 6ff6aeb4a3086..3f6efe0b668a5 100644 --- a/api_docs/kbn_streams_schema.mdx +++ b/api_docs/kbn_streams_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-streams-schema title: "@kbn/streams-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/streams-schema plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/streams-schema'] --- import kbnStreamsSchemaObj from './kbn_streams_schema.devdocs.json'; diff --git a/api_docs/kbn_synthetics_e2e.mdx b/api_docs/kbn_synthetics_e2e.mdx index 67bc6a073035d..f311b314db1b3 100644 --- a/api_docs/kbn_synthetics_e2e.mdx +++ b/api_docs/kbn_synthetics_e2e.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-e2e title: "@kbn/synthetics-e2e" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-e2e plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-e2e'] --- import kbnSyntheticsE2eObj from './kbn_synthetics_e2e.devdocs.json'; diff --git a/api_docs/kbn_synthetics_private_location.mdx b/api_docs/kbn_synthetics_private_location.mdx index b56e85577e0db..2f7d8ce7ac043 100644 --- a/api_docs/kbn_synthetics_private_location.mdx +++ b/api_docs/kbn_synthetics_private_location.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-private-location title: "@kbn/synthetics-private-location" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-private-location plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-private-location'] --- import kbnSyntheticsPrivateLocationObj from './kbn_synthetics_private_location.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 6289fc933b10f..2821766f74193 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: 2025-01-20 +date: 2025-01-21 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 c1e96fb4cc1db..05539d0c53c0e 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index bef40000ee2e2..1d97eb3b749cb 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 6c49bedf7eb79..576ce63e724dd 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: 2025-01-20 +date: 2025-01-21 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 10055cff9e8f8..31bf53eb8579d 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index d4419cf592606..f1a2748215baa 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index fb615be274ae5..774f1a7a3623a 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_transpose_utils.mdx b/api_docs/kbn_transpose_utils.mdx index 57e6d425bf4d4..35f53e92c5f60 100644 --- a/api_docs/kbn_transpose_utils.mdx +++ b/api_docs/kbn_transpose_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-transpose-utils title: "@kbn/transpose-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/transpose-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/transpose-utils'] --- import kbnTransposeUtilsObj from './kbn_transpose_utils.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index fac731245ed8c..f57723bb036f5 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx index 7e792d3f66b90..f5be09d7a9f1d 100644 --- a/api_docs/kbn_try_in_console.mdx +++ b/api_docs/kbn_try_in_console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-try-in-console title: "@kbn/try-in-console" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/try-in-console plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] --- import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index cb0d49a62dd37..33015c03bdb95 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: 2025-01-20 +date: 2025-01-21 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 7abf4b0cc5b7e..3aa8d7077d854 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: 2025-01-20 +date: 2025-01-21 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 a95151b24af7a..e5ccf77e883e8 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: 2025-01-20 +date: 2025-01-21 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 fa51d942cb935..e05f49d79e212 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: 2025-01-20 +date: 2025-01-21 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 e46cb0175a0dd..3bbf317eabdd6 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 0b0444fdda0df..e3f6f3e765869 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 60a9fd60bea78..a9b67fb6b3995 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 302c1e550445a..6e5314e5a9b3d 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 84db4446eef01..829570b28eb25 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_prompt.mdx b/api_docs/kbn_unsaved_changes_prompt.mdx index e6d450fe846ef..f970c59275a2e 100644 --- a/api_docs/kbn_unsaved_changes_prompt.mdx +++ b/api_docs/kbn_unsaved_changes_prompt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-prompt title: "@kbn/unsaved-changes-prompt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-prompt plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-prompt'] --- import kbnUnsavedChangesPromptObj from './kbn_unsaved_changes_prompt.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index fd851ba5a351d..831887bcc46fa 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 67e4df92e2f1c..2d48f0e759d30 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: 2025-01-20 +date: 2025-01-21 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 31053cc646d27..520c4b70d99e7 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: 2025-01-20 +date: 2025-01-21 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 dd860129e598d..43a9ecc32a9cf 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: 2025-01-20 +date: 2025-01-21 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 f1d825c49920c..24727c3b5631b 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: 2025-01-20 +date: 2025-01-21 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 9f630dec54ecb..ce6bdf8e545f7 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index 2415180b31a6d..77a5315fc815f 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 3a7c0f558da8b..28bf3e1df4c2e 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 3e96ab1365f87..3f1c11598ce5d 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod.mdx b/api_docs/kbn_zod.mdx index fe3f2f8658b3d..5206b009b5c18 100644 --- a/api_docs/kbn_zod.mdx +++ b/api_docs/kbn_zod.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod title: "@kbn/zod" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod'] --- import kbnZodObj from './kbn_zod.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index ca670af8d5bde..84e5bd18c1193 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index a55b18b5050c3..aa24a898c64d4 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: 2025-01-20 +date: 2025-01-21 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 897eeeedb8350..6ab6ba8125d5c 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: 2025-01-20 +date: 2025-01-21 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 bcb1a85f32135..3d3998bbbc34b 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: 2025-01-20 +date: 2025-01-21 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 dd7afb4c614cc..b986ac36e2bab 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: 2025-01-20 +date: 2025-01-21 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 ea32f25f1331a..8c7d1ad8de860 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: 2025-01-20 +date: 2025-01-21 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 7e76ca9af2574..a679975dc7f63 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: 2025-01-20 +date: 2025-01-21 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 1cf84ed64a634..8e93734feb77b 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: 2025-01-20 +date: 2025-01-21 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 db336454adadd..3e651eb5be26f 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 15521014eb968..a9da51e9674de 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 3cb4cd6d36bfe..22ca3cfb82ce2 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/llm_tasks.mdx b/api_docs/llm_tasks.mdx index b63a5f89520e1..ccccc5a969f14 100644 --- a/api_docs/llm_tasks.mdx +++ b/api_docs/llm_tasks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/llmTasks title: "llmTasks" image: https://source.unsplash.com/400x175/?github description: API docs for the llmTasks plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'llmTasks'] --- import llmTasksObj from './llm_tasks.devdocs.json'; diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index afffc612e606d..54fac89333487 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx index 0dad1a550d0a1..5bd6445a9e703 100644 --- a/api_docs/logs_explorer.mdx +++ b/api_docs/logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsExplorer title: "logsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logsExplorer plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsExplorer'] --- import logsExplorerObj from './logs_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 8b92634b7932b..d6de17119bd61 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: 2025-01-20 +date: 2025-01-21 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 d83136f447c79..a3a85add21f5d 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: 2025-01-20 +date: 2025-01-21 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 000bbe7efca9c..4a2d369f0735b 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: 2025-01-20 +date: 2025-01-21 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 26a1e514245a6..d5d4810975b30 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index cb2000b01622b..942f2ef069bbb 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index c011f51e1c9c0..7ce7c19c9c824 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index ebc68c8ef0192..132dae2531112 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 73b1a6e1f39fc..fd0c841bd006d 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: 2025-01-20 +date: 2025-01-21 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 4357f5cc4298f..2f00c92b6ee3d 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: 2025-01-20 +date: 2025-01-21 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 fb923ea224374..a5fa19eaf0ec4 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: 2025-01-20 +date: 2025-01-21 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 998821a570732..b44e9f2f111a7 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 6d5601bd546b5..b151af31e42df 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 50035eeeb9043..fb1052c17a32c 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: 2025-01-20 +date: 2025-01-21 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 a352608f8c255..ba1008f830762 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -1008,7 +1008,7 @@ "label": "useAnnotations", "description": [], "signature": [ - "({ domain, editAnnotation, slo, setEditAnnotation, }?: { slo?: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }) | undefined; editAnnotation?: ({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; }) | null | undefined; setEditAnnotation?: ((annotation: ({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; }) | null) => void) | undefined; domain?: { min: string | number; max: string | number; } | undefined; }) => { annotations: ({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; })[]; onAnnotationClick: (annotations: { rects: ", + "({ domain, editAnnotation, slo, setEditAnnotation, }?: { slo?: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { createdBy?: string | undefined; updatedBy?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }) | undefined; editAnnotation?: ({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; }) | null | undefined; setEditAnnotation?: ((annotation: ({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; }) | null) => void) | undefined; domain?: { min: string | number; max: string | number; } | undefined; }) => { annotations: ({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; })[]; onAnnotationClick: (annotations: { rects: ", "RectAnnotationEvent", "[]; lines: ", "LineAnnotationEvent", @@ -1045,7 +1045,7 @@ "label": "slo", "description": [], "signature": [ - "({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }) | undefined" + "({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { createdBy?: string | undefined; updatedBy?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }) | undefined" ], "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index d0f7980f1a9c7..ef3c7c88b646d 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 1c1b458897f12..6763df096de87 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index 5256d8fd32dda..d90d278e468c1 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index 4bef46210c4db..dc3d8e8ad9e0a 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index bcbb1efb27e29..8bde075e8dfa7 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index a3e7f10e3d845..5e4dd1333ae2c 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: 2025-01-20 +date: 2025-01-21 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 112be12a244c5..2e264b5b7f0aa 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: 2025-01-20 +date: 2025-01-21 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 346c081e4a345..d1cc2a6043b2d 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index a0b2f0e6276af..3df9960c4cd1a 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 41ab23201be5b..f5677f97b496a 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 55023 | 255 | 41344 | 2706 | +| 55038 | 255 | 41357 | 2707 | ## Plugin Directory @@ -69,7 +69,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | A stateful layer to register shared features and provide an access point to discover without a direct dependency | 26 | 0 | 23 | 2 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | Server APIs for the Elastic AI Assistant | 55 | 0 | 40 | 2 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 172 | 0 | 145 | 2 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 167 | 0 | 140 | 2 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 15 | 0 | 15 | 2 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 54 | 0 | 47 | 1 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | Adds dashboards for discovering and managing Enterprise Search products. | 5 | 0 | 5 | 0 | @@ -163,7 +163,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 23 | 0 | 23 | 7 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds a standardized Presentation panel which allows any forward ref component to interface with various Kibana systems. | 9 | 0 | 9 | 4 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 126 | 2 | 102 | 8 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 124 | 2 | 100 | 7 | | | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 23 | 0 | 9 | 2 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 16 | 1 | 16 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 22 | 0 | 22 | 7 | @@ -191,7 +191,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 5 | 0 | 5 | 0 | | searchprofiler | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 461 | 0 | 238 | 0 | -| | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 192 | 0 | 124 | 35 | +| | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 193 | 0 | 125 | 35 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | ESS customizations for Security Solution. | 6 | 0 | 6 | 0 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | Serverless customizations for security. | 7 | 0 | 7 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | The core Serverless plugin, providing APIs to Serverless Project plugins. | 25 | 0 | 24 | 0 | @@ -207,12 +207,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/streams-program-team](https://github.com/orgs/elastic/teams/streams-program-team) | A manager for Streams | 13 | 0 | 13 | 13 | | | [@elastic/streams-program-team](https://github.com/orgs/elastic/teams/streams-program-team) | - | 8 | 0 | 8 | 0 | | synthetics | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 104 | 0 | 61 | 7 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 105 | 0 | 62 | 7 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 47 | 0 | 1 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 31 | 0 | 26 | 6 | | telemetryCollectionXpack | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 0 | 0 | -| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | Elastic threat intelligence helps you see if you are open to or have been subject to current or historical known threats | 30 | 0 | 14 | 4 | +| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | Elastic threat intelligence helps you see if you are open to or have been subject to current or historical known threats | 31 | 0 | 14 | 4 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 236 | 1 | 192 | 18 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the transforms features provided by Elastic. Transforms enable you to convert existing Elasticsearch indices into summarized indices, which provide opportunities for new insights and analytics. | 4 | 0 | 4 | 1 | | translations | [@elastic/kibana-localization](https://github.com/orgs/elastic/teams/kibana-localization) | - | 0 | 0 | 0 | 0 | @@ -379,9 +379,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 22 | 0 | 7 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 9 | 0 | 9 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 7 | 0 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 54 | 7 | 54 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 57 | 7 | 57 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 15 | 0 | 15 | 1 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 568 | 2 | 243 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 569 | 2 | 243 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 96 | 0 | 83 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 46 | 0 | 45 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 2 | 0 | @@ -494,7 +494,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 52 | 0 | 52 | 1 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 19 | 0 | 14 | 0 | | | [@elastic/security-threat-hunting](https://github.com/orgs/elastic/teams/security-threat-hunting) | - | 55 | 0 | 54 | 0 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 7 | 0 | 5 | 0 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 8 | 0 | 6 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 44 | 0 | 43 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 7 | 0 | 7 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 5 | 0 | 5 | 0 | @@ -712,14 +712,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 282 | 1 | 161 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 74 | 0 | 73 | 0 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 7 | 0 | 0 | 0 | -| | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 15 | 0 | 15 | 7 | +| | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 17 | 0 | 17 | 9 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 54 | 0 | 49 | 0 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 29 | 0 | 23 | 0 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 2 | 0 | 0 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 47 | 0 | 12 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 56 | 1 | 41 | 0 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 92 | 0 | 70 | 6 | -| | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 341 | 1 | 337 | 32 | +| | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 353 | 1 | 349 | 32 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 91 | 0 | 78 | 1 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 107 | 0 | 96 | 1 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 15 | 0 | 7 | 0 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 8477d4b17e1b0..9225820d6ac2f 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.devdocs.json b/api_docs/presentation_util.devdocs.json index e08e196fc1845..66b10c923dbb2 100644 --- a/api_docs/presentation_util.devdocs.json +++ b/api_docs/presentation_util.devdocs.json @@ -37,41 +37,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.FloatingActions", - "type": "Function", - "tags": [], - "label": "FloatingActions", - "description": [], - "signature": [ - "({ children, viewMode, isEnabled, api, className, disabledActions, }: ", - "FloatingActionsProps", - ") => React.JSX.Element" - ], - "path": "src/platform/plugins/shared/presentation_util/public/components/floating_actions/floating_actions.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.FloatingActions.$1", - "type": "Object", - "tags": [], - "label": "{\n children,\n viewMode,\n isEnabled,\n api,\n className = '',\n disabledActions,\n}", - "description": [], - "signature": [ - "FloatingActionsProps" - ], - "path": "src/platform/plugins/shared/presentation_util/public/components/floating_actions/floating_actions.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "presentationUtil", "id": "def-public.LazyDashboardPicker", diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 1373c73dbee45..e2d4fe7dfc0d3 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 126 | 2 | 102 | 8 | +| 124 | 2 | 100 | 7 | ## Client diff --git a/api_docs/product_doc_base.mdx b/api_docs/product_doc_base.mdx index ef8401c0833b5..7ac849155e8c2 100644 --- a/api_docs/product_doc_base.mdx +++ b/api_docs/product_doc_base.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/productDocBase title: "productDocBase" image: https://source.unsplash.com/400x175/?github description: API docs for the productDocBase plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'productDocBase'] --- import productDocBaseObj from './product_doc_base.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index e23e6b75ab311..c12c4c65fa1c4 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index eeb681d14ff10..61551e852a350 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 7d405cd8dc7c6..b560b00c75ff2 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: 2025-01-20 +date: 2025-01-21 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 711b5737e15a6..8c02c169b682c 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index d66d157e478b3..99690584b388d 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: 2025-01-20 +date: 2025-01-21 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 4dfad9c2fb4bf..8169728a794c0 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: 2025-01-20 +date: 2025-01-21 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 b8676d1475e8c..4a47afce2f3aa 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: 2025-01-20 +date: 2025-01-21 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 91b20a11c14d2..1fdf6b26e4e51 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: 2025-01-20 +date: 2025-01-21 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 b767d8a8d1e12..a5d32f07005ac 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: 2025-01-20 +date: 2025-01-21 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 3924f16e87098..8ae493703e3a8 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: 2025-01-20 +date: 2025-01-21 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 ca11b78cefe5e..4b17aa6ed79ca 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: 2025-01-20 +date: 2025-01-21 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 94b45bb933dcd..8bafb2aaaa871 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: 2025-01-20 +date: 2025-01-21 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 97cc0501d26ef..fe69e9f50331b 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: 2025-01-20 +date: 2025-01-21 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 83f6793b1f95b..f4acebc11850b 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: 2025-01-20 +date: 2025-01-21 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 002e7d1605824..5407be439fd71 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_assistant.mdx b/api_docs/search_assistant.mdx index 71d4e0f9e252a..0cddc7bf61ca1 100644 --- a/api_docs/search_assistant.mdx +++ b/api_docs/search_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchAssistant title: "searchAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the searchAssistant plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchAssistant'] --- import searchAssistantObj from './search_assistant.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index a38852049b25d..e5349a83a86b5 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_homepage.mdx b/api_docs/search_homepage.mdx index c0f6494ca9a12..e39cd6df256b1 100644 --- a/api_docs/search_homepage.mdx +++ b/api_docs/search_homepage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchHomepage title: "searchHomepage" image: https://source.unsplash.com/400x175/?github description: API docs for the searchHomepage plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchHomepage'] --- import searchHomepageObj from './search_homepage.devdocs.json'; diff --git a/api_docs/search_indices.mdx b/api_docs/search_indices.mdx index 0b42a269344da..f72e4e584262d 100644 --- a/api_docs/search_indices.mdx +++ b/api_docs/search_indices.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchIndices title: "searchIndices" image: https://source.unsplash.com/400x175/?github description: API docs for the searchIndices plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchIndices'] --- import searchIndicesObj from './search_indices.devdocs.json'; diff --git a/api_docs/search_inference_endpoints.mdx b/api_docs/search_inference_endpoints.mdx index 0b99fbc42443a..cb20ccd57d87e 100644 --- a/api_docs/search_inference_endpoints.mdx +++ b/api_docs/search_inference_endpoints.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchInferenceEndpoints title: "searchInferenceEndpoints" image: https://source.unsplash.com/400x175/?github description: API docs for the searchInferenceEndpoints plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchInferenceEndpoints'] --- import searchInferenceEndpointsObj from './search_inference_endpoints.devdocs.json'; diff --git a/api_docs/search_navigation.mdx b/api_docs/search_navigation.mdx index 67b2c1122fb11..a57135fdaa8b5 100644 --- a/api_docs/search_navigation.mdx +++ b/api_docs/search_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNavigation title: "searchNavigation" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNavigation plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNavigation'] --- import searchNavigationObj from './search_navigation.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index 5227de7e9ed15..7308765f1ffef 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index 7521b59f7242d..6bb0387e768f3 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/search_synonyms.mdx b/api_docs/search_synonyms.mdx index 5a8ed093e2a90..1a97bec02dd69 100644 --- a/api_docs/search_synonyms.mdx +++ b/api_docs/search_synonyms.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchSynonyms title: "searchSynonyms" image: https://source.unsplash.com/400x175/?github description: API docs for the searchSynonyms plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchSynonyms'] --- import searchSynonymsObj from './search_synonyms.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index b2e20f44c190c..c598c2d2fed28 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index 4bbdad9e1d6ad..ca6862ff2c67a 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -3240,6 +3240,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "securitySolution", + "id": "def-common.SECURITY_FEATURE_ID", + "type": "string", + "tags": [], + "label": "SECURITY_FEATURE_ID", + "description": [], + "signature": [ + "\"siemV2\"" + ], + "path": "x-pack/solutions/security/plugins/security_solution/common/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "securitySolution", "id": "def-common.SENTINEL_ONE_ACTIVITY_INDEX_PATTERN", diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index e0873233bc903..7151b4899187d 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-solution](https://github.com/orgs/elastic/teams/secur | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 192 | 0 | 124 | 35 | +| 193 | 0 | 125 | 35 | ## Client diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index e3f571ce11015..857b6deba8702 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: 2025-01-20 +date: 2025-01-21 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 b467c31a68d4a..7513012024d9d 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: 2025-01-20 +date: 2025-01-21 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 e2a91c00f93a2..26d60941ed2c7 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: 2025-01-20 +date: 2025-01-21 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 76f6cb309004c..1e65edc618c88 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: 2025-01-20 +date: 2025-01-21 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 23155a48aca1d..e729b495cc3cd 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: 2025-01-20 +date: 2025-01-21 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 026ea73e8e223..d765e61c5a77c 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: 2025-01-20 +date: 2025-01-21 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 02b949d37fad2..9909329d46357 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index 54f368d29f247..04123974ce1a0 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 1793f2996e134..58de98555fba8 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: 2025-01-20 +date: 2025-01-21 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 f26fb1adaf294..199ac4236cb4a 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: 2025-01-20 +date: 2025-01-21 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 f71522465306d..bac1b3236341b 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: 2025-01-20 +date: 2025-01-21 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 cb2e6ccfd0771..ecde202e00d5e 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/streams.mdx b/api_docs/streams.mdx index d68495baa1af2..b776051e960d9 100644 --- a/api_docs/streams.mdx +++ b/api_docs/streams.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streams title: "streams" image: https://source.unsplash.com/400x175/?github description: API docs for the streams plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streams'] --- import streamsObj from './streams.devdocs.json'; diff --git a/api_docs/streams_app.mdx b/api_docs/streams_app.mdx index 9cc26ad675e8b..dea90e36a74a6 100644 --- a/api_docs/streams_app.mdx +++ b/api_docs/streams_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streamsApp title: "streamsApp" image: https://source.unsplash.com/400x175/?github description: API docs for the streamsApp plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streamsApp'] --- import streamsAppObj from './streams_app.devdocs.json'; diff --git a/api_docs/task_manager.devdocs.json b/api_docs/task_manager.devdocs.json index 6c8d2270f1d50..e51e55bf783b0 100644 --- a/api_docs/task_manager.devdocs.json +++ b/api_docs/task_manager.devdocs.json @@ -1286,6 +1286,27 @@ "path": "x-pack/platform/plugins/shared/task_manager/server/task.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "taskManager", + "id": "def-server.TaskInstance.priority", + "type": "CompoundType", + "tags": [], + "label": "priority", + "description": [], + "signature": [ + { + "pluginId": "taskManager", + "scope": "server", + "docId": "kibTaskManagerPluginApi", + "section": "def-server.TaskPriority", + "text": "TaskPriority" + }, + " | undefined" + ], + "path": "x-pack/platform/plugins/shared/task_manager/server/task.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 93a76d79822a5..126cf561acfc1 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 104 | 0 | 61 | 7 | +| 105 | 0 | 62 | 7 | ## Server diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 3990f8b4ed11d..de3716ed20043 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: 2025-01-20 +date: 2025-01-21 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 c2b3cab263a9e..35bb3ed7ceaa5 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 2156ed0899d9c..0a6500ad1b9b9 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.devdocs.json b/api_docs/threat_intelligence.devdocs.json index f55a8d2199db8..c0f838576eef5 100644 --- a/api_docs/threat_intelligence.devdocs.json +++ b/api_docs/threat_intelligence.devdocs.json @@ -180,6 +180,19 @@ ], "returnComment": [] }, + { + "parentPluginId": "threatIntelligence", + "id": "def-public.SecuritySolutionPluginContext.hasAccessToTimeline", + "type": "boolean", + "tags": [], + "label": "hasAccessToTimeline", + "description": [ + "\nWhether the current user has access to timeline" + ], + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "threatIntelligence", "id": "def-public.SecuritySolutionPluginContext.useQuery", diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index a093b68cf312b..7c9d314b92583 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-threat-hunting-investigations](https://github.com/org | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 30 | 0 | 14 | 4 | +| 31 | 0 | 14 | 4 | ## Client diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index c5d3d705c6e80..5c86f102c5740 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: 2025-01-20 +date: 2025-01-21 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 3c461307f4b7f..935156f826515 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: 2025-01-20 +date: 2025-01-21 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 ed214f365ca79..32b7569a851e9 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.devdocs.json b/api_docs/ui_actions.devdocs.json index c6fb3dcdd966f..a56bdc273bb5d 100644 --- a/api_docs/ui_actions.devdocs.json +++ b/api_docs/ui_actions.devdocs.json @@ -318,18 +318,6 @@ "plugin": "uiActionsEnhanced", "path": "src/platform/plugins/shared/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts" }, - { - "plugin": "controls", - "path": "src/platform/plugins/shared/controls/public/plugin.ts" - }, - { - "plugin": "controls", - "path": "src/platform/plugins/shared/controls/public/plugin.ts" - }, - { - "plugin": "controls", - "path": "src/platform/plugins/shared/controls/public/plugin.ts" - }, { "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/public/ui_actions/index.ts" diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index e548d46923d25..e526418928a8a 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: 2025-01-20 +date: 2025-01-21 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 048b9bb31dd06..85a54f015d81f 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 8ea7a98fc2b17..a1d20100c23dd 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.devdocs.json b/api_docs/unified_histogram.devdocs.json index 9410d95fada92..0c6bc9b169c12 100644 --- a/api_docs/unified_histogram.devdocs.json +++ b/api_docs/unified_histogram.devdocs.json @@ -1880,7 +1880,7 @@ "\nThe API exposed by the container" ], "signature": [ - "{ refetch: () => void; } & Pick<", + "{ fetch: () => void; } & Pick<", "UnifiedHistogramStateService", ", \"state$\" | \"setChartHidden\" | \"setTopPanelHeight\" | \"setTimeInterval\" | \"setTotalHits\">" ], diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 930fe1df903da..919d73333631b 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: 2025-01-20 +date: 2025-01-21 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 189d5a8d54737..085a8ca841263 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: 2025-01-20 +date: 2025-01-21 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 7504a751e29b0..44af0ac1dc7d6 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index d526257177495..bf80bdb22d021 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 3c80456ea72a4..53235bc39c855 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: 2025-01-20 +date: 2025-01-21 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 25a1abf2314b8..d717fb9a6fb84 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: 2025-01-20 +date: 2025-01-21 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 79fb2235d9159..bd8048b5dba75 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: 2025-01-20 +date: 2025-01-21 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 3ee8d66ff7e16..1ad6b0e65d189 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: 2025-01-20 +date: 2025-01-21 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 4ccc7b1d4fa0d..6261af129f1f1 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: 2025-01-20 +date: 2025-01-21 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 579cb370bf754..5a816d94d632d 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: 2025-01-20 +date: 2025-01-21 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 548f8d2c71680..2875844f90973 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: 2025-01-20 +date: 2025-01-21 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 d42cc65bbbf39..1c3c4799009c6 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: 2025-01-20 +date: 2025-01-21 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 456cdf9c0cb5b..2f7acce8fc781 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: 2025-01-20 +date: 2025-01-21 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 d711648d6ea73..c5a4432b80944 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: 2025-01-20 +date: 2025-01-21 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 aa3319d4efe90..54cfcd29f73ee 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: 2025-01-20 +date: 2025-01-21 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 865dfd469a0c2..0f87e2324caa9 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: 2025-01-20 +date: 2025-01-21 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 231bf999c8029..e9681323b4d30 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: 2025-01-20 +date: 2025-01-21 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 cab55b5badda9..48f8f9b075849 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: 2025-01-20 +date: 2025-01-21 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 001a8aa2029927c533a562f04bcb6aaf62d4618b Mon Sep 17 00:00:00 2001 From: Miriam <31922082+MiriamAparicio@users.noreply.github.com> Date: Tue, 21 Jan 2025 08:23:32 +0000 Subject: [PATCH 019/148] [ObsUx][VisualRefresh] Fix styled in logs shared component (#207237) Closes https://github.com/elastic/kibana/issues/207174 #### Summary Fixed the error due to the use of the kibana theme insteaf of the EuiTheme in logs shared componets used in APM --- .../logging/log_text_stream/loading_item_view.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/x-pack/platform/plugins/shared/logs_shared/public/components/logging/log_text_stream/loading_item_view.tsx b/x-pack/platform/plugins/shared/logs_shared/public/components/logging/log_text_stream/loading_item_view.tsx index 68b21ad8d029e..e3d24b0101495 100644 --- a/x-pack/platform/plugins/shared/logs_shared/public/components/logging/log_text_stream/loading_item_view.tsx +++ b/x-pack/platform/plugins/shared/logs_shared/public/components/logging/log_text_stream/loading_item_view.tsx @@ -17,7 +17,7 @@ import { FormattedMessage, FormattedTime, FormattedRelative } from '@kbn/i18n-re import * as React from 'react'; import { Unit } from '@kbn/datemath'; -import { euiStyled } from '@kbn/kibana-react-plugin/common'; +import styled from '@emotion/styled'; import { LogTextSeparator } from './log_text_separator'; import { extendDatemath } from '../../../utils/datemath'; @@ -98,16 +98,16 @@ export class LogTextStreamLoadingItemView extends React.PureComponent< } } -const LoadingItemViewExtra = euiStyled(EuiFlexGroup)` +const LoadingItemViewExtra = styled(EuiFlexGroup)` height: 40px; `; -const ProgressEntryWrapper = euiStyled.div<{ position: Position }>` - padding-left: ${(props) => props.theme.eui.euiSizeS}; +const ProgressEntryWrapper = styled.div<{ position: Position }>` + padding-left: ${(props) => props.theme.euiTheme.size.s}; padding-top: ${(props) => - props.position === 'start' ? props.theme.eui.euiSizeL : props.theme.eui.euiSizeM}; + props.position === 'start' ? props.theme.euiTheme.size.l : props.theme.euiTheme.size.m}; padding-bottom: ${(props) => - props.position === 'end' ? props.theme.eui.euiSizeL : props.theme.eui.euiSizeM}; + props.position === 'end' ? props.theme.euiTheme.size.l : props.theme.euiTheme.size.m}; `; type ProgressMessageProps = Pick< From 4d539f0f5c3abadeba0b8c086a259025f7a4c7fa Mon Sep 17 00:00:00 2001 From: Ignacio Rivas Date: Tue, 21 Jan 2025 09:48:30 +0100 Subject: [PATCH 020/148] [Index Management] If an index template has a default_pipeline, show a link to it (#206923) --- .../public/application/constants/index.ts | 2 + .../constants/ingest_pipelines_locator.ts | 10 ++++ .../template_details/tabs/tab_summary.tsx | 29 +++++++++- .../services/use_ingest_pipeline_locator.ts | 26 +++++++++ .../index_templates_tab/index_template_tab.ts | 58 +++++++++++++++++-- .../page_objects/index_management_page.ts | 11 ++++ 6 files changed, 131 insertions(+), 5 deletions(-) create mode 100644 x-pack/platform/plugins/shared/index_management/public/application/constants/ingest_pipelines_locator.ts create mode 100644 x-pack/platform/plugins/shared/index_management/public/application/services/use_ingest_pipeline_locator.ts diff --git a/x-pack/platform/plugins/shared/index_management/public/application/constants/index.ts b/x-pack/platform/plugins/shared/index_management/public/application/constants/index.ts index f72e56310a9c7..04b30a168e983 100644 --- a/x-pack/platform/plugins/shared/index_management/public/application/constants/index.ts +++ b/x-pack/platform/plugins/shared/index_management/public/application/constants/index.ts @@ -10,3 +10,5 @@ export const REACT_ROOT_ID = 'indexManagementReactRoot'; export const ENRICH_POLICIES_REQUIRED_PRIVILEGES = ['manage_enrich']; export * from './ilm_locator'; + +export * from './ingest_pipelines_locator'; diff --git a/x-pack/platform/plugins/shared/index_management/public/application/constants/ingest_pipelines_locator.ts b/x-pack/platform/plugins/shared/index_management/public/application/constants/ingest_pipelines_locator.ts new file mode 100644 index 0000000000000..5d6037d2e3472 --- /dev/null +++ b/x-pack/platform/plugins/shared/index_management/public/application/constants/ingest_pipelines_locator.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const INGEST_PIPELINES_LOCATOR_ID = 'INGEST_PIPELINES_APP_LOCATOR'; +export const INGEST_PIPELINES_EDIT = 'pipeline_edit'; +export const INGEST_PIPELINES_LIST = 'pipelines_list'; diff --git a/x-pack/platform/plugins/shared/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx b/x-pack/platform/plugins/shared/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx index a6fbe93642813..83c60f3d04220 100644 --- a/x-pack/platform/plugins/shared/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx +++ b/x-pack/platform/plugins/shared/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx @@ -25,8 +25,9 @@ import { useAppContext } from '../../../../../app_context'; import { serializeAsESLifecycle } from '../../../../../../../common/lib'; import { getLifecycleValue } from '../../../../../lib/data_streams'; import { TemplateDeserialized } from '../../../../../../../common'; -import { ILM_PAGES_POLICY_EDIT } from '../../../../../constants'; +import { ILM_PAGES_POLICY_EDIT, INGEST_PIPELINES_EDIT } from '../../../../../constants'; import { useIlmLocator } from '../../../../../services/use_ilm_locator'; +import { useIngestPipelinesLocator } from '../../../../../services/use_ingest_pipeline_locator'; import { allowAutoCreateRadioIds } from '../../../../../../../common/constants'; import { indexModeLabels } from '../../../../../lib/index_mode_labels'; @@ -66,6 +67,13 @@ export const TabSummary: React.FunctionComponent = ({ templateDetails }) const { history, core } = useAppContext(); const ilmPolicyLink = useIlmLocator(ILM_PAGES_POLICY_EDIT, ilmPolicy?.name); + // Compute the linked ingest pipeline URL + const linkedIngestPipeline = templateDetails?.template?.settings?.index?.default_pipeline; + const linkedIngestPipelineUrl = useIngestPipelinesLocator( + INGEST_PIPELINES_EDIT, + linkedIngestPipeline + ); + return ( <> @@ -154,6 +162,25 @@ export const TabSummary: React.FunctionComponent = ({ templateDetails }) )} + + {linkedIngestPipeline && ( + <> + + + + + core.application.navigateToUrl(linkedIngestPipelineUrl)} + data-test-subj="linkedIngestPipeline" + > + {linkedIngestPipeline} + + + + )} diff --git a/x-pack/platform/plugins/shared/index_management/public/application/services/use_ingest_pipeline_locator.ts b/x-pack/platform/plugins/shared/index_management/public/application/services/use_ingest_pipeline_locator.ts new file mode 100644 index 0000000000000..cfcd9ff326f62 --- /dev/null +++ b/x-pack/platform/plugins/shared/index_management/public/application/services/use_ingest_pipeline_locator.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useLocatorUrl } from '@kbn/share-plugin/public'; +import { useAppContext } from '../app_context'; +import { + INGEST_PIPELINES_LOCATOR_ID, + INGEST_PIPELINES_EDIT, + INGEST_PIPELINES_LIST, +} from '../constants'; + +export const useIngestPipelinesLocator = ( + page: typeof INGEST_PIPELINES_EDIT | typeof INGEST_PIPELINES_LIST, + pipelineId?: string +): string => { + const ctx = useAppContext(); + const locator = + pipelineId === undefined ? null : ctx.url.locators.get(INGEST_PIPELINES_LOCATOR_ID)!; + const url = useLocatorUrl(locator, { page, pipelineId }, {}, [page, pipelineId]); + + return url; +}; diff --git a/x-pack/test/functional/apps/index_management/index_templates_tab/index_template_tab.ts b/x-pack/test/functional/apps/index_management/index_templates_tab/index_template_tab.ts index 97ce2233e6546..003e7e38c00a5 100644 --- a/x-pack/test/functional/apps/index_management/index_templates_tab/index_template_tab.ts +++ b/x-pack/test/functional/apps/index_management/index_templates_tab/index_template_tab.ts @@ -14,6 +14,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const security = getService('security'); const testSubjects = getService('testSubjects'); const es = getService('es'); + const browser = getService('browser'); const INDEX_TEMPLATE_NAME = 'index-template-test-name'; @@ -28,10 +29,16 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); afterEach(async () => { - await es.indices.deleteIndexTemplate({ - name: INDEX_TEMPLATE_NAME, - }); - await testSubjects.click('reloadButton'); + await es.indices.deleteIndexTemplate( + { + name: INDEX_TEMPLATE_NAME, + }, + { ignore: [404] } + ); + + if (await testSubjects.exists('reloadButton')) { + await testSubjects.click('reloadButton'); + } }); describe('index template creation', () => { @@ -221,5 +228,48 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); }); + + describe('Index template list', () => { + const TEST_TEMPLATE = 'a_test_template'; + const INDEX_PATTERN = `index_pattern_${Math.random()}`; + + before(async () => { + await es.indices.putIndexTemplate({ + name: TEST_TEMPLATE, + body: { + index_patterns: [INDEX_PATTERN], + template: { + settings: { + default_pipeline: 'test_pipeline', + }, + }, + }, + }); + + // Navigate to the index management + await pageObjects.common.navigateToApp('indexManagement'); + // Navigate to the templates tab + await pageObjects.indexManagement.changeTabs('templatesTab'); + }); + + after(async () => { + await es.indices.deleteIndexTemplate({ name: TEST_TEMPLATE }, { ignore: [404] }); + }); + + it('shows link to ingest pipeline when default pipeline is set', async () => { + // Open details flyout + await pageObjects.indexManagement.clickIndexTemplate(TEST_TEMPLATE); + + // Click on the linked ingest pipeline button + const linkedPipelineButton = await testSubjects.find('linkedIngestPipeline'); + await linkedPipelineButton.click(); + + // Expect to navigate to the ingest pipeline page + await pageObjects.header.waitUntilLoadingHasFinished(); + // We should've now navigated to the ingest pipelines app + const currentUrl = await browser.getCurrentUrl(); + expect(currentUrl).to.contain('/ingest/ingest_pipelines/edit/test_pipeline'); + }); + }); }); }; diff --git a/x-pack/test/functional/page_objects/index_management_page.ts b/x-pack/test/functional/page_objects/index_management_page.ts index a29e84e677cbc..5b9da3bd54906 100644 --- a/x-pack/test/functional/page_objects/index_management_page.ts +++ b/x-pack/test/functional/page_objects/index_management_page.ts @@ -38,6 +38,17 @@ export function IndexManagementPageProvider({ getService }: FtrProviderContext) await policyDetailsLinks[indexOfRow].click(); }, + async clickIndexTemplate(name: string): Promise { + const indexTemplateLinks = await testSubjects.findAll('templateDetailsLink'); + + for (const link of indexTemplateLinks) { + if ((await link.getVisibleText()).includes(name)) { + await link.click(); + return; + } + } + }, + async clickBulkEditDataRetention(dataStreamNames: string[]): Promise { for (const dsName of dataStreamNames) { const checkbox = await testSubjects.find(`checkboxSelectRow-${dsName}`); From 8b97ad0b1332fbef0e0e13ac3a01d842a8f7b8c9 Mon Sep 17 00:00:00 2001 From: jennypavlova Date: Tue, 21 Jan 2025 09:49:03 +0100 Subject: [PATCH 021/148] [APM][Transactions] Test trace summary (#207115) Closes #206947 ## Summary This PR adds tests for trace summary (Otel / APM cases) and changes the `styled-components` to `css`. --- .../src/lib/apm/apm_fields.ts | 1 + .../src/lib/apm/transaction.ts | 3 ++ .../src/lib/otel/index.ts | 4 +- .../src/lib/otel/transaction.ts | 3 ++ .../test/scenarios/01_simple_trace.test.ts | 3 ++ .../01_simple_trace.test.ts.snap | 45 ++++++++++++++++++ ...el_service_overview_and_transactions.cy.ts | 13 ++++++ .../transaction_details.cy.ts | 15 ++++++ .../summary/http_info_summary_item/index.tsx | 46 +++++++++++-------- .../summary/http_status_badge/index.tsx | 4 +- 10 files changed, 116 insertions(+), 21 deletions(-) diff --git a/packages/kbn-apm-synthtrace-client/src/lib/apm/apm_fields.ts b/packages/kbn-apm-synthtrace-client/src/lib/apm/apm_fields.ts index 3371cc27227cb..811a78c5d545c 100644 --- a/packages/kbn-apm-synthtrace-client/src/lib/apm/apm_fields.ts +++ b/packages/kbn-apm-synthtrace-client/src/lib/apm/apm_fields.ts @@ -213,6 +213,7 @@ export type ApmFields = Fields<{ }>; 'url.original': string; 'url.domain': string; + 'url.full': string; }> & ApmApplicationMetricFields & ExperimentalFields; diff --git a/packages/kbn-apm-synthtrace-client/src/lib/apm/transaction.ts b/packages/kbn-apm-synthtrace-client/src/lib/apm/transaction.ts index 3f3f15e1d22b0..a5b3811887c6d 100644 --- a/packages/kbn-apm-synthtrace-client/src/lib/apm/transaction.ts +++ b/packages/kbn-apm-synthtrace-client/src/lib/apm/transaction.ts @@ -25,6 +25,9 @@ export class Transaction extends BaseSpan { 'processor.event': 'transaction', 'transaction.id': generateShortId(), 'transaction.sampled': true, + 'http.request.method': 'GET', + 'http.response.status_code': 200, + 'url.full': 'elastic.co', }); } diff --git a/packages/kbn-apm-synthtrace-client/src/lib/otel/index.ts b/packages/kbn-apm-synthtrace-client/src/lib/otel/index.ts index dfa3f10d8fa6f..43d159a632203 100644 --- a/packages/kbn-apm-synthtrace-client/src/lib/otel/index.ts +++ b/packages/kbn-apm-synthtrace-client/src/lib/otel/index.ts @@ -22,7 +22,6 @@ interface OtelSharedResourceAttributes { 'telemetry.sdk.language'?: string; 'telemetry.sdk.name'?: string; 'telemetry.sdk.version'?: string; - 'some.resource.attribute'?: string; } export interface OtelDocument extends Fields { @@ -165,6 +164,9 @@ class Otel extends Serializable { 'transaction.root': true, 'transaction.sampled': true, 'transaction.type': 'unknown', + 'http.request.method': 'POST', + 'http.response.status_code': 200, + 'url.full': 'elastic.co', }, data_stream: { dataset: 'generic.otel', diff --git a/packages/kbn-apm-synthtrace-client/src/lib/otel/transaction.ts b/packages/kbn-apm-synthtrace-client/src/lib/otel/transaction.ts index d6f7c7111b187..0953028f2e008 100644 --- a/packages/kbn-apm-synthtrace-client/src/lib/otel/transaction.ts +++ b/packages/kbn-apm-synthtrace-client/src/lib/otel/transaction.ts @@ -24,6 +24,9 @@ export interface OtelTransactionDocument extends OtelDocument { 'transaction.root'?: boolean; 'transaction.sampled'?: boolean; 'transaction.type'?: string; + 'http.response.status_code'?: number; + 'http.request.method'?: string; + 'url.full'?: string; }; status?: { code?: string; diff --git a/packages/kbn-apm-synthtrace/src/test/scenarios/01_simple_trace.test.ts b/packages/kbn-apm-synthtrace/src/test/scenarios/01_simple_trace.test.ts index 8d1be5e0256dd..692a96df1cad3 100644 --- a/packages/kbn-apm-synthtrace/src/test/scenarios/01_simple_trace.test.ts +++ b/packages/kbn-apm-synthtrace/src/test/scenarios/01_simple_trace.test.ts @@ -95,6 +95,8 @@ describe('simple trace', () => { 'container.id': 'instance-1', 'event.outcome': 'success', 'host.name': 'instance-1', + 'http.request.method': 'GET', + 'http.response.status_code': 200, 'processor.event': 'transaction', 'processor.name': 'transaction', 'service.environment': 'production', @@ -107,6 +109,7 @@ describe('simple trace', () => { 'transaction.name': 'GET /api/product/list', 'transaction.type': 'request', 'transaction.sampled': true, + 'url.full': 'elastic.co', }); }); diff --git a/packages/kbn-apm-synthtrace/src/test/scenarios/__snapshots__/01_simple_trace.test.ts.snap b/packages/kbn-apm-synthtrace/src/test/scenarios/__snapshots__/01_simple_trace.test.ts.snap index f318942f397b3..ac84c00d38ad1 100644 --- a/packages/kbn-apm-synthtrace/src/test/scenarios/__snapshots__/01_simple_trace.test.ts.snap +++ b/packages/kbn-apm-synthtrace/src/test/scenarios/__snapshots__/01_simple_trace.test.ts.snap @@ -8,6 +8,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -20,6 +22,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459200050, @@ -89,6 +92,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -101,6 +106,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459260050, @@ -170,6 +176,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -182,6 +190,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459320050, @@ -251,6 +260,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -263,6 +274,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459380050, @@ -332,6 +344,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -344,6 +358,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459440050, @@ -413,6 +428,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -425,6 +442,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459500050, @@ -494,6 +512,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -506,6 +526,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459560050, @@ -575,6 +596,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -587,6 +610,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459620050, @@ -656,6 +680,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -668,6 +694,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459680050, @@ -737,6 +764,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -749,6 +778,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459740050, @@ -818,6 +848,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -830,6 +862,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459800050, @@ -899,6 +932,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -911,6 +946,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459860050, @@ -980,6 +1016,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -992,6 +1030,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459920050, @@ -1061,6 +1100,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -1073,6 +1114,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609459980050, @@ -1142,6 +1184,8 @@ Array [ "container.id": "instance-1", "event.outcome": "success", "host.name": "instance-1", + "http.request.method": "GET", + "http.response.status_code": 200, "processor.event": "transaction", "processor.name": "transaction", "service.environment": "production", @@ -1154,6 +1198,7 @@ Array [ "transaction.name": "GET /api/product/list", "transaction.sampled": true, "transaction.type": "request", + "url.full": "elastic.co", }, Object { "@timestamp": 1609460040050, diff --git a/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/e2e/service_overview/otel_service_overview_and_transactions.cy.ts b/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/e2e/service_overview/otel_service_overview_and_transactions.cy.ts index 8554a3302f9b7..04edc6f42d6c4 100644 --- a/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/e2e/service_overview/otel_service_overview_and_transactions.cy.ts +++ b/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/e2e/service_overview/otel_service_overview_and_transactions.cy.ts @@ -20,6 +20,12 @@ const baseUrl = url.format({ query: { rangeFrom: start, rangeTo: end }, }); +const transactionTabPath = '/app/apm/services/sendotlp-synth/transactions/view'; +const transactionUrl = url.format({ + pathname: transactionTabPath, + query: { rangeFrom: start, rangeTo: end, transactionName: 'parent-synth' }, +}); + describe('Service Overview', () => { before(() => { synthtraceOtel.index( @@ -117,6 +123,13 @@ describe('Service Overview', () => { cy.contains('a', 'parent-synth').click(); cy.contains('h5', 'parent-synth'); }); + it('shows transaction summary', () => { + cy.visitKibana(transactionUrl); + + cy.getByTestSubj('apmHttpInfoRequestMethod').should('exist'); + cy.getByTestSubj('apmHttpInfoUrl').should('exist'); + cy.getByTestSubj('apmHttpStatusBadge').should('exist'); + }); }); describe('errors', () => { diff --git a/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/e2e/transaction_details/transaction_details.cy.ts b/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/e2e/transaction_details/transaction_details.cy.ts index 0ef8fb40ceb38..b6ebd1813fdaf 100644 --- a/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/e2e/transaction_details/transaction_details.cy.ts +++ b/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/e2e/transaction_details/transaction_details.cy.ts @@ -123,6 +123,21 @@ describe('Transaction details', () => { cy.url().should('include', 'opbeans-java/errors'); }); + describe('Trace sample summary', () => { + it('shows transaction summary', () => { + cy.visitKibana( + `/app/apm/services/opbeans-node/transactions/view?${new URLSearchParams({ + ...timeRange, + transactionName: 'GET /api/product/:id', + })}` + ); + + cy.getByTestSubj('apmHttpInfoRequestMethod').should('exist'); + cy.getByTestSubj('apmHttpInfoUrl').should('exist'); + cy.getByTestSubj('apmHttpStatusBadge').should('exist'); + }); + }); + describe('when navigating to a trace sample', () => { it('keeps the same trace sample after reloading the page', () => { cy.visitKibana( diff --git a/x-pack/solutions/observability/plugins/apm/public/components/shared/summary/http_info_summary_item/index.tsx b/x-pack/solutions/observability/plugins/apm/public/components/shared/summary/http_info_summary_item/index.tsx index 5732c426e2610..320c59a2b8233 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/shared/summary/http_info_summary_item/index.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/shared/summary/http_info_summary_item/index.tsx @@ -5,21 +5,20 @@ * 2.0. */ -import { EuiBadge, EuiToolTip } from '@elastic/eui'; +import { EuiBadge, EuiToolTip, useEuiTheme } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import styled from '@emotion/styled'; -import { truncate, unit } from '../../../../utils/style'; +import { css } from '@emotion/react'; +import { unit } from '../../../../utils/style'; import { HttpStatusBadge } from '../http_status_badge'; -const HttpInfoBadge = styled(EuiBadge)` - margin-right: ${({ theme }) => theme.euiTheme.size.xs}; -`; - -const Url = styled('span')` +const urlStyles = css` display: inline-block; vertical-align: bottom; - ${truncate(unit * 24)}; + max-width: ${unit * 24}px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; `; interface HttpInfoProps { method?: string; @@ -27,11 +26,9 @@ interface HttpInfoProps { url: string; } -const Span = styled('span')` - white-space: nowrap; -`; - export function HttpInfoSummaryItem({ status, method, url }: HttpInfoProps) { + const { euiTheme } = useEuiTheme(); + if (!url) { return null; } @@ -41,18 +38,29 @@ export function HttpInfoSummaryItem({ status, method, url }: HttpInfoProps) { }); return ( - - + + {method && ( - <>{method.toUpperCase()} + {method.toUpperCase()} )}{' '} - {url} + + {url} + - + {status && } - + ); } diff --git a/x-pack/solutions/observability/plugins/apm/public/components/shared/summary/http_status_badge/index.tsx b/x-pack/solutions/observability/plugins/apm/public/components/shared/summary/http_status_badge/index.tsx index e3f7f623642db..6ed20b0010e24 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/shared/summary/http_status_badge/index.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/shared/summary/http_status_badge/index.tsx @@ -21,7 +21,9 @@ export function HttpStatusBadge({ status }: HttpStatusBadgeProps) { return ( - {status} {statusCodes[status.toString()]} + + {status} {statusCodes[status.toString()]} + ); From 4a6891ff9f896d49a9eb6816e075cfdb0cfa17e7 Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Tue, 21 Jan 2025 10:10:47 +0100 Subject: [PATCH 022/148] [ES|QL] Vertical align expand icon in history component (#207042) ## Summary Closes https://github.com/elastic/kibana/issues/204072 Aligns in top the expandable icon in the history component image It also fixes a small bug. When the query was expanded and the user resized the window, the icon was vanished. --- .../src/editor_footer/history_starred_queries.test.tsx | 3 +++ .../src/editor_footer/history_starred_queries.tsx | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.test.tsx b/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.test.tsx index ba00e7eae6359..98c0977437fb1 100644 --- a/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.test.tsx +++ b/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.test.tsx @@ -78,6 +78,7 @@ describe('Starred and History queries components', () => { field: 'queryString', name: 'Query', render: expect.anything(), + css: expect.anything(), }, { 'data-test-subj': 'timeRan', @@ -120,6 +121,7 @@ describe('Starred and History queries components', () => { field: 'queryString', name: 'Query', render: expect.anything(), + css: expect.anything(), }, { 'data-test-subj': 'timeRan', @@ -171,6 +173,7 @@ describe('Starred and History queries components', () => { field: 'queryString', name: 'Query', render: expect.anything(), + css: expect.anything(), }, { actions: [], diff --git a/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.tsx b/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.tsx index 069cd74eb83da..e129c1a1d8b54 100644 --- a/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.tsx +++ b/src/platform/packages/private/kbn-esql-editor/src/editor_footer/history_starred_queries.tsx @@ -194,6 +194,11 @@ export const getTableColumns = ( name: i18n.translate('esqlEditor.query.recentQueriesColumnLabel', { defaultMessage: 'Query', }), + css: css` + .euiTableCellContent { + align-items: flex-start; + } + `, render: (queryString: QueryHistoryItem['queryString']) => ( { if (containerRef.current) { const textIsOverlapping = containerRef.current.offsetWidth < containerRef.current.scrollWidth; - setIsExpandable(textIsOverlapping); + setIsExpandable(textIsOverlapping || isRowExpanded); } - }, [containerWidth]); + }, [containerWidth, isRowExpanded, queryString]); return ( <> From 35794a00af9033226a85b697693bc6a56167c699 Mon Sep 17 00:00:00 2001 From: Maxim Kholod Date: Tue, 21 Jan 2025 10:21:03 +0100 Subject: [PATCH 023/148] kibana-cloud-security-posture owned UX adjustment for borealis (#205136) ## Summary This PR covers some of the changes required for the new Borealis theme: - https://github.com/elastic/security-team/issues/11230 The detailed guide of migrating to Borealis can be found in this meta ticket: - https://github.com/elastic/kibana/issues/199715 As the work is still in progress, here are the details of what is included in this PR: - the full migration is done for flows related to Cloud Security Posture. One requirement from EUI is not fulfilled, as we switched to hardcoded severity colors and hardcoded failed/passed misconfig finding colors. This is because the new severity color palette built by EUI team is not yet approved by Security Designers, see https://elastic.slack.com/archives/C0851RDCWPP/p1736954935896329 for more details - I made some straightforward changes to Cloud Defend and k8s dashboard plugins and added some todos, but these plugins are decommissioned in Serverless and from 9.0, so no thorough testing is required - In the Session View I made some straightforward changes according to the EUI guide and added TODOs where feedback from designers is required. Still waiting for the designer's feedback, but I think we can safely merge the changes present in this PR and it will bring Session View to a better state before 9.0 FF Amsterdam vs Borealis comparison screenshots for CSP and Session View: https://www.figma.com/design/XPKYLgZcoI61V3RUfHoHg9/Untitled?node-id=41-42&t=zLvulagbqCiXhrAo-0 ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [x] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [x] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../common/constants.ts | 4 +- .../common/index.ts | 1 + .../common/types/misconfigurations.ts | 8 ++ .../src/distribution_bar.stories.tsx | 13 +-- .../packages/distribution_bar/tsconfig.json | 1 - .../public/index.ts | 7 +- .../src/components/csp_evaluation_badge.tsx | 20 ++-- .../src/components/vulnerability_badges.tsx | 12 +- .../src/constants/component_constants.ts | 16 --- .../src/hooks/use_get_cvs_score_color.ts | 20 ++++ .../hooks/use_get_severity_status_color.ts | 19 +++ .../src/utils/get_finding_colors.test.ts | 77 +++++++++++++ .../public/src/utils/get_finding_colors.ts | 108 ++++++++++++++++++ .../utils/get_vulnerabilitiy_colors.test.ts | 52 --------- .../src/utils/get_vulnerability_colors.ts | 37 ------ .../src/utils/vulnerability_helpers.test.ts | 40 +++++-- .../public/src/utils/vulnerability_helpers.ts | 4 +- .../control_general_view_response/index.tsx | 10 +- .../common/types_old.ts | 7 +- .../public/assets/icons/nvd_logo_svg.tsx | 43 ++++--- .../components/compliance_score_bar.tsx | 9 +- .../components/vulnerability_severity_map.tsx | 5 +- .../compliance_score_chart.tsx | 60 +++++----- .../findings_flyout/findings_flyout.tsx | 6 +- .../layout/findings_distribution_bar.tsx | 16 ++- .../public/pages/rules/rules_counters.tsx | 12 +- .../vulnerability_finding_flyout.tsx | 13 ++- .../vulnerability_overview_tab.tsx | 28 +++-- .../vulnerability_statistics.tsx | 5 +- .../vulnerability_trend_graph.tsx | 5 +- .../cloud_security_posture/tsconfig.json | 1 - ...isconfiguration_findings_details_table.tsx | 12 +- ...vulnerabilities_findings_details_table.tsx | 4 + .../misconfiguration_preview.tsx | 13 +-- .../vulnerabilities_preview.tsx | 34 +++--- .../components/vulnerabilities_insight.tsx | 21 ++-- .../detail_panel_alert_actions/styles.ts | 107 ----------------- .../detail_panel_alert_list_item/styles.ts | 4 +- .../detail_panel_list_item/styles.ts | 2 +- .../public/components/process_tree/styles.ts | 22 +--- .../components/process_tree_alert/styles.ts | 16 +-- .../components/process_tree_node/index.tsx | 6 - .../components/process_tree_node/styles.ts | 16 +-- .../process_tree_node/use_button_styles.ts | 51 ++++----- .../public/components/tty_player/styles.ts | 2 +- .../tty_player_controls_markers/styles.ts | 24 +++- .../public/hooks/use_eui_theme.ts | 14 +-- 47 files changed, 538 insertions(+), 469 deletions(-) create mode 100644 x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/misconfigurations.ts delete mode 100644 x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts create mode 100644 x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_cvs_score_color.ts create mode 100644 x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_severity_status_color.ts create mode 100644 x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_finding_colors.test.ts create mode 100644 x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_finding_colors.ts delete mode 100644 x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerabilitiy_colors.test.ts delete mode 100644 x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts delete mode 100644 x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_actions/styles.ts diff --git a/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts index 9112dba4b9a4f..67b4b5408f742 100644 --- a/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts +++ b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts @@ -5,6 +5,7 @@ * 2.0. */ import { VulnSeverity } from './types/vulnerabilities'; +import { MisconfigurationEvaluationStatus } from './types/misconfigurations'; export const KSPM_POLICY_TEMPLATE = 'kspm'; export const CSPM_POLICY_TEMPLATE = 'cspm'; @@ -48,7 +49,8 @@ export const VULNERABILITIES_SEVERITY: Record = { UNKNOWN: 'UNKNOWN', }; -export const MISCONFIGURATION_STATUS: Record = { +export const MISCONFIGURATION_STATUS: Record = { PASSED: 'passed', FAILED: 'failed', + UNKNOWN: 'unknown', }; diff --git a/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/index.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/index.ts index 4065f7ca331a9..95aad03958940 100644 --- a/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/index.ts +++ b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/index.ts @@ -24,6 +24,7 @@ export type { } from './schema/vulnerabilities/csp_vulnerability_finding'; export type { BenchmarksCisId } from './types/benchmark'; export type { VulnSeverity } from './types/vulnerabilities'; +export type { MisconfigurationEvaluationStatus } from './types/misconfigurations'; export * from './constants'; export { extractErrorMessage, diff --git a/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/misconfigurations.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/misconfigurations.ts new file mode 100644 index 0000000000000..bd69554eae7dc --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/misconfigurations.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export type MisconfigurationEvaluationStatus = 'passed' | 'failed' | 'unknown'; diff --git a/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.stories.tsx b/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.stories.tsx index c1b292c3f08cc..e3115f3e8758f 100644 --- a/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.stories.tsx +++ b/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.stories.tsx @@ -5,7 +5,6 @@ * 2.0. */ import React from 'react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { EuiTitle, EuiSpacer } from '@elastic/eui'; import { DistributionBar as DistributionBarComponent } from '..'; @@ -13,13 +12,13 @@ const mockStatsFindings = [ { key: 'passed', count: 90, - color: euiThemeVars.euiColorVis0, + color: 'green', label: 'Passed', }, { key: 'failed', count: 10, - color: euiThemeVars.euiColorVis9, + color: 'red', label: <>{'Failed'}, }, ]; @@ -28,22 +27,22 @@ const mockStatsAlerts = [ { key: 'low', count: 1000, - color: euiThemeVars.euiColorVis0, + color: 'green', }, { key: 'medium', count: 800, - color: euiThemeVars.euiColorVis5, + color: 'gold', }, { key: 'high', count: 300, - color: euiThemeVars.euiColorVis7, + color: 'orange', }, { key: 'critical', count: 50, - color: euiThemeVars.euiColorVis9, + color: 'red', }, ]; diff --git a/x-pack/solutions/security/packages/distribution_bar/tsconfig.json b/x-pack/solutions/security/packages/distribution_bar/tsconfig.json index 277fe500caa48..c52c97337264f 100644 --- a/x-pack/solutions/security/packages/distribution_bar/tsconfig.json +++ b/x-pack/solutions/security/packages/distribution_bar/tsconfig.json @@ -13,7 +13,6 @@ }, "include": ["**/*.ts", "**/*.tsx"], "kbn_references": [ - "@kbn/ui-theme", ], "exclude": ["target/**/*"] } diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/index.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/index.ts index bf4bccda2816e..59d1ca5fb1f43 100644 --- a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/index.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/index.ts @@ -6,13 +6,16 @@ */ export * from './src/types'; -export * from './src/constants/component_constants'; export * from './src/constants/navigation'; export type { NavFilter } from './src/utils/query_utils'; export { showErrorToast } from './src/utils/show_error_toast'; export { encodeQuery, decodeQuery } from './src/utils/query_utils'; export { CspEvaluationBadge } from './src/components/csp_evaluation_badge'; -export { getSeverityStatusColor, getCvsScoreColor } from './src/utils/get_vulnerability_colors'; +export { + getSeverityStatusColor, + getCvsScoreColor, + getMisconfigurationStatusColor, +} from './src/utils/get_finding_colors'; export { getSeverityText } from './src/utils/get_vulnerability_text'; export { getVulnerabilityStats, hasVulnerabilitiesData } from './src/utils/vulnerability_helpers'; export { CVSScoreBadge, SeverityStatusBadge } from './src/components/vulnerability_badges'; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx index 28a5b7655723a..f185091dbf5de 100644 --- a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx @@ -6,28 +6,24 @@ */ import React from 'react'; -import { EuiBadge, type EuiBadgeProps } from '@elastic/eui'; +import { EuiBadge } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/react'; -import { statusColors } from '../constants/component_constants'; +import { MISCONFIGURATION_STATUS } from '@kbn/cloud-security-posture-common'; +import type { MisconfigurationEvaluationStatus } from '@kbn/cloud-security-posture-common'; +import { getMisconfigurationStatusColor } from '../utils/get_finding_colors'; interface Props { - type?: 'passed' | 'failed'; + type?: MisconfigurationEvaluationStatus; } // 'fail' / 'pass' are same chars length, but not same width size. // 46px is used to make sure the badge is always the same width. const BADGE_WIDTH = '46px'; -const getColor = (type: Props['type']): EuiBadgeProps['color'] => { - if (type === 'passed') return statusColors.passed; - if (type === 'failed') return statusColors.failed; - return 'default'; -}; - export const CspEvaluationBadge = ({ type }: Props) => ( ( `} data-test-subj={`${type}_finding`} > - {type === 'failed' ? ( + {type === MISCONFIGURATION_STATUS.FAILED ? ( - ) : type === 'passed' ? ( + ) : type === MISCONFIGURATION_STATUS.PASSED ? ( { + const { euiTheme } = useEuiTheme(); + const { getCvsScoreColor } = useGetCvsScoreColor(); + if (!score) return null; const color = getCvsScoreColor(score); @@ -48,7 +52,7 @@ export const CVSScoreBadge = ({ score, version }: CVSScoreBadgeProps) => { css={css` width: 1px; border: 0 none; - background-color: rgba(255, 255, 255, 0.2); + background-color: ${euiTheme.border.color}; margin: 0px 6px; `} /> @@ -60,6 +64,8 @@ export const CVSScoreBadge = ({ score, version }: CVSScoreBadgeProps) => { }; export const SeverityStatusBadge = ({ severity }: SeverityStatusBadgeProps) => { + const { getSeverityStatusColor } = useGetSeverityStatusColor(); + if (!severity) return null; const color = getSeverityStatusColor(severity); diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts deleted file mode 100644 index 3e22fdea80666..0000000000000 --- a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { euiThemeVars } from '@kbn/ui-theme'; - -export const statusColors = { - passed: euiThemeVars.euiColorSuccess, - failed: euiThemeVars.euiColorVis9, - unknown: euiThemeVars.euiColorLightShade, -}; - -export const HOST_NAME = 'host.name'; -export const USER_NAME = 'user.name'; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_cvs_score_color.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_cvs_score_color.ts new file mode 100644 index 0000000000000..f013706d0b324 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_cvs_score_color.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useEuiTheme } from '@elastic/eui'; + +import { getCvsScoreColor as getCvsScoreColorUtil } from '../..'; + +export const useGetCvsScoreColor = () => { + const { euiTheme } = useEuiTheme(); + + const getCvsScoreColor = (score: number) => { + return getCvsScoreColorUtil(score, euiTheme); + }; + + return { getCvsScoreColor }; +}; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_severity_status_color.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_severity_status_color.ts new file mode 100644 index 0000000000000..5a8435d6e924d --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_severity_status_color.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 { useEuiTheme } from '@elastic/eui'; +import { VulnSeverity } from '@kbn/cloud-security-posture-common'; + +import { getSeverityStatusColor as getSeverityStatusColorUtil } from '../..'; + +export const useGetSeverityStatusColor = () => { + const { euiTheme } = useEuiTheme(); + const getSeverityStatusColor = (status: VulnSeverity) => { + return getSeverityStatusColorUtil(status, euiTheme); + }; + return { getSeverityStatusColor }; +}; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_finding_colors.test.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_finding_colors.test.ts new file mode 100644 index 0000000000000..2fa5e84c245d0 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_finding_colors.test.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { getCvsScoreColor, getSeverityStatusColor, SEVERITY_COLOR } from './get_finding_colors'; +import { EuiThemeComputed } from '@elastic/eui'; + +const mockEuiThemeBorealis = { + themeName: 'borialis', +}; + +describe('getSeverityStatusColor', () => { + it('should return the correct color for LOW severity', () => { + expect(getSeverityStatusColor('LOW', mockEuiThemeBorealis as EuiThemeComputed)).toBe( + SEVERITY_COLOR.low + ); + }); + + it('should return the correct color for MEDIUM severity', () => { + expect(getSeverityStatusColor('MEDIUM', mockEuiThemeBorealis as EuiThemeComputed)).toBe( + SEVERITY_COLOR.medium + ); + }); + + it('should return the correct color for HIGH severity', () => { + expect(getSeverityStatusColor('HIGH', mockEuiThemeBorealis as EuiThemeComputed)).toBe( + SEVERITY_COLOR.high + ); + }); + + it('should return the correct color for CRITICAL severity', () => { + expect(getSeverityStatusColor('CRITICAL', mockEuiThemeBorealis as EuiThemeComputed)).toBe( + SEVERITY_COLOR.critical + ); + }); + + it('should return the correct color for an unknown severity', () => { + expect(getSeverityStatusColor('UNKNOWN', mockEuiThemeBorealis as EuiThemeComputed)).toBe( + SEVERITY_COLOR.unknown + ); + }); +}); + +describe('getCvsScoreColor', () => { + it('returns correct color for low severity score', () => { + expect(getCvsScoreColor(1.5, mockEuiThemeBorealis as EuiThemeComputed)).toBe( + SEVERITY_COLOR.low + ); + }); + + it('returns correct color for medium severity score', () => { + expect(getCvsScoreColor(5.5, mockEuiThemeBorealis as EuiThemeComputed)).toBe( + SEVERITY_COLOR.medium + ); + }); + + it('returns correct color for high severity score', () => { + expect(getCvsScoreColor(7.9, mockEuiThemeBorealis as EuiThemeComputed)).toBe( + SEVERITY_COLOR.high + ); + }); + + it('returns correct color for critical severity score', () => { + expect(getCvsScoreColor(10.0, mockEuiThemeBorealis as EuiThemeComputed)).toBe( + SEVERITY_COLOR.critical + ); + }); + + it('returns correct color for low severity score for undefined value', () => { + expect(getCvsScoreColor(-0.2, mockEuiThemeBorealis as EuiThemeComputed)).toBe( + SEVERITY_COLOR.unknown + ); + }); +}); diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_finding_colors.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_finding_colors.ts new file mode 100644 index 0000000000000..5209e5d766c64 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_finding_colors.ts @@ -0,0 +1,108 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiThemeComputed } from '@elastic/eui'; +import { euiThemeVars } from '@kbn/ui-theme'; // TODO: replace with euiTheme +import type { + VulnSeverity, + MisconfigurationEvaluationStatus, +} from '@kbn/cloud-security-posture-common'; +import { + VULNERABILITIES_SEVERITY, + MISCONFIGURATION_STATUS, +} from '@kbn/cloud-security-posture-common'; + +const isAmsterdam = (euiThemeName: string) => { + return euiThemeName?.toLowerCase().includes('amsterdam'); +}; + +// Designers blocked the migration to tokens from EUI during the Borealys theme migration. +// We keep using hardcoded colors until security severity palette is ready https://github.com/elastic/kibana/issues/203387 +// TODO: Borealis migration - move from hardcoded values to severity palette https://github.com/elastic/security-team/issues/11606 +export const SEVERITY_COLOR = { + critical: '#E7664C', + high: '#DA8B45', + medium: '#D6BF57', + low: '#54B399', + unknown: '#aaa', +} as const; + +// TODO: Borealis migration - migrate to security severity palette when it's ready https://github.com/elastic/security-team/issues/11606 +export const getSeverityStatusColor = ( + severity: VulnSeverity, + euiTheme: EuiThemeComputed +): string => { + // TODO: Borealis migration - remove old mapping in main after Serverless switched to Borealis + if (euiTheme && isAmsterdam(euiTheme.themeName)) { + switch (severity) { + case VULNERABILITIES_SEVERITY.LOW: + return euiThemeVars.euiColorVis0; + case VULNERABILITIES_SEVERITY.MEDIUM: + return euiThemeVars.euiColorVis5_behindText; + case VULNERABILITIES_SEVERITY.HIGH: + return euiThemeVars.euiColorVis9_behindText; + case VULNERABILITIES_SEVERITY.CRITICAL: + return euiThemeVars.euiColorDanger; + default: + return '#aaa'; + } + } + + switch (severity) { + case VULNERABILITIES_SEVERITY.LOW: + return SEVERITY_COLOR.low; + case VULNERABILITIES_SEVERITY.MEDIUM: + return SEVERITY_COLOR.medium; + case VULNERABILITIES_SEVERITY.HIGH: + return SEVERITY_COLOR.high; + case VULNERABILITIES_SEVERITY.CRITICAL: + return SEVERITY_COLOR.critical; + default: + return SEVERITY_COLOR.unknown; + } +}; + +export const getCvsScoreColor = (score: number, euiTheme: EuiThemeComputed): string | undefined => { + // TODO: Borealis migration - remove old mapping in main when Serverless switched to Borealis + if (euiTheme && isAmsterdam(euiTheme.themeName)) { + if (score <= 4) { + return euiThemeVars.euiColorVis0; // low severity + } else if (score >= 4 && score <= 7) { + return euiThemeVars.euiColorVis7; // medium severity + } else if (score >= 7 && score <= 9) { + return euiThemeVars.euiColorVis9; // high severity + } else if (score >= 9) { + return euiThemeVars.euiColorDanger; // critical severity + } + } + + if (score >= 0 && score <= 4) { + return getSeverityStatusColor(VULNERABILITIES_SEVERITY.LOW, euiTheme); + } else if (score >= 4 && score <= 7) { + return getSeverityStatusColor(VULNERABILITIES_SEVERITY.MEDIUM, euiTheme); + } else if (score >= 7 && score <= 9) { + return getSeverityStatusColor(VULNERABILITIES_SEVERITY.HIGH, euiTheme); + } else if (score >= 9) { + return getSeverityStatusColor(VULNERABILITIES_SEVERITY.CRITICAL, euiTheme); + } else { + return getSeverityStatusColor(VULNERABILITIES_SEVERITY.UNKNOWN, euiTheme); + } +}; + +// TODO: Borealis migration - migrate to EUI color tokens when they are ready https://github.com/elastic/security-team/issues/11606 +export const getMisconfigurationStatusColor = ( + status?: MisconfigurationEvaluationStatus +): string => { + switch (status) { + case MISCONFIGURATION_STATUS.PASSED: + return SEVERITY_COLOR.low; + case MISCONFIGURATION_STATUS.FAILED: + return SEVERITY_COLOR.critical; + default: + return SEVERITY_COLOR.unknown; + } +}; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerabilitiy_colors.test.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerabilitiy_colors.test.ts deleted file mode 100644 index dcc506fd6b27d..0000000000000 --- a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerabilitiy_colors.test.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { euiThemeVars } from '@kbn/ui-theme'; -import { getCvsScoreColor, getSeverityStatusColor } from './get_vulnerability_colors'; -describe('getSeverityStatusColor', () => { - it('should return the correct color for LOW severity', () => { - expect(getSeverityStatusColor('LOW')).toBe(euiThemeVars.euiColorVis0); - }); - - it('should return the correct color for MEDIUM severity', () => { - expect(getSeverityStatusColor('MEDIUM')).toBe(euiThemeVars.euiColorVis5_behindText); - }); - - it('should return the correct color for HIGH severity', () => { - expect(getSeverityStatusColor('HIGH')).toBe(euiThemeVars.euiColorVis9_behindText); - }); - - it('should return the correct color for CRITICAL severity', () => { - expect(getSeverityStatusColor('CRITICAL')).toBe(euiThemeVars.euiColorDanger); - }); - - it('should return #aaa for an unknown severity', () => { - expect(getSeverityStatusColor('UNKNOWN')).toBe('#aaa'); - }); -}); - -describe('getCvsScoreColor', () => { - it('returns correct color for low severity score', () => { - expect(getCvsScoreColor(1.5)).toBe(euiThemeVars.euiColorVis0); - }); - - it('returns correct color for medium severity score', () => { - expect(getCvsScoreColor(5.5)).toBe(euiThemeVars.euiColorVis7); - }); - - it('returns correct color for high severity score', () => { - expect(getCvsScoreColor(7.9)).toBe(euiThemeVars.euiColorVis9); - }); - - it('returns correct color for critical severity score', () => { - expect(getCvsScoreColor(10.0)).toBe(euiThemeVars.euiColorDanger); - }); - - it('returns correct color for low severity score for undefined value', () => { - expect(getCvsScoreColor(-0.2)).toBe(euiThemeVars.euiColorVis0); - }); -}); diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts deleted file mode 100644 index 54bcb357137b7..0000000000000 --- a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { euiThemeVars } from '@kbn/ui-theme'; -import type { VulnSeverity } from '@kbn/cloud-security-posture-common'; -import { VULNERABILITIES_SEVERITY } from '@kbn/cloud-security-posture-common'; - -export const getCvsScoreColor = (score: number): string | undefined => { - if (score <= 4) { - return euiThemeVars.euiColorVis0; // low severity - } else if (score >= 4 && score <= 7) { - return euiThemeVars.euiColorVis7; // medium severity - } else if (score >= 7 && score <= 9) { - return euiThemeVars.euiColorVis9; // high severity - } else if (score >= 9) { - return euiThemeVars.euiColorDanger; // critical severity - } -}; - -export const getSeverityStatusColor = (severity: VulnSeverity): string => { - switch (severity) { - case VULNERABILITIES_SEVERITY.LOW: - return euiThemeVars.euiColorVis0; - case VULNERABILITIES_SEVERITY.MEDIUM: - return euiThemeVars.euiColorVis5_behindText; - case VULNERABILITIES_SEVERITY.HIGH: - return euiThemeVars.euiColorVis9_behindText; - case VULNERABILITIES_SEVERITY.CRITICAL: - return euiThemeVars.euiColorDanger; - default: - return '#aaa'; - } -}; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.test.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.test.ts index e2503b7a38a2c..afcdc331364e9 100644 --- a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.test.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.test.ts @@ -5,19 +5,39 @@ * 2.0. */ -import { euiThemeVars } from '@kbn/ui-theme'; -import { getVulnerabilityStats } from './vulnerability_helpers'; import { i18n } from '@kbn/i18n'; +import type { EuiThemeComputed } from '@elastic/eui'; +import type { VulnSeverity } from '@kbn/cloud-security-posture-common'; +import { getVulnerabilityStats } from './vulnerability_helpers'; +import { + getSeverityStatusColor as getSeverityStatusColorUtil, + SEVERITY_COLOR, +} from './get_finding_colors'; + +const getSeverityStatusColor = (status: VulnSeverity) => { + const euiTheme = { + themeName: 'borealis', + }; + + return getSeverityStatusColorUtil(status, euiTheme as EuiThemeComputed); +}; describe('getVulnerabilitiesAggregationCount', () => { const mockFilterFunction = jest.fn(); it('should return empty array when all severity count is 0', () => { - const result = getVulnerabilityStats({ critical: 0, high: 0, medium: 0, low: 0, none: 0 }); + const result = getVulnerabilityStats( + { critical: 0, high: 0, medium: 0, low: 0, none: 0 }, + getSeverityStatusColor + ); expect(result).toEqual([]); }); it('should return stats for low, medium, high, and critical vulnerabilities', () => { - const result = getVulnerabilityStats({ critical: 1, high: 2, medium: 3, low: 4, none: 5 }); + const result = getVulnerabilityStats( + { critical: 1, high: 2, medium: 3, low: 4, none: 5 }, + getSeverityStatusColor + ); + const resultWithoutFunctions = result.map((item) => { const { filter, reset, ...rest } = item; return rest; @@ -32,7 +52,7 @@ describe('getVulnerabilitiesAggregationCount', () => { } ), count: 5, - color: '#aaa', + color: SEVERITY_COLOR.unknown, isCurrentFilter: false, }, { @@ -43,7 +63,7 @@ describe('getVulnerabilitiesAggregationCount', () => { } ), count: 4, - color: euiThemeVars.euiColorVis0, + color: SEVERITY_COLOR.low, isCurrentFilter: false, }, { @@ -54,7 +74,7 @@ describe('getVulnerabilitiesAggregationCount', () => { } ), count: 3, - color: euiThemeVars.euiColorVis5_behindText, + color: SEVERITY_COLOR.medium, isCurrentFilter: false, }, { @@ -65,7 +85,7 @@ describe('getVulnerabilitiesAggregationCount', () => { } ), count: 2, - color: euiThemeVars.euiColorVis9_behindText, + color: SEVERITY_COLOR.high, isCurrentFilter: false, }, { @@ -76,7 +96,7 @@ describe('getVulnerabilitiesAggregationCount', () => { } ), count: 1, - color: euiThemeVars.euiColorDanger, + color: SEVERITY_COLOR.critical, isCurrentFilter: false, }, ]); @@ -85,6 +105,7 @@ describe('getVulnerabilitiesAggregationCount', () => { it('should return correct stats with correct onClick functions', () => { const result = getVulnerabilityStats( { critical: 1, high: 2, medium: 3, low: 4, none: 5 }, + getSeverityStatusColor, mockFilterFunction ); const event = { stopPropagation: jest.fn() } as unknown as React.MouseEvent< @@ -101,6 +122,7 @@ describe('getVulnerabilitiesAggregationCount', () => { const currentFilter = 'LOW'; const result = getVulnerabilityStats( { critical: 1, high: 2, medium: 3, low: 4, none: 5 }, + getSeverityStatusColor, mockFilterFunction, currentFilter ); diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts index 321a135557e59..fb662c6e8e5d2 100644 --- a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts @@ -5,9 +5,8 @@ * 2.0. */ -import { VULNERABILITIES_SEVERITY } from '@kbn/cloud-security-posture-common'; +import { VULNERABILITIES_SEVERITY, VulnSeverity } from '@kbn/cloud-security-posture-common'; import { i18n } from '@kbn/i18n'; -import { getSeverityStatusColor } from './get_vulnerability_colors'; import { getSeverityText } from './get_vulnerability_text'; interface VulnerabilitiesDistributionBarProps { @@ -35,6 +34,7 @@ export const hasVulnerabilitiesData = (counts: VulnerabilityCounts): boolean => export const getVulnerabilityStats = ( counts: VulnerabilityCounts, + getSeverityStatusColor: (status: VulnSeverity) => string, filterFunction?: (filter: string) => void, currentFilter?: string ): VulnerabilitiesDistributionBarProps[] => { diff --git a/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/index.tsx index 9511d11aa4f70..2012924544276 100644 --- a/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/index.tsx +++ b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/index.tsx @@ -25,7 +25,6 @@ import { EuiCheckbox, EuiComboBoxOptionOption, EuiSpacer, - euiPaletteColorBlindBehindText, useEuiTheme, } from '@elastic/eui'; import { useStyles } from './styles'; @@ -61,7 +60,6 @@ export const ControlGeneralViewResponse = ({ const [isPopoverOpen, setPopoverOpen] = useState(false); const styles = useStyles(); const selectorStyles = useSelectorStyles(); - const visColorsBehindText = euiPaletteColorBlindBehindText(); const [accordionState, setAccordionState] = useState<'open' | 'closed'>( responses.length - 1 === index ? 'open' : 'closed' ); @@ -178,9 +176,9 @@ export const ControlGeneralViewResponse = ({ response.match.map((selector) => ({ label: selector as unknown as string, value: selector as unknown as string, - color: visColorsBehindText[0], + color: colors.backgroundLightSuccess, })), - [response.match, visColorsBehindText] + [response.match, colors] ); const selectedExcludes = useMemo( @@ -189,9 +187,9 @@ export const ControlGeneralViewResponse = ({ response.exclude.map((selector) => ({ label: selector as unknown as string, value: selector as unknown as string, - color: visColorsBehindText[5], + color: colors.backgroundLightWarning, })), - [response.exclude, visColorsBehindText] + [response.exclude, colors] ); const onShowExclude = useCallback(() => { diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/common/types_old.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/types_old.ts index be5366b89bc24..12859e5512045 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/common/types_old.ts +++ b/x-pack/solutions/security/plugins/cloud_security_posture/common/types_old.ts @@ -6,7 +6,10 @@ */ import { type TypeOf } from '@kbn/config-schema'; import type { CspBenchmarkRuleMetadata } from '@kbn/cloud-security-posture-common/schema/rules/latest'; -import type { CspFinding } from '@kbn/cloud-security-posture-common'; +import type { + CspFinding, + MisconfigurationEvaluationStatus, +} from '@kbn/cloud-security-posture-common'; import { SUPPORTED_CLOUDBEAT_INPUTS, SUPPORTED_POLICY_TEMPLATES } from './constants'; import { getComplianceDashboardSchema } from './schemas/stats'; @@ -36,7 +39,7 @@ export type AzureCredentialsType = | 'service_principal_with_client_username_and_password' | 'managed_identity'; -export type Evaluation = 'passed' | 'failed' | 'NA'; +export type Evaluation = MisconfigurationEvaluationStatus; export type PostureTypes = 'cspm' | 'kspm' | 'vuln_mgmt' | 'all'; /** number between 1-100 */ diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/nvd_logo_svg.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/nvd_logo_svg.tsx index b8dc583356cec..936d87ad0f236 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/nvd_logo_svg.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/nvd_logo_svg.tsx @@ -5,24 +5,29 @@ * 2.0. */ -import { euiThemeVars } from '@kbn/ui-theme'; +import { useEuiTheme } from '@elastic/eui'; import React from 'react'; -export const NvdLogo = () => ( - - - - -); +// TODO: Borealis migration - replace fullShade with a proper color token, see https://github.com/elastic/kibana/issues/199715#issuecomment-2535949093 +export const NvdLogo = () => { + const { euiTheme } = useEuiTheme(); + + return ( + + + + + ); +}; diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx index 3829542829909..3015f2bfd100b 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx @@ -9,7 +9,8 @@ import { EuiFlexGroup, EuiFlexItem, EuiText, EuiToolTip, useEuiTheme } from '@el import { css, SerializedStyles } from '@emotion/react'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { statusColors } from '@kbn/cloud-security-posture'; +import { MISCONFIGURATION_STATUS } from '@kbn/cloud-security-posture-common'; +import { getMisconfigurationStatusColor } from '@kbn/cloud-security-posture'; import { calculatePostureScore } from '../../common/utils/helpers'; import { CSP_FINDINGS_COMPLIANCE_SCORE, @@ -68,7 +69,7 @@ export const ComplianceScoreBar = ({ @@ -77,7 +78,7 @@ export const ComplianceScoreBar = ({ @@ -86,7 +87,7 @@ export const ComplianceScoreBar = ({ diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/components/vulnerability_severity_map.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/vulnerability_severity_map.tsx index 4773f5378fb3e..ad6051c2edada 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/components/vulnerability_severity_map.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/vulnerability_severity_map.tsx @@ -15,10 +15,10 @@ import { EuiText, } from '@elastic/eui'; import { PaletteColorStop } from '@elastic/eui/src/components/color_picker/color_palette_picker'; -import type { VulnSeverity } from '@kbn/cloud-security-posture-common'; import { i18n } from '@kbn/i18n'; -import { getSeverityStatusColor } from '@kbn/cloud-security-posture'; +import type { VulnSeverity } from '@kbn/cloud-security-posture-common'; import { SeverityStatusBadge } from '@kbn/cloud-security-posture'; +import { useGetSeverityStatusColor } from '@kbn/cloud-security-posture/src/hooks/use_get_severity_status_color'; interface Props { total: number; @@ -52,6 +52,7 @@ const formatPercentage = (percentage: number) => { export const VulnerabilitySeverityMap = ({ severityMap, total }: Props) => { const { euiTheme } = useEuiTheme(); + const { getSeverityStatusColor } = useGetSeverityStatusColor(); const severityMapPallet: PaletteColorStop[] = []; const severityMapTooltip: SeverityMapTooltip[] = []; diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx index 40d7b52ab3fed..866a612e82f95 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx @@ -32,7 +32,8 @@ import { FormattedDate, FormattedTime } from '@kbn/i18n-react'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; -import { statusColors } from '@kbn/cloud-security-posture'; +import { MISCONFIGURATION_STATUS } from '@kbn/cloud-security-posture-common'; +import { getMisconfigurationStatusColor } from '@kbn/cloud-security-posture'; import { DASHBOARD_COMPLIANCE_SCORE_CHART } from '../test_subjects'; import { RULE_FAILED, RULE_PASSED } from '../../../../common/constants'; import { CompactFormattedNumber } from '../../../components/compact_formatted_number'; @@ -109,31 +110,33 @@ const CompactPercentageLabels = ({ }: { onEvalCounterClick: (evaluation: Evaluation) => void; stats: { totalPassed: number; totalFailed: number }; -}) => ( - <> - onEvalCounterClick(RULE_PASSED)} - tooltipContent={i18n.translate( - 'xpack.csp.complianceScoreChart.counterLink.passedFindingsTooltip', - { defaultMessage: 'Passed findings' } - )} - /> -  -  - onEvalCounterClick(RULE_FAILED)} - tooltipContent={i18n.translate( - 'xpack.csp.complianceScoreChart.counterButtonLink.failedFindingsTooltip', - { defaultMessage: 'Failed findings' } - )} - /> - -); +}) => { + return ( + <> + onEvalCounterClick(RULE_PASSED)} + tooltipContent={i18n.translate( + 'xpack.csp.complianceScoreChart.counterLink.passedFindingsTooltip', + { defaultMessage: 'Passed findings' } + )} + /> +  -  + onEvalCounterClick(RULE_FAILED)} + tooltipContent={i18n.translate( + 'xpack.csp.complianceScoreChart.counterButtonLink.failedFindingsTooltip', + { defaultMessage: 'Failed findings' } + )} + /> + + ); +}; const PercentageLabels = ({ onEvalCounterClick, @@ -144,13 +147,14 @@ const PercentageLabels = ({ }) => { const { euiTheme } = useEuiTheme(); const borderLeftStyles = { borderLeft: euiTheme.border.thin, paddingLeft: euiTheme.size.m }; + return ( onEvalCounterClick(RULE_PASSED)} /> @@ -159,7 +163,7 @@ const PercentageLabels = ({ onEvalCounterClick(RULE_FAILED)} /> diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx index 462652b4869de..8ab9e9465dada 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx @@ -34,7 +34,6 @@ import { i18n } from '@kbn/i18n'; import type { HttpSetup } from '@kbn/core/public'; import { generatePath } from 'react-router-dom'; import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { CspEvaluationBadge } from '@kbn/cloud-security-posture'; import type { CspFinding } from '@kbn/cloud-security-posture-common'; import { CspVulnerabilityFinding } from '@kbn/cloud-security-posture-common/schema/vulnerabilities/csp_vulnerability_finding'; @@ -240,6 +239,7 @@ export const FindingsRuleFlyout = ({ findingsCount, onPaginate, }: FindingFlyoutProps) => { + const { euiTheme } = useEuiTheme(); const [tab, setTab] = useState(tabs[0]); const createMisconfigurationRuleFn = async (http: HttpSetup) => @@ -263,7 +263,7 @@ export const FindingsRuleFlyout = ({
{!isNativeCspFinding(finding) && ['overview', 'rule'].includes(tab.id) && ( -
+
)} diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx index 3fe31785f81df..055e4b054f508 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx @@ -8,8 +8,8 @@ import React from 'react'; import { css } from '@emotion/react'; import { EuiHealth, EuiBadge, EuiSpacer, EuiFlexGroup, useEuiTheme } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { statusColors } from '@kbn/cloud-security-posture'; -import { getAbbreviatedNumber } from '@kbn/cloud-security-posture-common'; +import { getMisconfigurationStatusColor } from '@kbn/cloud-security-posture'; +import { getAbbreviatedNumber, MISCONFIGURATION_STATUS } from '@kbn/cloud-security-posture-common'; import { RULE_FAILED, RULE_PASSED } from '../../../../common/constants'; import type { Evaluation } from '../../../../common/types_old'; @@ -44,9 +44,13 @@ const Counters = ({ passed, failed }: Pick) => { gap: ${euiTheme.size.m}; `} > - {I18N_PASSED_FINDINGS} + + {I18N_PASSED_FINDINGS} + {getAbbreviatedNumber(passed)} - {I18N_FAILED_FINDINGS} + + {I18N_FAILED_FINDINGS} + {getAbbreviatedNumber(failed)} ); @@ -69,7 +73,7 @@ const DistributionBar: React.FC> = ({ > { distributionOnClick(RULE_PASSED); }} @@ -78,7 +82,7 @@ const DistributionBar: React.FC> = ({ /> { distributionOnClick(RULE_FAILED); }} diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx index 15dca8e9b76ff..e2d5e78de0954 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx @@ -18,7 +18,8 @@ import { i18n } from '@kbn/i18n'; import { useParams } from 'react-router-dom'; import { Chart, Partition, PartitionLayout, Settings } from '@elastic/charts'; import { FormattedMessage } from '@kbn/i18n-react'; -import { statusColors } from '@kbn/cloud-security-posture'; +import { MISCONFIGURATION_STATUS } from '@kbn/cloud-security-posture-common'; +import { getMisconfigurationStatusColor } from '@kbn/cloud-security-posture'; import { useNavigateFindings } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; import { useBenchmarkDynamicValues } from '../../common/hooks/use_benchmark_dynamic_values'; import { getPostureScorePercentage } from '../compliance_dashboard/compliance_charts/compliance_score_chart'; @@ -74,8 +75,8 @@ const EvaluationPieChart = ({ failed, passed }: { failed: number; passed: number shape: { fillColor: (label) => label.toLowerCase() === RULE_PASSED.toLowerCase() - ? statusColors.passed - : statusColors.failed, + ? getMisconfigurationStatusColor(MISCONFIGURATION_STATUS.PASSED) + : getMisconfigurationStatusColor(MISCONFIGURATION_STATUS.FAILED), }, }, ]} @@ -232,7 +233,10 @@ export const RulesCounters = ({ defaultMessage: 'Failed Findings', }), title: benchmarkRulesStats.score.totalFailed, - titleColor: benchmarkRulesStats.score.totalFailed > 0 ? statusColors.failed : undefined, + titleColor: + benchmarkRulesStats.score.totalFailed > 0 + ? getMisconfigurationStatusColor(MISCONFIGURATION_STATUS.FAILED) + : undefined, button: ( { + const { euiTheme } = useEuiTheme(); const [selectedTabId, setSelectedTabId] = useState(overviewTabId); const vulnerability = vulnerabilityRecord?.vulnerability; @@ -176,7 +177,7 @@ export const VulnerabilityFindingFlyout = ({ @@ -186,14 +187,14 @@ export const VulnerabilityFindingFlyout = ({ @@ -210,7 +211,7 @@ export const VulnerabilityFindingFlyout = ({
{!isNativeCspFinding(vulnerabilityRecord) && selectedTabId === overviewTabId && ( -
+
)} diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_overview_tab.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_overview_tab.tsx index 9592ceec167b9..ffe647b4b7640 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_overview_tab.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_overview_tab.tsx @@ -12,12 +12,12 @@ import { EuiIcon, EuiLink, EuiText, + useEuiTheme, } from '@elastic/eui'; import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; import moment from 'moment'; import React from 'react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { i18n } from '@kbn/i18n'; import { VectorScoreBase, @@ -61,6 +61,7 @@ interface VulnerabilityTabProps { const EMPTY_VALUE = '-'; const CVSScore = ({ vectorBaseScore, vendor }: CVSScoreProps) => { + const { euiTheme } = useEuiTheme(); const vendorName = cvssVendors[vendor]; const vectorScores = getVectorScoreList(vectorBaseScore); @@ -69,9 +70,9 @@ const CVSScore = ({ vectorBaseScore, vendor }: CVSScoreProps) => { { + const { euiTheme } = useEuiTheme(); const { score, vector, version } = vectorScore; return ( <> {vector}{' '} @@ -145,10 +147,11 @@ const VectorScore = ({ }; const VulnerabilityOverviewTiles = ({ vulnerabilityRecord }: VulnerabilityTabProps) => { + const { euiTheme } = useEuiTheme(); const { vulnerability } = vulnerabilityRecord; const tileStyle = css` - padding: ${euiThemeVars.euiFontSizeM}; - background: ${euiThemeVars.euiColorLightestShade}; + padding: ${euiTheme.size.m}; + background: ${euiTheme.colors.backgroundLightText}; border-radius: 6px; height: 74px; `; @@ -222,6 +225,7 @@ const VulnerabilityOverviewTiles = ({ vulnerabilityRecord }: VulnerabilityTabPro }; export const VulnerabilityOverviewTab = ({ vulnerabilityRecord }: VulnerabilityTabProps) => { + const { euiTheme } = useEuiTheme(); const { vulnerability } = vulnerabilityRecord; uiMetricService.trackUiMetric(METRIC_TYPE.COUNT, VULNERABILITIES_FLYOUT_VISITS); @@ -255,9 +259,9 @@ export const VulnerabilityOverviewTab = ({ vulnerabilityRecord }: VulnerabilityT `; const flyoutSubheadingStyle = css` - font-size: ${euiThemeVars.euiFontSizeM}; + font-size: ${euiTheme.size.m}; line-height: 24px; - margin-bottom: ${euiThemeVars.euiSizeS}; + margin-bottom: ${euiTheme.size.s}; font-weight: 600; `; @@ -329,7 +333,7 @@ export const VulnerabilityOverviewTab = ({ vulnerabilityRecord }: VulnerabilityT direction="column" gutterSize="l" css={css` - margin-top: ${euiThemeVars.euiSizeS}; + margin-top: ${euiTheme.size.s}; `} > {!!cvssScores?.length ? cvssScores : EMPTY_VALUE} diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx index de1f7ec3ba37a..f1df3c3d5f95f 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx @@ -8,13 +8,14 @@ import React, { useMemo } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiHealth } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { useNavigateNativeVulnerabilities } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; +import { useGetSeverityStatusColor } from '@kbn/cloud-security-posture/src/hooks/use_get_severity_status_color'; import { VULNERABILITIES_SEVERITY } from '@kbn/cloud-security-posture-common'; -import { getSeverityStatusColor } from '@kbn/cloud-security-posture'; import { VulnCounterCard, type VulnCounterCardProps } from '../../components/vuln_counter_card'; import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability_dashboard_api'; import { CompactFormattedNumber } from '../../components/compact_formatted_number'; export const VulnerabilityStatistics = () => { + const { getSeverityStatusColor } = useGetSeverityStatusColor(); const navToVulnerabilities = useNavigateNativeVulnerabilities(); const getVulnerabilityDashboard = useVulnerabilityDashboardApi(); @@ -103,7 +104,7 @@ export const VulnerabilityStatistics = () => { }), }, ], - [getVulnerabilityDashboard.data, navToVulnerabilities] + [getVulnerabilityDashboard.data, navToVulnerabilities, getSeverityStatusColor] ); return ( diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx index 599928eea88b8..47097d261c0cb 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx @@ -20,9 +20,9 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { useNavigateNativeVulnerabilities } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; +import { useGetSeverityStatusColor } from '@kbn/cloud-security-posture/src/hooks/use_get_severity_status_color'; import type { VulnSeverity } from '@kbn/cloud-security-posture-common'; import { VULNERABILITIES_SEVERITY } from '@kbn/cloud-security-posture-common'; -import { getSeverityStatusColor } from '@kbn/cloud-security-posture'; import { truthy } from '../../../common/utils/helpers'; import { VulnStatsTrend } from '../../../common/types_old'; import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability_dashboard_api'; @@ -156,6 +156,7 @@ export const VulnerabilityTrendGraph = () => { const { services: { charts }, } = useKibana(); + const { getSeverityStatusColor } = useGetSeverityStatusColor(); const getVulnerabilityDashboard = useVulnerabilityDashboardApi(); const vulnTrends = getVulnerabilityDashboard.data?.vulnTrends || []; const [selectedAccount, setSelectedAccount] = useState(DEFAULT_ACCOUNT); @@ -189,7 +190,7 @@ export const VulnerabilityTrendGraph = () => { color: getSeverityStatusColor(VULNERABILITIES_SEVERITY.CRITICAL), }, ], - [] + [getSeverityStatusColor] ); return ( diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/tsconfig.json b/x-pack/solutions/security/plugins/cloud_security_posture/tsconfig.json index e723ae3bc5d9f..c9fe35a099908 100755 --- a/x-pack/solutions/security/plugins/cloud_security_posture/tsconfig.json +++ b/x-pack/solutions/security/plugins/cloud_security_posture/tsconfig.json @@ -30,7 +30,6 @@ "@kbn/charts-plugin", "@kbn/discover-plugin", "@kbn/i18n", - "@kbn/ui-theme", "@kbn/i18n-react", "@kbn/es-query", "@kbn/data-views-plugin", diff --git a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx index e82e50095507a..68dbe72449ba3 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx @@ -19,10 +19,10 @@ import { MISCONFIGURATION_STATUS, buildMisconfigurationEntityFlyoutPreviewQuery, } from '@kbn/cloud-security-posture-common'; -import { euiThemeVars } from '@kbn/ui-theme'; import { DistributionBar } from '@kbn/security-solution-distribution-bar'; import type { CspBenchmarkRuleMetadata } from '@kbn/cloud-security-posture-common/schema/rules/latest'; -import { CspEvaluationBadge } from '@kbn/cloud-security-posture'; +import { CspEvaluationBadge, getMisconfigurationStatusColor } from '@kbn/cloud-security-posture'; + import { ENTITY_FLYOUT_EXPAND_MISCONFIGURATION_VIEW_VISITS, NAV_TO_FINDINGS_BY_HOST_NAME_FRPOM_ENTITY_FLYOUT, @@ -58,7 +58,7 @@ const getFindingsStats = ( } ), count: passedFindingsStats, - color: euiThemeVars.euiColorSuccess, + color: getMisconfigurationStatusColor(MISCONFIGURATION_STATUS.PASSED), filter: () => { filterFunction(MISCONFIGURATION_STATUS.PASSED); }, @@ -76,7 +76,7 @@ const getFindingsStats = ( } ), count: failedFindingsStats, - color: euiThemeVars.euiColorVis9, + color: getMisconfigurationStatusColor(MISCONFIGURATION_STATUS.FAILED), filter: () => { filterFunction(MISCONFIGURATION_STATUS.FAILED); }, @@ -186,7 +186,7 @@ export const MisconfigurationFindingsDetailsTable = memo( const linkWidth = 40; const resultWidth = 74; - const misconfgurationStats = getFindingsStats( + const misconfigurationStats = getFindingsStats( passedFindings, failedFindings, setCurrentFilter, @@ -272,7 +272,7 @@ export const MisconfigurationFindingsDetailsTable = memo( - + { + const { getSeverityStatusColor } = useGetSeverityStatusColor(); + useEffect(() => { uiMetricService.trackUiMetric( METRIC_TYPE.COUNT, @@ -154,6 +157,7 @@ export const VulnerabilitiesFindingsDetailsTable = memo(({ value }: { value: str low, none, }, + getSeverityStatusColor, setCurrentFilter, currentFilter ); diff --git a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.tsx index 40555aa400304..303443c5ef73c 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.tsx @@ -7,13 +7,13 @@ import React, { useCallback, useEffect, useMemo } from 'react'; import { css } from '@emotion/react'; -import type { EuiThemeComputed } from '@elastic/eui'; import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText, useEuiTheme, EuiTitle } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { DistributionBar } from '@kbn/security-solution-distribution-bar'; import { useHasMisconfigurations } from '@kbn/cloud-security-posture/src/hooks/use_has_misconfigurations'; import { i18n } from '@kbn/i18n'; -import { statusColors } from '@kbn/cloud-security-posture'; +import { getMisconfigurationStatusColor } from '@kbn/cloud-security-posture'; +import { MISCONFIGURATION_STATUS } from '@kbn/cloud-security-posture-common'; import { METRIC_TYPE } from '@kbn/analytics'; import { ENTITY_FLYOUT_WITH_MISCONFIGURATION_VISIT, @@ -38,7 +38,7 @@ export const getFindingsStats = (passedFindingsStats: number, failedFindingsStat } ), count: passedFindingsStats, - color: statusColors.passed, + color: getMisconfigurationStatusColor(MISCONFIGURATION_STATUS.PASSED), }, { key: i18n.translate( @@ -48,7 +48,7 @@ export const getFindingsStats = (passedFindingsStats: number, failedFindingsStat } ), count: failedFindingsStats, - color: statusColors.failed, + color: getMisconfigurationStatusColor(MISCONFIGURATION_STATUS.FAILED), }, ]; }; @@ -56,12 +56,12 @@ export const getFindingsStats = (passedFindingsStats: number, failedFindingsStat const MisconfigurationPreviewScore = ({ passedFindings, failedFindings, - euiTheme, }: { passedFindings: number; failedFindings: number; - euiTheme: EuiThemeComputed<{}>; }) => { + const { euiTheme } = useEuiTheme(); + return ( @@ -158,7 +158,6 @@ export const MisconfigurationsPreview = ({ diff --git a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.tsx index 2bf4379b878e5..e1b54ba31da79 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.tsx @@ -7,11 +7,11 @@ import React, { useCallback, useEffect, useMemo } from 'react'; import { css } from '@emotion/react'; -import type { EuiThemeComputed } from '@elastic/eui'; import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText, useEuiTheme, EuiTitle } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { DistributionBar } from '@kbn/security-solution-distribution-bar'; import { useVulnerabilitiesPreview } from '@kbn/cloud-security-posture/src/hooks/use_vulnerabilities_preview'; +import { useGetSeverityStatusColor } from '@kbn/cloud-security-posture/src/hooks/use_get_severity_status_color'; import { buildGenericEntityFlyoutPreviewQuery, getAbbreviatedNumber, @@ -32,11 +32,11 @@ import type { CloudPostureEntityIdentifier } from '../entity_insight'; const VulnerabilitiesCount = ({ vulnerabilitiesTotal, - euiTheme, }: { vulnerabilitiesTotal: string | number; - euiTheme: EuiThemeComputed<{}>; }) => { + const { euiTheme } = useEuiTheme(); + return ( @@ -100,6 +100,7 @@ export const VulnerabilitiesPreview = ({ }); const { euiTheme } = useEuiTheme(); + const { getSeverityStatusColor } = useGetSeverityStatusColor(); const goToEntityInsightTab = useCallback(() => { openDetailsPanel({ @@ -123,6 +124,18 @@ export const VulnerabilitiesPreview = ({ : undefined, [isLinkEnabled, goToEntityInsightTab] ); + + const vulnerabilityStats = getVulnerabilityStats( + { + critical: CRITICAL, + high: HIGH, + medium: MEDIUM, + low: LOW, + none: NONE, + }, + getSeverityStatusColor + ); + return ( - + - + diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/vulnerabilities_insight.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/vulnerabilities_insight.tsx index 125e7e9985edb..748deea7105ef 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/vulnerabilities_insight.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/vulnerabilities_insight.tsx @@ -10,6 +10,7 @@ import { EuiFlexItem, type EuiFlexGroupProps, useEuiTheme } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/react'; import { useVulnerabilitiesPreview } from '@kbn/cloud-security-posture/src/hooks/use_vulnerabilities_preview'; +import { useGetSeverityStatusColor } from '@kbn/cloud-security-posture/src/hooks/use_get_severity_status_color'; import { buildGenericEntityFlyoutPreviewQuery } from '@kbn/cloud-security-posture-common'; import { getVulnerabilityStats, hasVulnerabilitiesData } from '@kbn/cloud-security-posture'; import { @@ -52,6 +53,7 @@ export const VulnerabilitiesInsight: React.FC = ({ }) => { const { scopeId, isPreview } = useDocumentDetailsContext(); const { euiTheme } = useEuiTheme(); + const { getSeverityStatusColor } = useGetSeverityStatusColor(); const { data } = useVulnerabilitiesPreview({ query: buildGenericEntityFlyoutPreviewQuery('host.name', hostName), sort: [], @@ -87,14 +89,17 @@ export const VulnerabilitiesInsight: React.FC = ({ const vulnerabilitiesStats = useMemo( () => - getVulnerabilityStats({ - critical: CRITICAL, - high: HIGH, - medium: MEDIUM, - low: LOW, - none: NONE, - }), - [CRITICAL, HIGH, MEDIUM, LOW, NONE] + getVulnerabilityStats( + { + critical: CRITICAL, + high: HIGH, + medium: MEDIUM, + low: LOW, + none: NONE, + }, + getSeverityStatusColor + ), + [CRITICAL, HIGH, MEDIUM, LOW, NONE, getSeverityStatusColor] ); const count = useMemo( diff --git a/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_actions/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_actions/styles.ts deleted file mode 100644 index 14d0be374b5d1..0000000000000 --- a/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_actions/styles.ts +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useMemo } from 'react'; -import { useEuiTheme, transparentize } from '@elastic/eui'; -import { CSSObject, css } from '@emotion/react'; - -interface StylesDeps { - minimal?: boolean; - isInvestigated?: boolean; -} - -export const useStyles = ({ minimal = false, isInvestigated = false }: StylesDeps) => { - const { euiTheme } = useEuiTheme(); - - const cached = useMemo(() => { - const { colors, font, size, border } = euiTheme; - - const dangerBorder = transparentize(colors.danger, 0.2); - const dangerBackground = transparentize(colors.danger, 0.08); - const borderThickness = border.width.thin; - const mediumPadding = size.m; - - let alertTitleColor = colors.text; - let borderColor = colors.lightShade; - - if (isInvestigated) { - alertTitleColor = colors.primaryText; - borderColor = dangerBorder; - } - - const alertItem = css` - border: ${borderThickness} solid ${borderColor}; - padding: ${mediumPadding}; - border-radius: ${border.radius.medium}; - - margin: 0 ${mediumPadding} ${mediumPadding} ${mediumPadding}; - background-color: ${colors.emptyShade}; - - & .euiAccordion__buttonContent { - width: 100%; - } - - & .euiAccordion__button { - min-width: 0; - width: calc(100% - ${size.l}); - } - - & .euiAccordion__childWrapper { - overflow: visible; - } - `; - - const alertTitle: CSSObject = { - display: minimal ? 'none' : 'initial', - color: alertTitleColor, - fontWeight: font.weight.semiBold, - textOverflow: 'ellipsis', - overflow: 'hidden', - whiteSpace: 'nowrap', - }; - - const alertIcon: CSSObject = { - marginRight: size.s, - }; - - const alertAccordionButton: CSSObject = { - width: `calc(100% - ${size.l})`, - minWidth: 0, - }; - - const processPanel: CSSObject = { - border: `${borderThickness} solid ${colors.lightShade}`, - fontFamily: font.familyCode, - marginTop: mediumPadding, - padding: `${size.xs} ${size.s}`, - }; - - const investigatedLabel: CSSObject = { - position: 'relative', - zIndex: 1, - bottom: `-${mediumPadding}`, - left: `-${mediumPadding}`, - width: `calc(100% + ${mediumPadding} * 2)`, - borderTop: `${borderThickness} solid ${dangerBorder}`, - borderBottomLeftRadius: border.radius.medium, - borderBottomRightRadius: border.radius.medium, - backgroundColor: dangerBackground, - textAlign: 'center', - }; - - return { - alertItem, - alertTitle, - alertIcon, - alertAccordionButton, - processPanel, - investigatedLabel, - }; - }, [euiTheme, isInvestigated, minimal]); - - return cached; -}; diff --git a/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_list_item/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_list_item/styles.ts index 4cd77e48c2c4d..85cb461bc9c16 100644 --- a/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_list_item/styles.ts +++ b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_list_item/styles.ts @@ -15,8 +15,8 @@ export const useStyles = (minimal = false, isInvestigated = false) => { const cached = useMemo(() => { const { colors, font, size, border } = euiTheme; - const dangerBorder = transparentize(colors.danger, 0.2); - const dangerBackground = transparentize(colors.danger, 0.08); + const dangerBorder = transparentize(colors.danger, 0.2); // TODO: Borealis migration - replace transparentize with color token + const dangerBackground = transparentize(colors.danger, 0.08); // TODO: Borealis migration - replace transparentize with color token const borderThickness = border.width.thin; const mediumPadding = size.m; diff --git a/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_list_item/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_list_item/styles.ts index 48a8dba781ee4..6823ba6bd0abd 100644 --- a/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_list_item/styles.ts +++ b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_list_item/styles.ts @@ -41,7 +41,7 @@ export const useStyles = ({ display }: StylesDeps) => { position: 'relative', borderRadius: euiTheme.border.radius.medium, '&:hover': { - background: transparentize(euiTheme.colors.primary, 0.1), + background: transparentize(euiTheme.colors.primary, 0.1), // TODO: Borealis migration - replace transparentize with color token }, height: 'fit-content', }; diff --git a/x-pack/solutions/security/plugins/session_view/public/components/process_tree/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree/styles.ts index d01a906e1d38d..a2dac9bbb60ca 100644 --- a/x-pack/solutions/security/plugins/session_view/public/components/process_tree/styles.ts +++ b/x-pack/solutions/security/plugins/session_view/public/components/process_tree/styles.ts @@ -6,7 +6,6 @@ */ import { useMemo } from 'react'; -import { transparentize } from '@elastic/eui'; import { CSSObject } from '@emotion/react'; import { useEuiTheme } from '../../hooks'; @@ -14,8 +13,7 @@ export const useStyles = () => { const { euiTheme, euiVars } = useEuiTheme(); const cached = useMemo(() => { - const { colors, font, size } = euiTheme; - const defaultSelectionColor = colors.primary; + const { font } = euiTheme; const sessionViewProcessTree: CSSObject = { position: 'relative', @@ -25,26 +23,8 @@ export const useStyles = () => { backgroundColor: euiVars.euiColorLightestShade, }; - const selectionArea: CSSObject = { - position: 'absolute', - display: 'none', - marginLeft: '-50%', - width: '150%', - height: '100%', - backgroundColor: defaultSelectionColor, - pointerEvents: 'none', - opacity: 0.1, - transform: `translateY(-${size.xs})`, - }; - - const defaultSelected = transparentize(colors.primary, 0.008); - const alertSelected = transparentize(colors.danger, 0.008); - return { sessionViewProcessTree, - selectionArea, - defaultSelected, - alertSelected, }; }, [euiTheme, euiVars]); diff --git a/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/styles.ts index de3dc797e3351..02d49e502bc35 100644 --- a/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/styles.ts +++ b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/styles.ts @@ -23,17 +23,17 @@ export const useStyles = ({ isInvestigated, isSelected }: StylesDeps) => { const getHighlightColors = () => { let bgColor = 'none'; - let hoverBgColor = `${transparentize(colors.primary, 0.04)}`; + let hoverBgColor = `${transparentize(colors.primary, 0.04)}`; // TODO: Borealis migration - replace transparentize with color token if (isInvestigated && isSelected) { - bgColor = `${transparentize(colors.danger, 0.08)}`; - hoverBgColor = `${transparentize(colors.danger, 0.12)}`; + bgColor = `${transparentize(colors.danger, 0.08)}`; // TODO: Borealis migration - replace transparentize with color token + hoverBgColor = `${transparentize(colors.danger, 0.12)}`; // TODO: Borealis migration - replace transparentize with color token } else if (isInvestigated) { - bgColor = `${transparentize(colors.danger, 0.04)}`; - hoverBgColor = `${transparentize(colors.danger, 0.12)}`; + bgColor = `${transparentize(colors.danger, 0.04)}`; // TODO: Borealis migration - replace transparentize with color token + hoverBgColor = `${transparentize(colors.danger, 0.12)}`; // TODO: Borealis migration - replace transparentize with color token } else if (isSelected) { - bgColor = `${transparentize(colors.primary, 0.08)}`; - hoverBgColor = `${transparentize(colors.primary, 0.12)}`; + bgColor = `${transparentize(colors.primary, 0.08)}`; // TODO: Borealis migration - replace transparentize with color token + hoverBgColor = `${transparentize(colors.primary, 0.12)}`; // TODO: Borealis migration - replace transparentize with color token } return { bgColor, hoverBgColor }; @@ -56,7 +56,7 @@ export const useStyles = ({ isInvestigated, isSelected }: StylesDeps) => { flexShrink: 0, marginRight: size.xs, '&:hover, &:focus, &:focus-within': { - backgroundColor: transparentize(euiVars.buttonsBackgroundNormalDefaultPrimary, 0.2), + backgroundColor: transparentize(euiVars.buttonsBackgroundNormalDefaultPrimary, 0.2), // TODO: Borealis migration - replace transparentize with color token }, }, '&& .euiFlexItem': { diff --git a/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/index.tsx index b493591b94370..43f0c8e5a2763 100644 --- a/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/index.tsx +++ b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/index.tsx @@ -5,12 +5,6 @@ * 2.0. */ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - *2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ import React, { useState, useEffect, diff --git a/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/styles.ts index 32048cfd97585..56df551b2ffe5 100644 --- a/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/styles.ts +++ b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/styles.ts @@ -58,9 +58,9 @@ export const useStyles = ({ */ const getHighlightColors = () => { let bgColor = 'none'; - let hoverColor = transparentize(colors.primary, 0.04); + let hoverColor = transparentize(colors.primary, 0.04); // TODO: Borealis migration - replace transparentize with color token let borderColor = 'transparent'; - let searchResColor = transparentize(colors.warning, 0.32); + let searchResColor = transparentize(colors.warning, 0.32); // TODO: Borealis migration - replace transparentize with color token if (hasAlerts) { borderColor = colors.danger; @@ -68,15 +68,15 @@ export const useStyles = ({ if (isSelected) { searchResColor = colors.warning; - bgColor = transparentize(colors.primary, 0.08); - hoverColor = transparentize(colors.primary, 0.12); + bgColor = transparentize(colors.primary, 0.08); // TODO: Borealis migration - replace transparentize with color token + hoverColor = transparentize(colors.primary, 0.12); // TODO: Borealis migration - replace transparentize with color token } if (hasInvestigatedAlert) { - bgColor = transparentize(colors.danger, 0.04); - hoverColor = transparentize(colors.danger, 0.12); + bgColor = transparentize(colors.danger, 0.04); // TODO: Borealis migration - replace transparentize with color token + hoverColor = transparentize(colors.danger, 0.12); // TODO: Borealis migration - replace transparentize with color token if (isSelected) { - bgColor = transparentize(colors.danger, 0.08); + bgColor = transparentize(colors.danger, 0.08); // TODO: Borealis migration - replace transparentize with color token } } @@ -166,7 +166,7 @@ export const useStyles = ({ }; const workingDir: CSSObject = { - color: colors.successText, + color: colors.textSuccess, fontFamily: font.familyCode, fontWeight: font.weight.regular, }; diff --git a/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/use_button_styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/use_button_styles.ts index c6e89f9be0d13..c5f574eb1befc 100644 --- a/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/use_button_styles.ts +++ b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/use_button_styles.ts @@ -6,12 +6,11 @@ */ import { useMemo } from 'react'; -import { transparentize } from '@elastic/eui'; import { CSSObject } from '@emotion/react'; import { useEuiTheme } from '../../hooks'; export const useButtonStyles = () => { - const { euiTheme, euiVars } = useEuiTheme(); + const { euiTheme } = useEuiTheme(); const cached = useMemo(() => { const { border, colors, size, font } = euiTheme; @@ -27,9 +26,9 @@ export const useButtonStyles = () => { marginRight: size.xs, minWidth: 0, padding: `${size.s} ${size.xxs}`, - color: euiVars.euiColorVis6_asText, - background: transparentize(euiVars.euiColorVis6, 0.04), - border: `${border.width.thin} solid ${transparentize(euiVars.euiColorVis6, 0.48)}`, + color: colors.textPrimary, + background: colors.backgroundBasePrimary, + border: `${border.width.thin} solid ${colors.borderBasePrimary}`, '&& > span': { padding: `0px ${size.xxs}`, svg: { @@ -37,7 +36,7 @@ export const useButtonStyles = () => { }, }, '&&:hover, &&:focus': { - background: transparentize(euiVars.euiColorVis6, 0.12), + background: colors.backgroundLightPrimary, textDecoration: 'none', }, '&.isExpanded > span svg:not(.alertIcon)': { @@ -45,9 +44,9 @@ export const useButtonStyles = () => { }, '&.isExpanded': { color: colors.ghost, - background: euiVars.euiColorVis6, + background: colors.backgroundFilledPrimary, '&:hover, &:focus': { - background: euiVars.euiColorVis6, + background: colors.backgroundFilledPrimary, }, }, }; @@ -57,18 +56,18 @@ export const useButtonStyles = () => { }; const alertButton: CSSObject = { ...button, - color: euiVars.euiColorDanger, - background: transparentize(euiVars.euiColorDanger, 0.04), - border: `${border.width.thin} solid ${transparentize(euiVars.euiColorDanger, 0.48)}`, + color: colors.textDanger, + background: colors.backgroundBaseDanger, + border: `${border.width.thin} solid ${colors.borderBaseDanger}`, '&&:hover, &&:focus': { - background: transparentize(euiVars.euiColorDanger, 0.12), + background: colors.backgroundLightDanger, textDecoration: 'none', }, '&.isExpanded': { color: colors.ghost, - background: euiVars.euiColorDanger, + background: colors.backgroundFilledDanger, '&:hover, &:focus': { - background: `${euiVars.euiColorDanger}`, + background: `${colors.backgroundFilledDanger}`, }, }, @@ -83,18 +82,18 @@ export const useButtonStyles = () => { const outputButton: CSSObject = { ...button, - color: euiVars.euiColorVis1, - background: transparentize(euiVars.euiColorVis1, 0.04), - border: `${border.width.thin} solid ${transparentize(euiVars.euiColorVis1, 0.48)}`, + color: colors.textAccent, + background: colors.backgroundBaseAccent, + border: `${border.width.thin} solid ${colors.borderBaseAccent}`, '&&:hover, &&:focus': { - background: transparentize(euiVars.euiColorVis1, 0.12), + background: colors.backgroundLightAccent, textDecoration: 'none', }, '&.isExpanded': { color: colors.ghost, - background: euiVars.euiColorVis1, + background: colors.backgroundFilledAccent, '&:hover, &:focus': { - background: `${euiVars.euiColorVis1}`, + background: `${colors.backgroundFilledAccent}`, }, }, }; @@ -102,12 +101,12 @@ export const useButtonStyles = () => { const userChangedButton: CSSObject = { ...button, cursor: 'default', - color: euiVars.euiColorGhost, - background: euiVars.euiColorVis3, - border: `${border.width.thin} solid ${transparentize(euiVars.euiColorVis3, 0.48)}`, + color: colors.textAccentSecondary, + background: colors.backgroundBaseAccentSecondary, + border: `${border.width.thin} solid ${colors.borderBaseAccentSecondary}`, '&&:hover, &&:focus': { - color: euiVars.euiColorGhost, - background: euiVars.euiColorVis3, + color: colors.textAccentSecondary, + background: colors.backgroundBaseAccentSecondary, textDecoration: 'none', transform: 'none', animation: 'none', @@ -126,7 +125,7 @@ export const useButtonStyles = () => { userChangedButton, buttonSize, }; - }, [euiTheme, euiVars]); + }, [euiTheme]); return cached; }; diff --git a/x-pack/solutions/security/plugins/session_view/public/components/tty_player/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_player/styles.ts index cbc182c7efb53..f7b9ff88a4445 100644 --- a/x-pack/solutions/security/plugins/session_view/public/components/tty_player/styles.ts +++ b/x-pack/solutions/security/plugins/session_view/public/components/tty_player/styles.ts @@ -37,7 +37,7 @@ export const useStyles = (tty?: Teletype, show?: boolean) => { padding: `${size.m} ${size.base}`, }; - const windowBoundsColor = transparentize(colors.ghost, 0.6); + const windowBoundsColor = transparentize(colors.ghost, 0.6); // TODO: Borealis migration - replace transparentize with color token, get rid of ghost color const terminal: CSSObject = { minHeight: '100%', diff --git a/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts index 48c7c67128c64..dad8c34b52ffb 100644 --- a/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts +++ b/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts @@ -11,8 +11,13 @@ import { useEuiTheme } from '../../../hooks'; import { TTYPlayerLineMarkerType } from '.'; +const isAmsterdam = (euiThemeName: string) => { + return euiThemeName?.toLowerCase().includes('amsterdam'); +}; + export const useStyles = (progress: number) => { const { euiTheme, euiVars } = useEuiTheme(); + const themeName = euiTheme.themeName; const cached = useMemo(() => { const { border } = euiTheme; @@ -36,7 +41,7 @@ export const useStyles = (progress: number) => { if (selected) { return euiVars.terminalOutputMarkerAccent; } - return euiVars.euiColorVis1; + return isAmsterdam(themeName) ? euiVars.euiColorVis1 : euiVars.euiColorVis2; }; const marker = (type: TTYPlayerLineMarkerType, selected: boolean): CSSObject => ({ @@ -84,16 +89,24 @@ export const useStyles = (progress: number) => { "input[type='range']::-webkit-slider-thumb": customThumb, "input[type='range']::-moz-range-thumb": customThumb, '.euiRangeHighlight__progress': { - backgroundColor: euiVars.euiColorVis0_behindText, + backgroundColor: isAmsterdam(themeName) + ? euiVars.euiColorVis0_behindText + : euiVars.euiColorVis0, width: progress + '%!important', borderBottomRightRadius: 0, borderTopRightRadius: 0, }, '.euiRangeSlider:focus ~ .euiRangeHighlight .euiRangeHighlight__progress': { - backgroundColor: euiVars.euiColorVis0_behindText, + backgroundColor: isAmsterdam(themeName) + ? euiVars.euiColorVis0_behindText + : euiVars.euiColorVis0, }, '.euiRangeSlider:focus:not(:focus-visible) ~ .euiRangeHighlight .euiRangeHighlight__progress': - { backgroundColor: euiVars.euiColorVis0_behindText }, + { + backgroundColor: isAmsterdam(themeName) + ? euiVars.euiColorVis0_behindText + : euiVars.euiColorVis0, + }, '.euiRangeTrack::after': { background: euiVars.terminalOutputSliderBackground, }, @@ -120,12 +133,15 @@ export const useStyles = (progress: number) => { }, [ euiTheme, euiVars.euiColorVis0_behindText, + euiVars.euiColorVis0, euiVars.euiColorVis1, + euiVars.euiColorVis2, euiVars.terminalOutputBackground, euiVars.terminalOutputMarkerAccent, euiVars.terminalOutputMarkerWarning, euiVars.terminalOutputSliderBackground, progress, + themeName, ]); return cached; diff --git a/x-pack/solutions/security/plugins/session_view/public/hooks/use_eui_theme.ts b/x-pack/solutions/security/plugins/session_view/public/hooks/use_eui_theme.ts index a62cab176657b..6c43c4ad1e6b1 100644 --- a/x-pack/solutions/security/plugins/session_view/public/hooks/use_eui_theme.ts +++ b/x-pack/solutions/security/plugins/session_view/public/hooks/use_eui_theme.ts @@ -5,14 +5,12 @@ * 2.0. */ -import { shade, useEuiTheme as useEuiThemeHook } from '@elastic/eui'; -import { euiLightVars, euiDarkVars } from '@kbn/ui-theme'; +import { useEuiTheme as useEuiThemeHook } from '@elastic/eui'; +import { euiLightVars, euiDarkVars } from '@kbn/ui-theme'; // TODO: Borealis migration - replace to use vars from useEuiTheme? import { useMemo } from 'react'; type EuiThemeProps = Parameters; type ExtraEuiVars = { - // eslint-disable-next-line @typescript-eslint/naming-convention - euiColorVis6_asText: string; buttonsBackgroundNormalDefaultPrimary: string; terminalOutputBackground: string; terminalOutputMarkerAccent: string; @@ -29,14 +27,12 @@ export const useEuiTheme = (...props: EuiThemeProps): EuiThemeReturn => { const euiThemeHook = useEuiThemeHook(...props); const euiVars = useMemo(() => { - const themeVars = euiThemeHook.colorMode === 'DARK' ? euiDarkVars : euiLightVars; + const themeVars = euiThemeHook.colorMode === 'DARK' ? euiDarkVars : euiLightVars; // TODO: Borealis migration - check if euiLightVars and euiDarkVars are still available in Borialis const extraEuiVars: ExtraEuiVars = { - // eslint-disable-next-line @typescript-eslint/naming-convention - euiColorVis6_asText: shade(themeVars.euiColorVis6, 0.335), - buttonsBackgroundNormalDefaultPrimary: '#006DE4', + buttonsBackgroundNormalDefaultPrimary: '#006DE4', // TODO: Borealis migration - replace with proper color token // Terminal Output Colors don't change with the theme - terminalOutputBackground: '#1d1e23', + terminalOutputBackground: '#1d1e23', // TODO: Borealis migration - replace with proper color token terminalOutputMarkerAccent: euiLightVars.euiColorAccent, terminalOutputMarkerWarning: euiDarkVars.euiColorWarning, terminalOutputSliderBackground: euiLightVars.euiColorDarkestShade, From fb8a17ba04f493cd5a0d0ba33c002750150fd0af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Tue, 21 Jan 2025 10:29:51 +0100 Subject: [PATCH 024/148] [UA] Use new `_create_from` ES API (#207114) --- .../lib/reindexing/index_settings.test.ts | 117 +----------------- .../server/lib/reindexing/index_settings.ts | 72 ----------- .../lib/reindexing/reindex_service.test.ts | 24 ++-- .../server/lib/reindexing/reindex_service.ts | 40 +++--- .../upgrade_assistant/upgrade_assistant.ts | 6 +- 5 files changed, 42 insertions(+), 217 deletions(-) diff --git a/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/index_settings.test.ts b/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/index_settings.test.ts index 685bc443c324c..17eadc16c6229 100644 --- a/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/index_settings.test.ts +++ b/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/index_settings.test.ts @@ -8,124 +8,11 @@ import { versionService } from '../version'; import { getMockVersionInfo } from '../__fixtures__/version'; -import { - generateNewIndexName, - getReindexWarnings, - sourceNameForIndex, - transformFlatSettings, -} from './index_settings'; +import { generateNewIndexName, getReindexWarnings, sourceNameForIndex } from './index_settings'; const { currentMajor, prevMajor } = getMockVersionInfo(); -describe('transformFlatSettings', () => { - it('does not blow up for empty mappings', () => { - expect( - transformFlatSettings({ - settings: {}, - mappings: {}, - }) - ).toEqual({ - settings: {}, - mappings: {}, - }); - }); - - it('removes settings that cannot be set on a new index', () => { - expect( - transformFlatSettings({ - settings: { - // Settings that should get preserved - 'index.number_of_replicas': '1', - 'index.number_of_shards': '5', - - // Blacklisted settings - 'index.allocation.existing_shards_allocator': 'gateway_allocator', - 'index.blocks.write': 'true', - 'index.creation_date': '1547052614626', - 'index.frozen': 'true', - 'index.history.uuid': 'i66b9149a-00ee-42d9-8ca1-85ae9279234gh', - 'index.merge.enabled': 'true', - 'index.provided_name': 'test1', - 'index.resize.source.name': 'resizeName', - 'index.resize.source.uuid': 'k34b9149a-00ee-42d9-8ca1-85ae9279234zs', - 'index.routing.allocation.initial_recovery._id': '1', - 'index.search.throttled': 'true', - 'index.source_only': 'true', - 'index.shrink.source.name': 'shrinkSourceName', - 'index.shrink.source.uuid': 'q34b9149a-00ee-42d9-8ca1-85ae234324df', - 'index.store.snapshot.repository_name': 'repoName', - 'index.store.snapshot.snapshot_name': 'snapshotName', - 'index.store.snapshot.snapshot_uuid': 'f345c9149a-00ee-42d9-8ca1-85ae234324df', - 'index.store.snapshot.index_name': 'snapshotIndexName', - 'index.store.snapshot.index_uuid': 'h764f9149a-00ee-42d9-8ca1-85ae234324af', - 'index.uuid': 'i66b9149a-00ee-42d9-8ca1-85ae927924bf', - 'index.verified_before_close': 'true', - 'index.version.created': '123123', - 'index.version.upgraded': '123123', - 'index.mapper.dynamic': 'true', - - // Deprecated settings - 'index.force_memory_term_dictionary': '1024', - 'index.max_adjacency_matrix_filters': 'true', - 'index.soft_deletes.enabled': 'true', - }, - mappings: {}, - }) - ).toEqual({ - settings: { - 'index.number_of_replicas': '1', - 'index.number_of_shards': '5', - }, - mappings: {}, - }); - }); - - it('removes index.translog.retention.size if soft deletes is enabled', () => { - expect( - transformFlatSettings({ - settings: { - // Settings that should get preserved - 'index.number_of_replicas': '1', - 'index.number_of_shards': '5', - - // Deprecated settings - 'index.soft_deletes.enabled': 'true', - 'index.translog.retention.size': '5b', - }, - mappings: {}, - }) - ).toEqual({ - settings: { - 'index.number_of_replicas': '1', - 'index.number_of_shards': '5', - }, - mappings: {}, - }); - }); - - it('removes index.translog.retention.age if soft deletes is enabled', () => { - expect( - transformFlatSettings({ - settings: { - // Settings that should get preserved - 'index.number_of_replicas': '1', - 'index.number_of_shards': '5', - - // Deprecated settings - 'index.soft_deletes.enabled': 'true', - 'index.translog.retention.age': '5d', - }, - mappings: {}, - }) - ).toEqual({ - settings: { - 'index.number_of_replicas': '1', - 'index.number_of_shards': '5', - }, - mappings: {}, - }); - }); - +describe('index settings', () => { describe('sourceNameForIndex', () => { beforeEach(() => { versionService.setup('8.0.0'); diff --git a/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/index_settings.ts b/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/index_settings.ts index 3344ecde4ab69..178df91be6096 100644 --- a/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/index_settings.ts +++ b/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/index_settings.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { flow, omit } from 'lodash'; import { ReindexWarning } from '../../../common/types'; import { versionService } from '../version'; import { FlatSettings } from './types'; @@ -27,17 +26,6 @@ const deprecatedSettings = [ 'index.soft_deletes.enabled', ]; -/** - * Validates, and updates deprecated settings and mappings to be applied to the - * new updated index. - */ -export const transformFlatSettings = (flatSettings: FlatSettings) => { - const settings = transformSettings(flatSettings.settings); - const mappings = transformMappings(flatSettings.mappings); - - return { settings, mappings }; -}; - /** * Provides the assumed source of the index name stripping any prefixing * introduced by the upgrade assistant @@ -125,63 +113,3 @@ export const getReindexWarnings = (flatSettings: FlatSettings): ReindexWarning[] return warnings; }; - -const removeUnsettableSettings = (settings: FlatSettings['settings']) => - omit(settings, [ - // Private ES settings - 'index.allocation.existing_shards_allocator', - 'index.blocks.write', - 'index.creation_date', - 'index.frozen', - 'index.history.uuid', - 'index.merge.enabled', - 'index.provided_name', - 'index.resize.source.name', - 'index.resize.source.uuid', - 'index.routing.allocation.initial_recovery._id', - 'index.search.throttled', - 'index.source_only', - 'index.shrink.source.name', - 'index.shrink.source.uuid', - 'index.store.snapshot.repository_name', - 'index.store.snapshot.snapshot_name', - 'index.store.snapshot.snapshot_uuid', - 'index.store.snapshot.index_name', - 'index.store.snapshot.index_uuid', - 'index.uuid', - 'index.verified_before_close', - 'index.version.created', - - // Ignored since 6.x and forbidden in 7.x - 'index.mapper.dynamic', - - // Deprecated in 9.0 - 'index.version.upgraded', - ]); - -const removeDeprecatedSettings = (settings: FlatSettings['settings']) => { - const updatedSettings = { ...settings }; - - // Translog settings are only marked as deprecated if soft deletes is enabled - if (updatedSettings['index.soft_deletes.enabled'] === 'true') { - if (updatedSettings['index.translog.retention.size']) { - delete updatedSettings['index.translog.retention.size']; - } - - // @ts-expect-error @elastic/elasticsearch doesn't declare such a setting - if (settings['index.translog.retention.age']) { - delete updatedSettings['index.translog.retention.age']; - } - } - - return omit(updatedSettings, deprecatedSettings); -}; - -// Use `flow` to pipe the settings through each function. -const transformSettings = flow(removeUnsettableSettings, removeDeprecatedSettings); - -const updateFixableMappings = (mappings: FlatSettings['mappings']) => { - return mappings; -}; - -const transformMappings = flow(updateFixableMappings); diff --git a/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts b/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts index e5c2b6beb4a6f..cef50f37b2994 100644 --- a/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts +++ b/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts @@ -457,19 +457,21 @@ describe('reindexService', () => { // The more intricate details of how the settings are chosen are test separately. it('creates new index with settings and mappings and updates lastCompletedStep', async () => { actions.getFlatSettings.mockResolvedValueOnce(settingsMappings); - clusterClient.asCurrentUser.indices.create.mockResponse( - // @ts-expect-error not full interface - { acknowledged: true } - ); + clusterClient.asCurrentUser.transport.request.mockResolvedValueOnce({ acknowledged: true }); const updatedOp = await service.processNextStep(reindexOp); expect(updatedOp.attributes.lastCompletedStep).toEqual(ReindexStep.newIndexCreated); - expect(clusterClient.asCurrentUser.indices.create).toHaveBeenCalledWith({ - index: 'myIndex-reindex-0', - // index.blocks.write should be removed from the settings for the new index. - // index.number_of_replicas and index.refresh_interval are stored to be set at a later stage. - // Setting to 0 and -1, respectively, right now. - settings: { 'index.number_of_replicas': 0, 'index.refresh_interval': -1 }, - mappings: settingsMappings.mappings, + expect(clusterClient.asCurrentUser.transport.request).toHaveBeenCalledWith({ + method: 'POST', + path: `_create_from/myIndex/myIndex-reindex-0`, + body: { + settings_override: { + 'index.blocks.read_only': null, + 'index.blocks.read_only_allow_delete': null, + 'index.blocks.write': null, + 'index.number_of_replicas': 0, + 'index.refresh_interval': -1, + }, + }, }); }); diff --git a/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/reindex_service.ts b/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/reindex_service.ts index f26a9b72252a5..a6f85e45e3676 100644 --- a/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/reindex_service.ts +++ b/x-pack/platform/plugins/private/upgrade_assistant/server/lib/reindexing/reindex_service.ts @@ -19,12 +19,7 @@ import { import { esIndicesStateCheck } from '../es_indices_state_check'; -import { - generateNewIndexName, - getReindexWarnings, - sourceNameForIndex, - transformFlatSettings, -} from './index_settings'; +import { generateNewIndexName, getReindexWarnings, sourceNameForIndex } from './index_settings'; import { ReindexActions } from './reindex_actions'; @@ -190,7 +185,7 @@ export const reindexServiceFactory = ( throw error.indexNotFound(`Index ${indexName} does not exist.`); } - const { settings, mappings } = transformFlatSettings(flatSettings); + const { settings = {} } = flatSettings; // Backup the current settings to restore them after the reindex // https://github.com/elastic/kibana/issues/201605 @@ -201,16 +196,31 @@ export const reindexServiceFactory = ( let createIndex; try { - createIndex = await esClient.indices.create({ - index: newIndexName, - settings: { - ...settings, - // Reindexing optimizations - 'index.number_of_replicas': 0, - 'index.refresh_interval': -1, + createIndex = await esClient.transport.request<{ acknowledged: boolean }>({ + method: 'POST', + path: `_create_from/${indexName}/${newIndexName}`, + body: { + // Settings overrides copied from ES datastream reindex logic + // https://github.com/elastic/elasticsearch/blob/9c0709f386fee4154e930cb61a02868adebe8572/x-pack/plugin/migrate/src/main/java/org/elasticsearch/xpack/migrate/action/ReindexDataStreamIndexTransportAction.java#L195-L210 + settings_override: { + // Remove read-only settings if they exist + 'index.blocks.read_only': null, + 'index.blocks.read_only_allow_delete': null, + 'index.blocks.write': null, + // Reindexing optimizations + 'index.number_of_replicas': 0, + 'index.refresh_interval': -1, + }, }, - mappings, }); + /** + * Response is expected to be: + * { + * "acknowledged": true, + * "shards_acknowledged": true, + * "index": "test-copy" + * } + */ } catch (err) { // If for any reason the new index name generated by the `generateNewIndexName` already // exists (this could happen if kibana is restarted during reindexing), we can just go diff --git a/x-pack/test/api_integration/apis/upgrade_assistant/upgrade_assistant.ts b/x-pack/test/api_integration/apis/upgrade_assistant/upgrade_assistant.ts index f03cb6fb80e37..d7a96333f49e8 100644 --- a/x-pack/test/api_integration/apis/upgrade_assistant/upgrade_assistant.ts +++ b/x-pack/test/api_integration/apis/upgrade_assistant/upgrade_assistant.ts @@ -48,10 +48,8 @@ export default function ({ getService }: FtrProviderContext) { try { await es.indices.create({ index: indexName, - body: { - settings: { - index: indexSettings, - }, + settings: { + index: indexSettings, }, }); } catch (err) { From f21500b251e703834f0759dbdb14fdefdd90d7e5 Mon Sep 17 00:00:00 2001 From: Ievgen Sorokopud Date: Tue, 21 Jan 2025 10:55:56 +0100 Subject: [PATCH 025/148] [Rules migration] Allow sorting by `risk_score` field (#207207) ## Summary [Internal link](https://github.com/elastic/security-team/issues/10820) to the feature details This PR adds possibility to sort migration rules by `risk_score` field. https://github.com/user-attachments/assets/97a2bb5b-fc19-45db-ab93-c7f9676aa81c > [!NOTE] > This feature needs `siemMigrationsEnabled` experimental flag enabled to work. --- .../server/lib/siem_migrations/rules/data/sort.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/sort.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/sort.ts index 7c1bbc40d2a58..4ec3e3483813d 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/sort.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/sort.ts @@ -50,6 +50,9 @@ const sortingOptions = { }, ]; }, + riskScore(direction: estypes.SortOrder = 'asc'): estypes.SortCombinations[] { + return [{ 'elastic_rule.risk_score': direction }]; + }, status(direction: estypes.SortOrder = 'asc'): estypes.SortCombinations[] { const field = 'translation_result'; const installedRuleField = 'elastic_rule.id'; @@ -101,6 +104,7 @@ const DEFAULT_SORTING: estypes.Sort = [ ...sortingOptions.status('desc'), ...sortingOptions.matchedPrebuiltRule('desc'), ...sortingOptions.severity(), + ...sortingOptions.riskScore('desc'), ...sortingOptions.updated(), ]; @@ -109,6 +113,13 @@ const sortingOptionsMap: { } = { 'elastic_rule.title': sortingOptions.name, 'elastic_rule.severity': (direction?: estypes.SortOrder) => [ + ...sortingOptions.severity(direction), + ...sortingOptions.riskScore(direction), + ...sortingOptions.status('desc'), + ...sortingOptions.matchedPrebuiltRule('desc'), + ], + 'elastic_rule.risk_score': (direction?: estypes.SortOrder) => [ + ...sortingOptions.riskScore(direction), ...sortingOptions.severity(direction), ...sortingOptions.status('desc'), ...sortingOptions.matchedPrebuiltRule('desc'), @@ -117,11 +128,13 @@ const sortingOptionsMap: { ...sortingOptions.matchedPrebuiltRule(direction), ...sortingOptions.status('desc'), ...sortingOptions.severity('desc'), + ...sortingOptions.riskScore(direction), ], translation_result: (direction?: estypes.SortOrder) => [ ...sortingOptions.status(direction), ...sortingOptions.matchedPrebuiltRule('desc'), ...sortingOptions.severity('desc'), + ...sortingOptions.riskScore(direction), ], updated_at: sortingOptions.updated, }; From 8dd8acc1b64e39a5cc29b0cced48d475725217b0 Mon Sep 17 00:00:00 2001 From: Sonia Sanz Vivas Date: Tue, 21 Jan 2025 11:39:16 +0100 Subject: [PATCH 026/148] [Ingest pipelines] Set outsideClickCloses to false if processor is modified (#207173) Closes https://github.com/elastic/kibana/issues/198469 ## Summary When a user is working on adding a processor and click outside the side flyout before saving the changes, their work gets lost. This is especially annoying if the user is working on a complex processor and clicks out of the window unintentionally. To avoid this, we can take advance of the `outsideClickCloses` prop. When the form has been modified (is dirty), clicking outside the flyout won't close the flyout, so the work done in the processor won't be lost. If nothing has been changed `outsideClickCloses` is set to true. https://github.com/user-attachments/assets/0d70e16d-d731-4b01-b39e-3026a9c89002 This solution has been verified with @jovana-andjelkovic. --- .../components/processor_form/add_processor_form.tsx | 6 ++++-- .../components/processor_form/edit_processor_form.tsx | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/add_processor_form.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/add_processor_form.tsx index 7f60ece3b2b7c..a378715bf9472 100644 --- a/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/add_processor_form.tsx +++ b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/add_processor_form.tsx @@ -20,7 +20,7 @@ import { EuiFlexItem, } from '@elastic/eui'; -import { Form, FormDataProvider, FormHook } from '../../../../../shared_imports'; +import { Form, FormDataProvider, FormHook, useFormIsModified } from '../../../../../shared_imports'; import { getProcessorDescriptor } from '../shared'; import { DocumentationButton } from './documentation_button'; @@ -75,9 +75,11 @@ export const AddProcessorForm: FunctionComponent = ({ [] /* eslint-disable-line react-hooks/exhaustive-deps */ ); + const isFormDirty = useFormIsModified({ form }); + return (
- + diff --git a/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/edit_processor_form.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/edit_processor_form.tsx index ff782d077156e..c6041e956ffa9 100644 --- a/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/edit_processor_form.tsx +++ b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/edit_processor_form.tsx @@ -23,7 +23,7 @@ import { EuiSpacer, } from '@elastic/eui'; -import { Form, FormDataProvider, FormHook } from '../../../../../shared_imports'; +import { Form, FormDataProvider, FormHook, useFormIsModified } from '../../../../../shared_imports'; import { ProcessorInternal } from '../../types'; import { useTestPipelineContext } from '../../context'; import { getProcessorDescriptor } from '../shared'; @@ -153,6 +153,7 @@ export const EditProcessorForm: FunctionComponent = ({ flyoutContent = ; } + const isFormDirty = useFormIsModified({ form }); return ( = ({ resetProcessors(); closeFlyout(); }} + outsideClickCloses={!isFormDirty} > From 8b37d12233910593e3bc5edadc7ee413aa754199 Mon Sep 17 00:00:00 2001 From: Miriam <31922082+MiriamAparicio@users.noreply.github.com> Date: Tue, 21 Jan 2025 10:51:25 +0000 Subject: [PATCH 027/148] [ObsUX] Remove color setting on server side and use Eui theme (#207070) Closes https://github.com/elastic/kibana/issues/206708?reload=1?reload=1 ## Summary The transaction breakdown chart was showing Amsterdam theme colors instead of Borealis. The issue was because some of this colors are set on the server side and used the kibana theme not eui theme. ### What was done Remove the color setting on server side and update `getVizColorForIndex()` to use `EuiTheme` - Metrics charts - GC charts - Transaction breakdown chart BEFORE image AFTER ![image](https://github.com/user-attachments/assets/90851b24-4e48-422b-939e-df2e2a79620b) --- .../plugins/apm/common/viz_colors.ts | 28 +++++++++---------- .../service_dependencies_breakdown_chart.tsx | 4 ++- .../app/storage_explorer/storage_chart.tsx | 8 ++++-- .../shared/charts/breakdown_chart/index.tsx | 5 ++-- .../shared/charts/timeseries_chart.tsx | 5 ++-- .../java/gc/fetch_and_transform_gc_metrics.ts | 3 -- .../metrics/fetch_and_transform_metrics.ts | 4 --- .../serverless/get_compute_usage_chart.ts | 2 -- .../get_serverless_function_latency_chart.ts | 3 -- .../routes/transactions/breakdown/index.ts | 4 --- .../plugins/apm/typings/timeseries.ts | 2 +- .../__snapshots__/breakdown.spec.snap | 6 +--- .../tests/transactions/breakdown.spec.ts | 3 +- 13 files changed, 31 insertions(+), 46 deletions(-) diff --git a/x-pack/solutions/observability/plugins/apm/common/viz_colors.ts b/x-pack/solutions/observability/plugins/apm/common/viz_colors.ts index 20d525c914549..f2346fbad22f8 100644 --- a/x-pack/solutions/observability/plugins/apm/common/viz_colors.ts +++ b/x-pack/solutions/observability/plugins/apm/common/viz_colors.ts @@ -5,24 +5,24 @@ * 2.0. */ -import { euiLightVars as lightTheme } from '@kbn/ui-theme'; +import type { EuiThemeComputed } from '@elastic/eui'; -function getVizColorsForTheme(theme = lightTheme) { +function getVizColorsForTheme(euiTheme: EuiThemeComputed) { return [ - theme.euiColorVis0, - theme.euiColorVis1, - theme.euiColorVis2, - theme.euiColorVis3, - theme.euiColorVis4, - theme.euiColorVis5, - theme.euiColorVis6, - theme.euiColorVis7, - theme.euiColorVis8, - theme.euiColorVis9, + euiTheme.colors.vis.euiColorVis0, + euiTheme.colors.vis.euiColorVis1, + euiTheme.colors.vis.euiColorVis2, + euiTheme.colors.vis.euiColorVis3, + euiTheme.colors.vis.euiColorVis4, + euiTheme.colors.vis.euiColorVis5, + euiTheme.colors.vis.euiColorVis6, + euiTheme.colors.vis.euiColorVis7, + euiTheme.colors.vis.euiColorVis8, + euiTheme.colors.vis.euiColorVis9, ]; } -export function getVizColorForIndex(index = 0, theme = lightTheme) { - const colors = getVizColorsForTheme(theme); +export function getVizColorForIndex(index = 0, euiTheme: EuiThemeComputed) { + const colors = getVizColorsForTheme(euiTheme); return colors[index % colors.length]; } diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/service_dependencies/service_dependencies_breakdown_chart.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/service_dependencies/service_dependencies_breakdown_chart.tsx index b380765d2451d..dba272c260072 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/service_dependencies/service_dependencies_breakdown_chart.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/service_dependencies/service_dependencies_breakdown_chart.tsx @@ -5,6 +5,7 @@ * 2.0. */ import React from 'react'; +import { useEuiTheme } from '@elastic/eui'; import { getVizColorForIndex } from '../../../../common/viz_colors'; import type { Coordinate, TimeSeries } from '../../../../typings/timeseries'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; @@ -15,6 +16,7 @@ import { BreakdownChart } from '../../shared/charts/breakdown_chart'; export function ServiceDependenciesBreakdownChart({ height }: { height: number }) { const { serviceName } = useApmServiceContext(); + const { euiTheme } = useEuiTheme(); const { query: { kuery, environment, rangeFrom, rangeTo }, @@ -50,7 +52,7 @@ export function ServiceDependenciesBreakdownChart({ height }: { height: number } title: item.title, data: item.data, type: 'area', - color: getVizColorForIndex(index), + color: getVizColorForIndex(index, euiTheme), }; }) ?? []; diff --git a/x-pack/solutions/observability/plugins/apm/public/components/app/storage_explorer/storage_chart.tsx b/x-pack/solutions/observability/plugins/apm/public/components/app/storage_explorer/storage_chart.tsx index 0531c176c2201..77bfa69a3706d 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/app/storage_explorer/storage_chart.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/app/storage_explorer/storage_chart.tsx @@ -5,7 +5,7 @@ * 2.0. */ import React from 'react'; -import { euiPaletteColorBlind } from '@elastic/eui'; +import { euiPaletteColorBlind, useEuiTheme } from '@elastic/eui'; import { AreaSeries, Axis, @@ -17,6 +17,7 @@ import { } from '@elastic/charts'; import { useChartThemes } from '@kbn/observability-shared-plugin/public'; import { i18n } from '@kbn/i18n'; +import { getVizColorForIndex } from '../../../../common/viz_colors'; import { useProgressiveFetcher } from '../../../hooks/use_progressive_fetcher'; import { useTimeRange } from '../../../hooks/use_time_range'; import { useApmParams } from '../../../hooks/use_apm_params'; @@ -30,6 +31,7 @@ import { asDynamicBytes } from '../../../../common/utils/formatters'; export function StorageChart() { const { core } = useApmPluginContext(); const chartThemes = useChartThemes(); + const { euiTheme } = useEuiTheme(); const euiPaletteColorBlindRotations = 3; const groupedPalette = euiPaletteColorBlind({ @@ -116,7 +118,7 @@ export function StorageChart() { gridLine={{ visible: true }} tickFormat={asDynamicBytes} /> - {storageTimeSeries.map((serie) => ( + {storageTimeSeries.map((serie, index) => ( ))} diff --git a/x-pack/solutions/observability/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx b/x-pack/solutions/observability/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx index d9cbec2c86bc6..a4893d4f3dbdb 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/shared/charts/breakdown_chart/index.tsx @@ -26,6 +26,7 @@ import moment from 'moment'; import React from 'react'; import { useHistory } from 'react-router-dom'; import { useChartThemes } from '@kbn/observability-shared-plugin/public'; +import { getVizColorForIndex } from '../../../../../common/viz_colors'; import type { Annotation } from '../../../../../common/annotations'; import { asAbsoluteDateTime, @@ -142,7 +143,7 @@ export function BreakdownChart({ )} {timeseries?.length ? ( - timeseries.map((serie) => { + timeseries.map((serie, index) => { return ( ); diff --git a/x-pack/solutions/observability/plugins/apm/public/components/shared/charts/timeseries_chart.tsx b/x-pack/solutions/observability/plugins/apm/public/components/shared/charts/timeseries_chart.tsx index 75be9419fa111..6598a5ed53a55 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/shared/charts/timeseries_chart.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/shared/charts/timeseries_chart.tsx @@ -33,6 +33,7 @@ import type { ReactElement } from 'react'; import React from 'react'; import { useHistory } from 'react-router-dom'; import { useChartThemes } from '@kbn/observability-shared-plugin/public'; +import { getVizColorForIndex } from '../../../../common/viz_colors'; import { isExpectedBoundsComparison } from '../time_comparison/get_comparison_options'; import { useChartPointerEventContext } from '../../../context/chart_pointer_event/use_chart_pointer_event_context'; @@ -222,7 +223,7 @@ export function TimeseriesChart({ ]} style={endZoneRectAnnotationStyle} /> - {allSeries.map((serie) => { + {allSeries.map((serie, index) => { const Series = getChartType(serie.type); return ( @@ -239,7 +240,7 @@ export function TimeseriesChart({ stackAccessors={serie.stackAccessors ?? undefined} markSizeAccessor={serie.markSizeAccessor} data={isEmpty ? [] : serie.data} - color={serie.color} + color={getVizColorForIndex(index, euiTheme)} curve={CurveType.CURVE_MONOTONE_X} hideInLegend={serie.hideLegend} fit={serie.fit ?? undefined} diff --git a/x-pack/solutions/observability/plugins/apm/server/routes/metrics/by_agent/java/gc/fetch_and_transform_gc_metrics.ts b/x-pack/solutions/observability/plugins/apm/server/routes/metrics/by_agent/java/gc/fetch_and_transform_gc_metrics.ts index 4e3e45e00722c..7c55aa5e29724 100644 --- a/x-pack/solutions/observability/plugins/apm/server/routes/metrics/by_agent/java/gc/fetch_and_transform_gc_metrics.ts +++ b/x-pack/solutions/observability/plugins/apm/server/routes/metrics/by_agent/java/gc/fetch_and_transform_gc_metrics.ts @@ -6,7 +6,6 @@ */ import { sum, round } from 'lodash'; -import { euiLightVars as theme } from '@kbn/ui-theme'; import { kqlQuery, rangeQuery } from '@kbn/observability-plugin/server'; import { ProcessorEvent } from '@kbn/observability-plugin/common'; import { isFiniteNumber } from '../../../../../../common/utils/is_finite_number'; @@ -23,7 +22,6 @@ import { SERVICE_NAME, } from '../../../../../../common/es_fields/apm'; import { getBucketSize } from '../../../../../../common/utils/get_bucket_size'; -import { getVizColorForIndex } from '../../../../../../common/viz_colors'; import { JAVA_AGENT_NAMES } from '../../../../../../common/agent_name'; import { environmentQuery, @@ -179,7 +177,6 @@ export async function fetchAndTransformGcMetrics({ title: label, key: label, type: chartBase.type, - color: getVizColorForIndex(i, theme), overallValue, data, }; diff --git a/x-pack/solutions/observability/plugins/apm/server/routes/metrics/fetch_and_transform_metrics.ts b/x-pack/solutions/observability/plugins/apm/server/routes/metrics/fetch_and_transform_metrics.ts index b177bb7cde384..adccc0af6faa8 100644 --- a/x-pack/solutions/observability/plugins/apm/server/routes/metrics/fetch_and_transform_metrics.ts +++ b/x-pack/solutions/observability/plugins/apm/server/routes/metrics/fetch_and_transform_metrics.ts @@ -6,12 +6,10 @@ */ import type { Unionize } from 'utility-types'; -import { euiLightVars as theme } from '@kbn/ui-theme'; import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import type { AggregationOptionsByType } from '@kbn/es-types'; import { kqlQuery, rangeQuery } from '@kbn/observability-plugin/server'; import { ProcessorEvent } from '@kbn/observability-plugin/common'; -import { getVizColorForIndex } from '../../../common/viz_colors'; import type { APMEventClient, APMEventESSearchRequest, @@ -53,7 +51,6 @@ export interface FetchAndTransformMetrics { title: string; key: string; type: ChartType; - color: string; overallValue: number; data: Coordinate[]; }>; @@ -139,7 +136,6 @@ export async function fetchAndTransformMetrics({ title: chartBase.series[seriesKey].title, key: seriesKey, type: chartBase.type, - color: chartBase.series[seriesKey].color || getVizColorForIndex(i, theme), overallValue, data: timeseriesData?.buckets.map((bucket) => { diff --git a/x-pack/solutions/observability/plugins/apm/server/routes/metrics/serverless/get_compute_usage_chart.ts b/x-pack/solutions/observability/plugins/apm/server/routes/metrics/serverless/get_compute_usage_chart.ts index b8e92dc7ac2a5..dda2fbe1c5d56 100644 --- a/x-pack/solutions/observability/plugins/apm/server/routes/metrics/serverless/get_compute_usage_chart.ts +++ b/x-pack/solutions/observability/plugins/apm/server/routes/metrics/serverless/get_compute_usage_chart.ts @@ -8,7 +8,6 @@ import { i18n } from '@kbn/i18n'; import { ProcessorEvent } from '@kbn/observability-plugin/common'; import { kqlQuery, rangeQuery, termQuery } from '@kbn/observability-plugin/server'; -import { euiLightVars as theme } from '@kbn/ui-theme'; import type { APMConfig } from '../../..'; import { FAAS_BILLED_DURATION, @@ -115,7 +114,6 @@ export async function getComputeUsageChart({ computeUsageBytesMs: aggregations?.avgComputeUsageBytesMs.value, countInvocations: aggregations?.countInvocations.value, }) ?? 0, - color: theme.euiColorVis0, data: timeseriesData.buckets.map((bucket) => { const computeUsage = convertComputeUsageToGbSec({ diff --git a/x-pack/solutions/observability/plugins/apm/server/routes/metrics/serverless/get_serverless_function_latency_chart.ts b/x-pack/solutions/observability/plugins/apm/server/routes/metrics/serverless/get_serverless_function_latency_chart.ts index 4735855188e9d..c0d0c4b943745 100644 --- a/x-pack/solutions/observability/plugins/apm/server/routes/metrics/serverless/get_serverless_function_latency_chart.ts +++ b/x-pack/solutions/observability/plugins/apm/server/routes/metrics/serverless/get_serverless_function_latency_chart.ts @@ -7,7 +7,6 @@ import { i18n } from '@kbn/i18n'; import { termQuery } from '@kbn/observability-plugin/server'; -import { euiLightVars as theme } from '@kbn/ui-theme'; import { isEmpty } from 'lodash'; import type { APMConfig } from '../../..'; import type { ApmTransactionDocumentType } from '../../../../common/document_type'; @@ -15,7 +14,6 @@ import { FAAS_BILLED_DURATION, FAAS_ID, METRICSET_NAME } from '../../../../commo import { LatencyAggregationType } from '../../../../common/latency_aggregation_types'; import type { RollupInterval } from '../../../../common/rollup'; import { isFiniteNumber } from '../../../../common/utils/is_finite_number'; -import { getVizColorForIndex } from '../../../../common/viz_colors'; import type { APMEventClient } from '../../../lib/helpers/create_es_client/create_apm_event_client'; import { getLatencyTimeseries } from '../../transactions/get_latency_charts'; import type { GenericMetricsChart } from '../fetch_and_transform_metrics'; @@ -86,7 +84,6 @@ async function getServerlessLatencySeries({ }), key: 'transaction_duration', type: 'linemark', - color: getVizColorForIndex(1, theme), overallValue: transactionLatency.overallAvgDuration ?? 0, data: transactionLatency.latencyTimeseries, }, diff --git a/x-pack/solutions/observability/plugins/apm/server/routes/transactions/breakdown/index.ts b/x-pack/solutions/observability/plugins/apm/server/routes/transactions/breakdown/index.ts index 2c52566fd6ef8..9d139c90ade16 100644 --- a/x-pack/solutions/observability/plugins/apm/server/routes/transactions/breakdown/index.ts +++ b/x-pack/solutions/observability/plugins/apm/server/routes/transactions/breakdown/index.ts @@ -20,14 +20,12 @@ import { import { environmentQuery } from '../../../../common/utils/environment_query'; import { getMetricsDateHistogramParams } from '../../../lib/helpers/metrics'; import { MAX_KPIS } from './constants'; -import { getVizColorForIndex } from '../../../../common/viz_colors'; import type { APMConfig } from '../../..'; import type { APMEventClient } from '../../../lib/helpers/create_es_client/create_apm_event_client'; export interface TransactionBreakdownResponse { timeseries: Array<{ title: string; - color: string; type: string; data: Array<{ x: number; y: number | null }>; hideLegend: boolean; @@ -176,7 +174,6 @@ export async function getTransactionBreakdown({ const { lowerCaseName, ...rest } = kpi; return { ...rest, - color: getVizColorForIndex(index), }; }); @@ -232,7 +229,6 @@ export async function getTransactionBreakdown({ const timeseries = kpis.map((kpi) => ({ title: kpi.name, - color: kpi.color, type: 'areaStacked', data: timeseriesPerSubtype[kpi.name], hideLegend: false, diff --git a/x-pack/solutions/observability/plugins/apm/typings/timeseries.ts b/x-pack/solutions/observability/plugins/apm/typings/timeseries.ts index 64ce2b59fe604..f1344558fe051 100644 --- a/x-pack/solutions/observability/plugins/apm/typings/timeseries.ts +++ b/x-pack/solutions/observability/plugins/apm/typings/timeseries.ts @@ -50,7 +50,7 @@ export interface APMChartSpec< data: TCoordinate[]; legendValue?: string; type: string; - color: string | SeriesColorsArray | SeriesColorAccessorFn; + color?: string | SeriesColorsArray | SeriesColorAccessorFn; areaColor?: string; fit?: Exclude | FitConfig; stackAccessors?: Accessor; diff --git a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/breakdown.spec.snap b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/breakdown.spec.snap index 68495907b3c7f..a9d6cda42a565 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/breakdown.spec.snap +++ b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/breakdown.spec.snap @@ -4,7 +4,6 @@ exports[`APM API tests transactions/breakdown.spec.ts basic apm_8.0.0 Breakdown Object { "timeseries": Array [ Object { - "color": "#54b399", "data": Array [ Object { "x": 1627973400000, @@ -257,7 +256,6 @@ Object { "type": "areaStacked", }, Object { - "color": "#6092c0", "data": Array [ Object { "x": 1627973400000, @@ -510,7 +508,6 @@ Object { "type": "areaStacked", }, Object { - "color": "#d36086", "data": Array [ Object { "x": 1627973400000, @@ -763,7 +760,6 @@ Object { "type": "areaStacked", }, Object { - "color": "#9170b8", "data": Array [ Object { "x": 1627973400000, @@ -1019,7 +1015,7 @@ Object { } `; -exports[`APM API tests transactions/breakdown.spec.ts basic apm_8.0.0 Breakdown when data is loaded returns the transaction breakdown for a transaction group 9`] = ` +exports[`APM API tests transactions/breakdown.spec.ts basic apm_8.0.0 Breakdown when data is loaded returns the transaction breakdown for a transaction group 8`] = ` Array [ Object { "x": 1627973400000, diff --git a/x-pack/test/apm_api_integration/tests/transactions/breakdown.spec.ts b/x-pack/test/apm_api_integration/tests/transactions/breakdown.spec.ts index d7cd6d5b87779..db0f8e0b846a7 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/breakdown.spec.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/breakdown.spec.ts @@ -64,7 +64,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(numberOfSeries).toMatchInline(`1`); - const { title, color, type, data, hideLegend, legendValue } = timeseries[0]; + const { title, type, data, hideLegend, legendValue } = timeseries[0]; const nonNullDataPoints = data.filter(({ y }: { y: number | null }) => y !== null); @@ -103,7 +103,6 @@ export default function ApiTest({ getService }: FtrProviderContext) { `); expectSnapshot(title).toMatchInline(`"app"`); - expectSnapshot(color).toMatchInline(`"#54b399"`); expectSnapshot(type).toMatchInline(`"areaStacked"`); expectSnapshot(hideLegend).toMatchInline(`false`); expectSnapshot(legendValue).toMatchInline(`"100%"`); From 939c9fb71ee5c23c0e54b017fdea44ce0c6de5cb Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Tue, 21 Jan 2025 13:01:24 +0100 Subject: [PATCH 028/148] =?UTF-8?q?[Streams=20=F0=9F=8C=8A]=20Fix=20broken?= =?UTF-8?q?=20breadcrumbs=20in=20project=20nav=20mode=20(#207314)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 📓 Summary The shared `useBreadcrumbs` from `@kbn/typed-react-router-config` couldn't apply correctly breadcrumbs in project mode for a couple of reasons: - the breadcrumbs evaluation was based on the `serverless` plugin existence, while it should rely on the chrome view style - the setter method from `chrome` didn't account for the specific option to apply the breadcrumbs to a project navigation view. | Before | After | |--------|--------| | before | after | --- .../src/breadcrumbs/use_breadcrumbs.ts | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts index 3d63c8a0f27d7..26123f35b15e7 100644 --- a/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts +++ b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts @@ -13,11 +13,12 @@ import { MouseEvent, useEffect, useMemo } from 'react'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import { ChromeBreadcrumbsAppendExtension } from '@kbn/core-chrome-browser'; import type { ServerlessPluginStart } from '@kbn/serverless/public'; +import useObservable from 'react-use/lib/useObservable'; function addClickHandlers( breadcrumbs: ChromeBreadcrumb[], navigateToHref?: (url: string) => Promise -) { +): ChromeBreadcrumb[] { return breadcrumbs.map((bc) => ({ ...bc, ...(bc.href @@ -49,7 +50,12 @@ export const useBreadcrumbs = ( const { services: { - chrome: { docTitle, setBreadcrumbs: chromeSetBreadcrumbs, setBreadcrumbsAppendExtension }, + chrome: { + docTitle, + setBreadcrumbs: chromeSetBreadcrumbs, + setBreadcrumbsAppendExtension, + getChromeStyle$, + }, application: { getUrlForApp, navigateToUrl }, }, } = useKibana<{ @@ -57,6 +63,9 @@ export const useBreadcrumbs = ( chrome: ChromeStart; }>(); + const chromeStyle = useObservable(getChromeStyle$()); + const isProjectNavigation = chromeStyle === 'project'; + const setTitle = docTitle.change; const appPath = getUrlForApp(app?.id ?? 'observability-overview') ?? ''; @@ -77,7 +86,7 @@ export const useBreadcrumbs = ( }, [breadcrumbsAppendExtension, setBreadcrumbsAppendExtension]); useEffect(() => { - const breadcrumbs = serverless + const breadcrumbs = isProjectNavigation ? extraCrumbs : [ { @@ -92,10 +101,25 @@ export const useBreadcrumbs = ( ]; if (setBreadcrumbs) { - setBreadcrumbs(addClickHandlers(breadcrumbs, navigateToUrl)); + const breadcrumbsWithClickHandlers = addClickHandlers(breadcrumbs, navigateToUrl); + setBreadcrumbs(breadcrumbsWithClickHandlers, { + project: { + value: breadcrumbsWithClickHandlers, + absolute: true, + }, + }); } if (setTitle) { setTitle(getTitleFromBreadCrumbs(breadcrumbs)); } - }, [app?.label, appPath, extraCrumbs, navigateToUrl, serverless, setBreadcrumbs, setTitle]); + }, [ + app?.label, + isProjectNavigation, + appPath, + extraCrumbs, + navigateToUrl, + serverless, + setBreadcrumbs, + setTitle, + ]); }; From 57664673595086f917a268b273b90bb8af2d2c8d Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Tue, 21 Jan 2025 13:22:16 +0100 Subject: [PATCH 029/148] [React@18] Fix remaining unit tests (#207195) --- .../pages/trusted_apps/view/trusted_apps_list.test.tsx | 5 +++-- .../components/modal/actions/open_timeline_button.test.tsx | 3 ++- .../components/open_timeline/use_timeline_types.tsx | 7 +------ 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.test.tsx index c3f6185701f13..80e3998e191c7 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.test.tsx @@ -61,9 +61,10 @@ describe('When on the trusted applications page', () => { it('should search using expected exception item fields', async () => { const expectedFilterString = parseQueryFilterToKQL('fooFooFoo', SEARCHABLE_FIELDS); - const { findAllByTestId } = render(); + const { getAllByTestId } = render(); + await waitFor(async () => { - await expect(findAllByTestId('trustedAppsListPage-card')).resolves.toHaveLength(10); + expect(getAllByTestId('trustedAppsListPage-card')).toHaveLength(10); }); apiMocks.responseProvider.exceptionsFind.mockClear(); diff --git a/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.test.tsx index ffa8f0b1bb0b0..9ce4e70ce2edd 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.test.tsx @@ -20,9 +20,10 @@ jest.mock('../../../../sourcerer/containers'); jest.mock('../../open_timeline/use_timeline_status'); jest.mock('react-redux', () => { const origin = jest.requireActual('react-redux'); + const mockDispatch = jest.fn(); return { ...origin, - useDispatch: jest.fn(), + useDispatch: jest.fn(() => mockDispatch), }; }); jest.mock('react-router-dom', () => { diff --git a/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.tsx index e6ad5ad0e1f11..ff7e0d0e734a7 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.tsx @@ -88,12 +88,7 @@ export const useTimelineTypes = ({ const onFilterClicked = useCallback( (tabId: TimelineType, tabStyle: TimelineTabsStyle) => { - setTimelineTypes((prevTimelineTypes) => { - if (prevTimelineTypes !== tabId) { - setTimelineTypes(tabId); - } - return prevTimelineTypes; - }); + setTimelineTypes(tabId); }, [setTimelineTypes] ); From 39bf5e646fcaf31702dfe9fb17942d5aaea528ab Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Tue, 21 Jan 2025 13:50:07 +0100 Subject: [PATCH 030/148] =?UTF-8?q?[Streams=20=F0=9F=8C=8A]=20Update=20sim?= =?UTF-8?q?ulator=20to=20assert=20fields=20&=20integration=20testing=20(#2?= =?UTF-8?q?06950)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 📓 Summary Closes https://github.com/elastic/streams-program/issues/68 This work updates the way a simulation for processing is performed, working against the `_ingest/_simulate` API. This gives less specific feedback on the simulation failure (which processor failed), but allows for a much more realistic simulation against the index configuration. This work also adds integration testing for this API. ## 📔 Reviewer notes The API is poorly typed due to missing typing in the elasticsearch-js library. #204175 updates the library with those typings, as soon as it's merged I'll update the API. ## 🎥 Recordings https://github.com/user-attachments/assets/36ce0d3c-b7de-44d2-bdc2-84ff67fb4b25 --- .../errors/detected_mapping_failure.ts | 13 + .../server/routes/streams/processing/route.ts | 250 ++++++++++++------ .../stream_detail_enrichment/flyout/index.tsx | 2 +- .../flyout/processor_outcome_preview.tsx | 13 +- .../hooks/use_processing_simulator.ts | 21 +- .../apis/observability/streams/index.ts | 1 + .../streams/processing_simulate.ts | 239 +++++++++++++++++ 7 files changed, 455 insertions(+), 84 deletions(-) create mode 100644 x-pack/solutions/observability/plugins/streams/server/lib/streams/errors/detected_mapping_failure.ts create mode 100644 x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/processing_simulate.ts diff --git a/x-pack/solutions/observability/plugins/streams/server/lib/streams/errors/detected_mapping_failure.ts b/x-pack/solutions/observability/plugins/streams/server/lib/streams/errors/detected_mapping_failure.ts new file mode 100644 index 0000000000000..b026b150b64e8 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams/server/lib/streams/errors/detected_mapping_failure.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. + */ + +export class DetectedMappingFailure extends Error { + constructor(message: string) { + super(message); + this.name = 'DetectedMappingFailure'; + } +} diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/processing/route.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/processing/route.ts index 897c6f02ec804..af65843ff4aac 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/processing/route.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/processing/route.ts @@ -5,15 +5,19 @@ * 2.0. */ +/* eslint-disable @typescript-eslint/naming-convention */ + import { z } from '@kbn/zod'; import { notFound, internal, badRequest } from '@hapi/boom'; -import { FieldDefinitionConfig, processingDefinitionSchema } from '@kbn/streams-schema'; -import { calculateObjectDiff, flattenObject } from '@kbn/object-utils'; import { - IngestSimulateResponse, - IngestSimulateSimulateDocumentResult, -} from '@elastic/elasticsearch/lib/api/types'; + FieldDefinitionConfig, + fieldDefinitionConfigSchema, + processingDefinitionSchema, +} from '@kbn/streams-schema'; +import { calculateObjectDiff, flattenObject } from '@kbn/object-utils'; import { isEmpty } from 'lodash'; +import { IScopedClusterClient } from '@kbn/core/server'; +import { DetectedMappingFailure } from '../../../lib/streams/errors/detected_mapping_failure'; import { NonAdditiveProcessor } from '../../../lib/streams/errors/non_additive_processor'; import { SimulationFailed } from '../../../lib/streams/errors/simulation_failed'; import { formatToIngestProcessors } from '../../../lib/streams/helpers/processing'; @@ -21,6 +25,17 @@ import { createServerRoute } from '../../create_server_route'; import { DefinitionNotFound } from '../../../lib/streams/errors'; import { checkAccess } from '../../../lib/streams/stream_crud'; +const paramsSchema = z.object({ + path: z.object({ id: z.string() }), + body: z.object({ + processing: z.array(processingDefinitionSchema), + documents: z.array(z.record(z.unknown())), + detected_fields: z.array(fieldDefinitionConfigSchema.extend({ name: z.string() })).optional(), + }), +}); + +type ProcessingSimulateParams = z.infer; + export const simulateProcessorRoute = createServerRoute({ endpoint: 'POST /api/streams/{id}/processing/_simulate', options: { @@ -33,82 +48,153 @@ export const simulateProcessorRoute = createServerRoute({ 'This API delegates security to the currently logged in user and their Elasticsearch permissions.', }, }, - params: z.object({ - path: z.object({ id: z.string() }), - body: z.object({ - processing: z.array(processingDefinitionSchema), - documents: z.array(z.record(z.unknown())), - }), - }), - handler: async ({ params, request, response, getScopedClients }) => { + params: paramsSchema, + handler: async ({ params, request, getScopedClients }) => { try { const { scopedClusterClient } = await getScopedClients({ request }); - const hasAccess = await checkAccess({ id: params.path.id, scopedClusterClient }); - if (!hasAccess) { + const { read } = await checkAccess({ id: params.path.id, scopedClusterClient }); + if (!read) { throw new DefinitionNotFound(`Stream definition for ${params.path.id} not found.`); } - // Normalize processing definition to pipeline processors - const processors = formatToIngestProcessors(params.body.processing); - // Convert input documents to ingest simulation format - const docs = params.body.documents.map((doc) => ({ _source: doc })); - - let simulationResult: IngestSimulateResponse; - try { - simulationResult = await scopedClusterClient.asCurrentUser.ingest.simulate({ - verbose: true, - pipeline: { processors }, - docs, - }); - } catch (error) { - throw new SimulationFailed(error); - } - const simulationDiffs = computeSimulationDiffs(simulationResult, docs); + const simulationBody = prepareSimulationBody(params); - const updatedFields = computeUpdatedFields(simulationDiffs); - if (!isEmpty(updatedFields)) { - throw new NonAdditiveProcessor( - `The processor is not additive to the documents. It might update fields [${updatedFields.join()}]` - ); - } + const simulationResult = await executeSimulation(scopedClusterClient, simulationBody); - const documents = computeSimulationDocuments(simulationResult, docs); - const detectedFields = computeDetectedFields(simulationDiffs); - const successRate = computeSuccessRate(simulationResult); - const failureRate = 1 - successRate; + const simulationDiffs = prepareSimulationDiffs(simulationResult, simulationBody.docs); - return { - documents, - success_rate: parseFloat(successRate.toFixed(2)), - failure_rate: parseFloat(failureRate.toFixed(2)), - detected_fields: detectedFields, - }; + assertSimulationResult(simulationResult, simulationDiffs); + + return prepareSimulationResponse( + simulationResult, + simulationBody.docs, + simulationDiffs, + params.body.detected_fields + ); } catch (error) { if (error instanceof DefinitionNotFound) { throw notFound(error); } - - if (error instanceof SimulationFailed || error instanceof NonAdditiveProcessor) { + if ( + error instanceof SimulationFailed || + error instanceof NonAdditiveProcessor || + error instanceof DetectedMappingFailure + ) { throw badRequest(error); } - throw internal(error); } }, }); -const computeSimulationDiffs = ( - simulation: IngestSimulateResponse, +const prepareSimulationBody = (params: ProcessingSimulateParams) => { + const { path, body } = params; + const { processing, documents, detected_fields } = body; + + const processors = formatToIngestProcessors(processing); + const docs = documents.map((doc, id) => ({ + _index: path.id, + _id: id.toString(), + _source: doc, + })); + + const simulationBody: any = { + docs, + pipeline_substitutions: { + [`${path.id}@stream.processing`]: { + processors, + }, + }, + }; + + if (detected_fields) { + const properties = computeMappingProperties(detected_fields); + simulationBody.component_template_substitutions = { + [`${path.id}@stream.layer`]: { + template: { + mappings: { + properties, + }, + }, + }, + }; + } + + return simulationBody; +}; + +// TODO: update type once Kibana updates to elasticsearch-js 8.17 +const executeSimulation = async ( + scopedClusterClient: IScopedClusterClient, + simulationBody: ReturnType +): Promise => { + try { + // TODO: We should be using scopedClusterClient.asCurrentUser.simulate.ingest() once Kibana updates to elasticsearch-js 8.17 + return await scopedClusterClient.asCurrentUser.transport.request({ + method: 'POST', + path: `_ingest/_simulate`, + body: simulationBody, + }); + } catch (error) { + throw new SimulationFailed(error); + } +}; + +const assertSimulationResult = ( + simulationResult: Awaited>, + simulationDiffs: ReturnType +) => { + // Assert mappings are compatible with the documents + const entryWithError = simulationResult.docs.find(isMappingFailure); + if (entryWithError) { + throw new DetectedMappingFailure( + `The detected field types might not be compatible with these documents. ${entryWithError.doc.error.reason}` + ); + } + // Assert that the processors are purely additive to the documents + const updatedFields = computeUpdatedFields(simulationDiffs); + if (!isEmpty(updatedFields)) { + throw new NonAdditiveProcessor( + `The processor is not additive to the documents. It might update fields [${updatedFields.join()}]` + ); + } +}; + +const prepareSimulationResponse = ( + simulationResult: any, + docs: Array<{ _source: Record }>, + simulationDiffs: ReturnType, + detectedFields?: ProcessingSimulateParams['body']['detected_fields'] +) => { + const confirmedValidDetectedFields = computeMappingProperties(detectedFields ?? []); + const documents = computeSimulationDocuments(simulationResult, docs); + const detectedFieldsResult = computeDetectedFields(simulationDiffs, confirmedValidDetectedFields); + const successRate = computeSuccessRate(simulationResult); + const failureRate = 1 - successRate; + + return { + documents, + success_rate: parseFloat(successRate.toFixed(2)), + failure_rate: parseFloat(failureRate.toFixed(2)), + detected_fields: detectedFieldsResult, + }; +}; + +// TODO: update type once Kibana updates to elasticsearch-js 8.17 +const prepareSimulationDiffs = ( + simulation: any, sampleDocs: Array<{ _source: Record }> ) => { // Since we filter out failed documents, we need to map the simulation docs to the sample docs for later retrieval - const samplesToSimulationMap = new Map(simulation.docs.map((doc, id) => [doc, sampleDocs[id]])); + const samplesToSimulationMap = new Map }>( + simulation.docs.map((entry: any, id: number) => [entry.doc, sampleDocs[id]]) + ); - const diffs = simulation.docs.filter(isSuccessfulDocument).map((doc) => { - const sample = samplesToSimulationMap.get(doc); + const diffs = simulation.docs.filter(isSuccessfulDocument).map((entry: any) => { + const sample = samplesToSimulationMap.get(entry.doc); if (sample) { - return calculateObjectDiff(sample._source, doc.processor_results.at(-1)?.doc?._source); + return calculateObjectDiff(sample._source, entry.doc._source); } return calculateObjectDiff({}); @@ -117,9 +203,10 @@ const computeSimulationDiffs = ( return diffs; }; -const computeUpdatedFields = (simulationDiff: ReturnType) => { +// TODO: update type once Kibana updates to elasticsearch-js 8.17 +const computeUpdatedFields = (simulationDiff: ReturnType) => { const diffs = simulationDiff - .map((simulatedDoc) => flattenObject(simulatedDoc.updated)) + .map((simulatedDoc: any) => flattenObject(simulatedDoc.updated)) .flatMap(Object.keys); const uniqueFields = [...new Set(diffs)]; @@ -127,15 +214,16 @@ const computeUpdatedFields = (simulationDiff: ReturnType }> -) => { - return simulation.docs.map((doc, id) => { +): Array<{ isMatch: boolean; value: Record }> => { + return simulation.docs.map((entry: any, id: number) => { // If every processor was successful, return and flatten the simulation doc from the last processor - if (isSuccessfulDocument(doc)) { + if (isSuccessfulDocument(entry)) { return { - value: flattenObject(doc.processor_results.at(-1)?.doc?._source ?? sampleDocs[id]._source), + value: flattenObject(entry.doc._source ?? sampleDocs[id]._source), isMatch: true, }; } @@ -148,32 +236,44 @@ const computeSimulationDocuments = ( }; const computeDetectedFields = ( - simulationDiff: ReturnType + simulationDiff: ReturnType, + confirmedValidDetectedFields: Record ): Array<{ name: string; type: FieldDefinitionConfig['type'] | 'unmapped'; }> => { - const diffs = simulationDiff - .map((simulatedDoc) => flattenObject(simulatedDoc.added)) + const diffs: string[] = simulationDiff + .map((simulatedDoc: any) => flattenObject(simulatedDoc.added)) .flatMap(Object.keys); const uniqueFields = [...new Set(diffs)]; - return uniqueFields.map((name) => ({ name, type: 'unmapped' })); + return uniqueFields.map((name: string) => ({ + name, + type: confirmedValidDetectedFields[name]?.type || 'unmapped', + })); }; -const computeSuccessRate = (simulation: IngestSimulateResponse) => { - const successfulCount = simulation.docs.reduce((rate, doc) => { - return (rate += isSuccessfulDocument(doc) ? 1 : 0); +// TODO: update type once Kibana updates to elasticsearch-js 8.17 +const computeSuccessRate = (simulation: any) => { + const successfulCount = simulation.docs.reduce((rate: number, entry: any) => { + return (rate += isSuccessfulDocument(entry) ? 1 : 0); }, 0); + return successfulCount / simulation.docs.length; }; -const isSuccessfulDocument = ( - doc: IngestSimulateSimulateDocumentResult -): doc is Required => - doc.processor_results?.every((processorSimulation) => processorSimulation.status === 'success') || - false; +const computeMappingProperties = ( + detectedFields: NonNullable +) => { + return Object.fromEntries(detectedFields.map(({ name, type }) => [name, { type }])); +}; + +// TODO: update type once Kibana updates to elasticsearch-js 8.17 +const isSuccessfulDocument = (entry: any) => entry.doc.error === undefined; +// TODO: update type once Kibana updates to elasticsearch-js 8.17 +const isMappingFailure = (entry: any) => + !isSuccessfulDocument(entry) && entry.doc.error.type === 'document_parsing_exception'; export const processingRoutes = { ...simulateProcessorRoute, diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/index.tsx index bd04e2cbf959e..27624933559b2 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/index.tsx @@ -68,7 +68,7 @@ export function AddProcessorFlyout({ const handleSubmit: SubmitHandler = async (data) => { const processingDefinition = convertFormStateToProcessing(data); - simulate(processingDefinition).then((responseBody) => { + simulate(processingDefinition, data.detected_fields).then((responseBody) => { if (responseBody instanceof Error) return; onAddProcessor(processingDefinition, data.detected_fields); diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_outcome_preview.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_outcome_preview.tsx index 47a08264b70ab..499802117bc80 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_outcome_preview.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_outcome_preview.tsx @@ -109,7 +109,8 @@ export const ProcessorOutcomePreview = ({ }, [formFields.field, detectedFieldsColumns, selectedDocsFilter]); const detectedFieldsEnabled = - isWiredReadStream(definition) && simulation && !isEmpty(simulation.detected_fields); + isWiredReadStream(definition) && + ((simulation && !isEmpty(simulation.detected_fields)) || !isEmpty(formFields.detected_fields)); return ( @@ -126,7 +127,9 @@ export const ProcessorOutcomePreview = ({ iconType="play" color="accentSecondary" size="s" - onClick={() => onSimulate(convertFormStateToProcessing(formFields))} + onClick={() => { + onSimulate(convertFormStateToProcessing(formFields), formFields.detected_fields); + }} isLoading={isLoading} > {i18n.translate( @@ -136,7 +139,7 @@ export const ProcessorOutcomePreview = ({ - {detectedFieldsEnabled && } + {detectedFieldsEnabled && } { +const DetectedFields = ({ detectedFields }: { detectedFields?: DetectedField[] }) => { const { euiTheme } = useEuiTheme(); const { fields, replace } = useFieldArray<{ detected_fields: DetectedField[] }>({ name: 'detected_fields', }); useEffect(() => { - replace(detectedFields); + if (detectedFields) replace(detectedFields); }, [detectedFields, replace]); return ( diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_processing_simulator.ts b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_processing_simulator.ts index 1ff63fbc484e6..bf0ce34c1ac0f 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_processing_simulator.ts +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_processing_simulator.ts @@ -5,23 +5,31 @@ * 2.0. */ +/* eslint-disable @typescript-eslint/naming-convention */ + import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; import { ReadStreamDefinition, ProcessingDefinition, Condition } from '@kbn/streams-schema'; import useAsyncFn from 'react-use/lib/useAsyncFn'; import { IHttpFetchError, ResponseErrorBody } from '@kbn/core/public'; import { useDateRange } from '@kbn/observability-utils-browser/hooks/use_date_range'; -import { APIReturnType } from '@kbn/streams-plugin/public/api'; +import { APIReturnType, StreamsAPIClientRequestParamsOf } from '@kbn/streams-plugin/public/api'; import { useStreamsAppFetch } from '../../../hooks/use_streams_app_fetch'; import { useKibana } from '../../../hooks/use_kibana'; +import { DetectedField } from '../types'; type Simulation = APIReturnType<'POST /api/streams/{id}/processing/_simulate'>; +type SimulationRequestBody = + StreamsAPIClientRequestParamsOf<'POST /api/streams/{id}/processing/_simulate'>['params']['body']; export interface UseProcessingSimulatorReturnType { error?: IHttpFetchError; isLoading: boolean; refreshSamples: () => void; samples: Array>; - simulate: (processing: ProcessingDefinition) => Promise; + simulate: ( + processing: ProcessingDefinition, + detectedFields?: DetectedField[] + ) => Promise; simulation?: Simulation | null; } @@ -76,11 +84,17 @@ export const useProcessingSimulator = ({ const sampleDocs = (samples?.documents ?? []) as Array>; const [{ loading: isLoadingSimulation, error, value }, simulate] = useAsyncFn( - (processingDefinition: ProcessingDefinition) => { + (processingDefinition: ProcessingDefinition, detectedFields?: DetectedField[]) => { if (!definition) { return Promise.resolve(null); } + const detected_fields = detectedFields + ? (detectedFields.filter( + (field) => field.type !== 'unmapped' + ) as SimulationRequestBody['detected_fields']) + : undefined; + return streamsRepositoryClient.fetch('POST /api/streams/{id}/processing/_simulate', { signal: abortController.signal, params: { @@ -88,6 +102,7 @@ export const useProcessingSimulator = ({ body: { documents: sampleDocs, processing: [processingDefinition], + detected_fields, }, }, }); diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/index.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/index.ts index 4f7f2295d1584..5f685bad1684b 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/index.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/index.ts @@ -15,6 +15,7 @@ export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) loadTestFile(require.resolve('./flush_config')); loadTestFile(require.resolve('./assets/dashboard')); loadTestFile(require.resolve('./schema')); + loadTestFile(require.resolve('./processing_simulate')); loadTestFile(require.resolve('./root_stream')); }); } diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/processing_simulate.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/processing_simulate.ts new file mode 100644 index 0000000000000..f2afc4f9b9bb4 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/processing_simulate.ts @@ -0,0 +1,239 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { ClientRequestParamsOf } from '@kbn/server-route-repository-utils'; +import { StreamsRouteRepository } from '@kbn/streams-plugin/server'; +import { errors } from '@elastic/elasticsearch'; +import { disableStreams, enableStreams, forkStream, indexDocument } from './helpers/requests'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { + StreamsSupertestRepositoryClient, + createStreamsRepositoryAdminClient, +} from './helpers/repository_client'; + +async function simulateProcessingForStream( + client: StreamsSupertestRepositoryClient, + id: string, + body: ClientRequestParamsOf< + StreamsRouteRepository, + 'POST /api/streams/{id}/processing/_simulate' + >['params']['body'], + statusCode = 200 +) { + return client + .fetch('POST /api/streams/{id}/processing/_simulate', { + params: { + path: { id }, + body, + }, + }) + .expect(statusCode); +} + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + const roleScopedSupertest = getService('roleScopedSupertest'); + const esClient = getService('es'); + + let apiClient: StreamsSupertestRepositoryClient; + + describe('Processing Simulation', () => { + const TEST_TIMESTAMP = '2025-01-01T00:00:10.000Z'; + const TEST_MESSAGE = `${TEST_TIMESTAMP} error test`; + const TEST_HOST = 'test-host'; + + const testDoc = { + '@timestamp': TEST_TIMESTAMP, + message: TEST_MESSAGE, + 'host.name': TEST_HOST, + 'log.level': 'error', + }; + + const basicGrokProcessor = { + config: { + grok: { + field: 'message', + patterns: [ + '%{TIMESTAMP_ISO8601:parsed_timestamp} %{LOGLEVEL:parsed_level} %{GREEDYDATA:parsed_message}', + ], + }, + }, + }; + + const createTestDocument = (message = TEST_MESSAGE) => ({ + '@timestamp': TEST_TIMESTAMP, + message, + }); + + before(async () => { + apiClient = await createStreamsRepositoryAdminClient(roleScopedSupertest); + + await enableStreams(apiClient); + + // Create a test document + await indexDocument(esClient, 'logs', testDoc); + + // Create a forked stream for testing + await forkStream(apiClient, 'logs', { + stream: { + name: 'logs.test', + }, + condition: { + field: 'host.name', + operator: 'eq' as const, + value: TEST_HOST, + }, + }); + }); + + after(async () => { + await disableStreams(apiClient); + }); + + describe('Successful simulations', () => { + describe('with valid documents', () => { + it('should simulate additive processing', async () => { + const response = await simulateProcessingForStream(apiClient, 'logs.test', { + processing: [basicGrokProcessor], + documents: [createTestDocument()], + }); + + expect(response.body.success_rate).to.be(1); + expect(response.body.failure_rate).to.be(0); + + const { isMatch, value } = response.body.documents[0]; + expect(isMatch).to.be(true); + expect(value).to.have.property('parsed_timestamp', TEST_TIMESTAMP); + expect(value).to.have.property('parsed_level', 'error'); + expect(value).to.have.property('parsed_message', 'test'); + }); + + it('should simulate with detected fields', async () => { + const response = await simulateProcessingForStream(apiClient, 'logs.test', { + processing: [basicGrokProcessor], + documents: [createTestDocument()], + detected_fields: [ + { name: 'parsed_timestamp', type: 'date' }, + { name: 'parsed_level', type: 'keyword' }, + ], + }); + + const findField = (name: string) => + response.body.detected_fields.find((f: { name: string }) => f.name === name); + + expect(response.body.detected_fields).to.have.length(3); // Including parsed_message + expect(findField('parsed_timestamp')).to.have.property('type', 'date'); + expect(findField('parsed_level')).to.have.property('type', 'keyword'); + }); + }); + + describe('with mixed success/failure documents', () => { + it('should provide accurate success/failure rates', async () => { + const response = await simulateProcessingForStream(apiClient, 'logs.test', { + processing: [basicGrokProcessor], + documents: [ + createTestDocument(), + createTestDocument('invalid format'), + createTestDocument(`${TEST_TIMESTAMP} info test`), + ], + }); + + expect(response.body.success_rate).to.be(0.67); + expect(response.body.failure_rate).to.be(0.33); + expect(response.body.documents).to.have.length(3); + expect(response.body.documents[0].isMatch).to.be(true); + expect(response.body.documents[1].isMatch).to.be(false); + expect(response.body.documents[2].isMatch).to.be(true); + }); + }); + }); + + describe('Failed simulations', () => { + it('should fail with invalid processor configurations', async () => { + await simulateProcessingForStream( + apiClient, + 'logs.test', + { + processing: [ + { + config: { + grok: { + field: 'message', + patterns: ['%{INVALID_PATTERN:field}'], + }, + }, + }, + ], + documents: [createTestDocument('test message')], + }, + 400 + ); + }); + + it('should fail when attempting to update existing fields', async () => { + const response = await simulateProcessingForStream( + apiClient, + 'logs.test', + { + processing: [ + { + config: { + grok: { + field: 'message', + patterns: ['%{TIMESTAMP_ISO8601:parsed_timestamp} %{GREEDYDATA:message}'], // Overwrites existing message field + }, + }, + }, + ], + documents: [createTestDocument(`${TEST_TIMESTAMP} original message`)], + }, + 400 + ); + + expect((response.body as errors.ResponseError['body']).message).to.contain( + 'The processor is not additive to the documents. It might update fields [message]' + ); + }); + + it('should fail with incompatible detected field mappings', async () => { + const response = await simulateProcessingForStream( + apiClient, + 'logs.test', + { + processing: [basicGrokProcessor], + documents: [createTestDocument()], + detected_fields: [ + { name: 'parsed_timestamp', type: 'boolean' }, // Incompatible type + ], + }, + 400 + ); + + expect((response.body as errors.ResponseError['body']).message).to.contain( + 'The detected field types might not be compatible with these documents.' + ); + }); + }); + + describe('Partial success simulations', () => { + it('should handle mixed success/failure documents', async () => { + const response = await simulateProcessingForStream(apiClient, 'logs.test', { + processing: [basicGrokProcessor], + documents: [ + createTestDocument(), // Will succeed + createTestDocument('invalid format'), // Will fail + ], + }); + + expect(response.body.success_rate).to.be(0.5); + expect(response.body.failure_rate).to.be(0.5); + expect(response.body.documents[0].isMatch).to.be(true); + expect(response.body.documents[1].isMatch).to.be(false); + }); + }); + }); +} From 671731ce3f596d808c4733d979e62a933327b30c Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Tue, 21 Jan 2025 13:55:20 +0100 Subject: [PATCH 031/148] =?UTF-8?q?[Streams=20=F0=9F=8C=8A]=20Fix=20=5Fsam?= =?UTF-8?q?ple=20API=20condition=20param=20and=20missing=20typing=20on=20p?= =?UTF-8?q?rocessor=20forms=20(#207213)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 📓 Summary Address a reference error on the optional `condition` parameter for the `_sample` API and add explicit typing to processor forms' controls. --- .../server/routes/streams/management/route.ts | 28 +++++++++++-------- .../dissect/dissect_pattern_definition.tsx | 3 +- .../flyout/grok/grok_pattern_definition.tsx | 5 +++- .../flyout/grok/grok_patterns_editor.tsx | 5 +++- .../flyout/processor_condition_editor.tsx | 3 +- .../flyout/processor_field_selector.tsx | 3 +- .../flyout/processor_outcome_preview.tsx | 12 ++++---- .../flyout/processor_type_selector.tsx | 16 ++++++++--- .../flyout/toggle_field.tsx | 15 ++++++++-- .../hooks/use_processing_simulator.ts | 2 +- .../stream_detail_routing/index.tsx | 2 +- 11 files changed, 63 insertions(+), 31 deletions(-) diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/management/route.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/management/route.ts index cc3ce94536261..4a10c80ed10ad 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/management/route.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/management/route.ts @@ -135,7 +135,7 @@ export const sampleStreamRoute = createServerRoute({ condition: z.optional(conditionSchema), start: z.optional(z.number()), end: z.optional(z.number()), - number: z.optional(z.number()), + size: z.optional(z.number()), }), }), handler: async ({ params, request, getScopedClients }): Promise<{ documents: unknown[] }> => { @@ -146,18 +146,20 @@ export const sampleStreamRoute = createServerRoute({ if (!read) { throw new DefinitionNotFound(`Stream definition for ${params.path.id} not found.`); } + + const { condition, start, end, size } = params.body; const searchBody = { query: { bool: { must: [ - isCompleteCondition(params.body.condition) - ? conditionToQueryDsl(params.body.condition) + Boolean(condition && isCompleteCondition(condition)) + ? conditionToQueryDsl(condition) : { match_all: {} }, { range: { '@timestamp': { - gte: params.body.start, - lte: params.body.end, + gte: start, + lte: end, format: 'epoch_millis', }, }, @@ -170,12 +172,14 @@ export const sampleStreamRoute = createServerRoute({ // ingest in the painless condition checks. // This is less efficient than it could be - in some cases, these fields _are_ indexed with the right type and we could use them directly. // This can be optimized in the future. - runtime_mappings: Object.fromEntries( - getFields(params.body.condition).map((field) => [ - field.name, - { type: field.type === 'string' ? 'keyword' : 'double' }, - ]) - ), + runtime_mappings: condition + ? Object.fromEntries( + getFields(condition).map((field) => [ + field.name, + { type: field.type === 'string' ? 'keyword' : 'double' }, + ]) + ) + : undefined, sort: [ { '@timestamp': { @@ -183,7 +187,7 @@ export const sampleStreamRoute = createServerRoute({ }, }, ], - size: params.body.number, + size, }; const results = await scopedClusterClient.asCurrentUser.search({ index: params.path.id, diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/dissect/dissect_pattern_definition.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/dissect/dissect_pattern_definition.tsx index 80d9245c61971..cb4e3559e480a 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/dissect/dissect_pattern_definition.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/dissect/dissect_pattern_definition.tsx @@ -12,12 +12,13 @@ import { CodeEditor } from '@kbn/code-editor'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { useKibana } from '../../../../hooks/use_kibana'; +import { ProcessorFormState } from '../../types'; export const DissectPatternDefinition = () => { const { core } = useKibana(); const esDocUrl = core.docLinks.links.ingest.dissectKeyModifiers; - const { field, fieldState } = useController({ + const { field, fieldState } = useController({ name: 'pattern', rules: { required: i18n.translate( diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/grok/grok_pattern_definition.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/grok/grok_pattern_definition.tsx index 1cfa43a904867..b0a9bd50b95eb 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/grok/grok_pattern_definition.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/grok/grok_pattern_definition.tsx @@ -10,9 +10,12 @@ import { useController } from 'react-hook-form'; import { EuiFormRow } from '@elastic/eui'; import { CodeEditor } from '@kbn/code-editor'; import { i18n } from '@kbn/i18n'; +import { ProcessorFormState } from '../../types'; export const GrokPatternDefinition = () => { - const { field, fieldState } = useController({ name: 'pattern_definitions' }); + const { field, fieldState } = useController({ + name: 'pattern_definitions', + }); return ( diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_condition_editor.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_condition_editor.tsx index 51a57bf6b14df..eca584d8d2e71 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_condition_editor.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_condition_editor.tsx @@ -8,9 +8,10 @@ import React from 'react'; import { useController } from 'react-hook-form'; import { ConditionEditor } from '../../condition_editor'; +import { ProcessorFormState } from '../types'; export const ProcessorConditionEditor = () => { - const { field } = useController({ name: 'condition' }); + const { field } = useController({ name: 'condition' }); return ; }; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_field_selector.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_field_selector.tsx index 3fb52254f5d45..4486fdfa84700 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_field_selector.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_field_selector.tsx @@ -9,9 +9,10 @@ import { EuiFormRow, EuiFieldText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; import { useController } from 'react-hook-form'; +import { ProcessorFormState } from '../types'; export const ProcessorFieldSelector = () => { - const { field, fieldState } = useController({ + const { field, fieldState } = useController({ name: 'field', rules: { required: i18n.translate( diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_outcome_preview.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_outcome_preview.tsx index 499802117bc80..167675bead535 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_outcome_preview.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/processor_outcome_preview.tsx @@ -31,7 +31,7 @@ import { ReadStreamDefinition, isWiredReadStream, } from '@kbn/streams-schema'; -import { useController, useFieldArray } from 'react-hook-form'; +import { UseControllerProps, useController, useFieldArray } from 'react-hook-form'; import { css } from '@emotion/react'; import { flattenObject } from '@kbn/object-utils'; import { IHttpFetchError, ResponseErrorBody } from '@kbn/core/public'; @@ -290,17 +290,19 @@ const DetectedFields = ({ detectedFields }: { detectedFields?: DetectedField[] } > {fields.map((field, id) => ( - + ))} ); }; -const DetectedFieldSelector = ({ selectorId }: { selectorId: string }) => { - const { field } = useController({ name: selectorId }); +const DetectedFieldSelector = ( + props: UseControllerProps +) => { + const { field } = useController(props); - const options = useMemo(() => getDetectedFieldSelectOptions(field.value), [field]); + const options = useMemo(() => getDetectedFieldSelectOptions(field.value), [field.value]); return ( ({ + name: 'type', + rules: { required: true }, + }); const processorType = useWatch<{ type: ProcessorType }>({ name: 'type' }); @@ -74,7 +78,9 @@ const availableProcessors: TAvailableProcessors = { values={{ dissectLink: ( - dissect + {i18n.translate('xpack.streams.availableProcessors.dissectLinkLabel', { + defaultMessage: 'dissect', + })} ), }} @@ -91,7 +97,9 @@ const availableProcessors: TAvailableProcessors = { values={{ grokLink: ( - grok + {i18n.translate('xpack.streams.availableProcessors.grokLinkLabel', { + defaultMessage: 'grok', + })} ), }} diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/toggle_field.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/toggle_field.tsx index 47b38ff0dbcef..f5e70267b7ff9 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/toggle_field.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/flyout/toggle_field.tsx @@ -8,12 +8,19 @@ import React from 'react'; import { useController } from 'react-hook-form'; import { EuiFormRow, EuiFormRowProps, EuiSwitch, htmlIdGenerator } from '@elastic/eui'; +import { ProcessorFormState } from '../types'; + +type ExtractBooleanFields = NonNullable< + { + [K in keyof TInput]: boolean extends TInput[K] ? K : never; + }[keyof TInput] +>; interface ToggleFieldProps { helpText?: EuiFormRowProps['helpText']; id?: string; label: string; - name: string; + name: ExtractBooleanFields; } export const ToggleField = ({ @@ -23,14 +30,16 @@ export const ToggleField = ({ name, ...rest }: ToggleFieldProps) => { - const { field } = useController({ name }); + const { field } = useController({ + name, + }); return ( field.onChange(e.target.checked)} /> diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_processing_simulator.ts b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_processing_simulator.ts index bf0ce34c1ac0f..270984feec219 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_processing_simulator.ts +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_processing_simulator.ts @@ -72,7 +72,7 @@ export const useProcessingSimulator = ({ condition, start: start?.valueOf(), end: end?.valueOf(), - number: 100, + size: 100, }, }, }); diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx index 094811795ac4e..74c650c93728f 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx @@ -507,7 +507,7 @@ function PreviewPanel({ condition: routingAppState.debouncedChildUnderEdit.child.condition, start: start?.valueOf(), end: end?.valueOf(), - number: 100, + size: 100, }, }, }); From 26f4900bf067378d411d8607e2f93f85b141b295 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 21 Jan 2025 08:10:56 -0500 Subject: [PATCH 032/148] [Fleet] Fix APM to support space aware Fleet (#206964) --- oas_docs/bundle.json | 4 ++- oas_docs/bundle.serverless.json | 4 ++- oas_docs/output/kibana.serverless.yaml | 2 ++ oas_docs/output/kibana.yaml | 2 ++ .../fleet/server/types/models/agent_policy.ts | 1 + .../get_internal_saved_objects_client.ts | 25 ++++++++++++++-- .../plugins/apm/server/plugin.ts | 1 + .../add_api_keys_to_policies_if_missing.ts | 30 +++++++++++++++++-- .../routes/fleet/get_apm_package_policies.ts | 2 +- .../fleet/register_fleet_policy_callbacks.ts | 3 +- .../observability/plugins/apm/tsconfig.json | 3 +- 11 files changed, 67 insertions(+), 10 deletions(-) diff --git a/oas_docs/bundle.json b/oas_docs/bundle.json index 2d3dbb69b310c..c72e872084b0f 100644 --- a/oas_docs/bundle.json +++ b/oas_docs/bundle.json @@ -15170,6 +15170,7 @@ "monitoring": { "additionalProperties": false, "properties": { + "apm": {}, "enabled": { "type": "boolean" }, @@ -15193,7 +15194,8 @@ "enabled", "metrics", "logs", - "traces" + "traces", + "apm" ], "type": "object" }, diff --git a/oas_docs/bundle.serverless.json b/oas_docs/bundle.serverless.json index 993809f81209c..a1055afca8265 100644 --- a/oas_docs/bundle.serverless.json +++ b/oas_docs/bundle.serverless.json @@ -15170,6 +15170,7 @@ "monitoring": { "additionalProperties": false, "properties": { + "apm": {}, "enabled": { "type": "boolean" }, @@ -15193,7 +15194,8 @@ "enabled", "metrics", "logs", - "traces" + "traces", + "apm" ], "type": "object" }, diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index 9bc95e9034e6f..4d574192cb676 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -16780,6 +16780,7 @@ paths: additionalProperties: false type: object properties: + apm: {} enabled: type: boolean logs: @@ -16797,6 +16798,7 @@ paths: - metrics - logs - traces + - apm protection: additionalProperties: false type: object diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index 0817106e13b41..98319048fac28 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -18914,6 +18914,7 @@ paths: additionalProperties: false type: object properties: + apm: {} enabled: type: boolean logs: @@ -18931,6 +18932,7 @@ paths: - metrics - logs - traces + - apm protection: additionalProperties: false type: object diff --git a/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts index f228fc91665ae..c6e82b5395f06 100644 --- a/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts @@ -409,6 +409,7 @@ export const FullAgentPolicyResponseSchema = schema.object({ metrics: schema.boolean(), logs: schema.boolean(), traces: schema.boolean(), + apm: schema.maybe(schema.any()), }), download: schema.object({ sourceURI: schema.string(), diff --git a/x-pack/solutions/observability/plugins/apm/server/lib/helpers/get_internal_saved_objects_client.ts b/x-pack/solutions/observability/plugins/apm/server/lib/helpers/get_internal_saved_objects_client.ts index 9566fb9895928..714ecd310ecd3 100644 --- a/x-pack/solutions/observability/plugins/apm/server/lib/helpers/get_internal_saved_objects_client.ts +++ b/x-pack/solutions/observability/plugins/apm/server/lib/helpers/get_internal_saved_objects_client.ts @@ -5,8 +5,29 @@ * 2.0. */ -import type { CoreStart } from '@kbn/core/server'; +import { kibanaRequestFactory } from '@kbn/core-http-server-utils'; +import { SECURITY_EXTENSION_ID, type CoreStart, SavedObjectsClient } from '@kbn/core/server'; +import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; export async function getInternalSavedObjectsClient(coreStart: CoreStart) { - return coreStart.savedObjects.createInternalRepository(); + return new SavedObjectsClient(coreStart.savedObjects.createInternalRepository()); +} + +export function getInternalSavedObjectsClientForSpaceId(coreStart: CoreStart, spaceId?: string) { + const request = kibanaRequestFactory({ + headers: {}, + path: '/', + route: { settings: {} }, + url: { href: '', hash: '' } as URL, + raw: { req: { url: '/' } } as any, + }); + + if (spaceId && spaceId !== DEFAULT_SPACE_ID) { + coreStart.http.basePath.set(request, `/s/${spaceId}`); + } + + // soClient as kibana internal users, be careful on how you use it, security is not enabled + return coreStart.savedObjects.getScopedClient(request, { + excludedExtensions: [SECURITY_EXTENSION_ID], + }); } diff --git a/x-pack/solutions/observability/plugins/apm/server/plugin.ts b/x-pack/solutions/observability/plugins/apm/server/plugin.ts index e8e844b799849..e06a8afc8510c 100644 --- a/x-pack/solutions/observability/plugins/apm/server/plugin.ts +++ b/x-pack/solutions/observability/plugins/apm/server/plugin.ts @@ -200,6 +200,7 @@ export class APMPlugin // This will add an API key to all existing APM package policies addApiKeysToEveryPackagePolicyIfMissing({ coreStartPromise: getCoreStart(), + licensing: plugins.licensing, pluginStartPromise: getPluginStart(), logger: this.logger, }).catch((e) => { diff --git a/x-pack/solutions/observability/plugins/apm/server/routes/fleet/api_keys/add_api_keys_to_policies_if_missing.ts b/x-pack/solutions/observability/plugins/apm/server/routes/fleet/api_keys/add_api_keys_to_policies_if_missing.ts index a5b16d6d44da6..f556ebe04ccd5 100644 --- a/x-pack/solutions/observability/plugins/apm/server/routes/fleet/api_keys/add_api_keys_to_policies_if_missing.ts +++ b/x-pack/solutions/observability/plugins/apm/server/routes/fleet/api_keys/add_api_keys_to_policies_if_missing.ts @@ -7,9 +7,12 @@ import { omit } from 'lodash'; import type { PackagePolicy } from '@kbn/fleet-plugin/common'; -import type { CoreStart, Logger } from '@kbn/core/server'; +import type { CoreStart, Logger, SavedObjectsClientContract } from '@kbn/core/server'; import type { FleetStartContract } from '@kbn/fleet-plugin/server'; -import { getInternalSavedObjectsClient } from '../../../lib/helpers/get_internal_saved_objects_client'; +import type { LicensingPluginSetup } from '@kbn/licensing-plugin/server'; +import { filter, lastValueFrom, take } from 'rxjs'; + +import { getInternalSavedObjectsClientForSpaceId } from '../../../lib/helpers/get_internal_saved_objects_client'; import type { APMPluginStartDependencies } from '../../../types'; import { getApmPackagePolicies } from '../get_apm_package_policies'; import { createApmAgentConfigApiKey, createApmSourceMapApiKey } from './create_apm_api_keys'; @@ -19,10 +22,12 @@ export async function addApiKeysToEveryPackagePolicyIfMissing({ coreStartPromise, pluginStartPromise, logger, + licensing, }: { coreStartPromise: Promise; pluginStartPromise: Promise; logger: Logger; + licensing: LicensingPluginSetup; }) { const coreStart = await coreStartPromise; const { fleet } = await pluginStartPromise; @@ -30,6 +35,18 @@ export async function addApiKeysToEveryPackagePolicyIfMissing({ return; } + // We need to wait for the licence feature to be available, + // to have our internal saved object client with encrypted saved object working properly + await lastValueFrom( + licensing.license$.pipe( + filter( + (licence) => + licence.getFeature('security').isEnabled && licence.getFeature('security').isAvailable + ), + take(1) + ) + ); + const apmFleetPolicies = await getApmPackagePolicies({ coreStart, fleetPluginStart: fleet, @@ -37,8 +54,13 @@ export async function addApiKeysToEveryPackagePolicyIfMissing({ return Promise.all( apmFleetPolicies.items.map((policy) => { + const savedObjectsClient = getInternalSavedObjectsClientForSpaceId( + coreStart, + policy.spaceIds?.[0] + ); return addApiKeysToPackagePolicyIfMissing({ policy, + savedObjectsClient, coreStart, fleet, logger, @@ -50,10 +72,12 @@ export async function addApiKeysToEveryPackagePolicyIfMissing({ export async function addApiKeysToPackagePolicyIfMissing({ policy, coreStart, + savedObjectsClient, fleet, logger, }: { policy: PackagePolicy; + savedObjectsClient: SavedObjectsClientContract; coreStart: CoreStart; fleet: FleetStartContract; logger: Logger; @@ -85,7 +109,7 @@ export async function addApiKeysToPackagePolicyIfMissing({ }); const internalESClient = coreStart.elasticsearch.client.asInternalUser; - const savedObjectsClient = await getInternalSavedObjectsClient(coreStart); + const newPolicy = await fleet.packagePolicyService.update( savedObjectsClient, internalESClient, diff --git a/x-pack/solutions/observability/plugins/apm/server/routes/fleet/get_apm_package_policies.ts b/x-pack/solutions/observability/plugins/apm/server/routes/fleet/get_apm_package_policies.ts index 22422155903ec..43e251daf0548 100644 --- a/x-pack/solutions/observability/plugins/apm/server/routes/fleet/get_apm_package_policies.ts +++ b/x-pack/solutions/observability/plugins/apm/server/routes/fleet/get_apm_package_policies.ts @@ -16,11 +16,11 @@ export async function getApmPackagePolicies({ coreStart: CoreStart; fleetPluginStart: NonNullable; }) { - // @ts-ignore const savedObjectsClient: SavedObjectsClientContract = await getInternalSavedObjectsClient( coreStart ); return await fleetPluginStart.packagePolicyService.list(savedObjectsClient, { kuery: 'ingest-package-policies.package.name:apm', + spaceId: '*', }); } diff --git a/x-pack/solutions/observability/plugins/apm/server/routes/fleet/register_fleet_policy_callbacks.ts b/x-pack/solutions/observability/plugins/apm/server/routes/fleet/register_fleet_policy_callbacks.ts index 65d099e9aea3d..4a32ab0178e03 100644 --- a/x-pack/solutions/observability/plugins/apm/server/routes/fleet/register_fleet_policy_callbacks.ts +++ b/x-pack/solutions/observability/plugins/apm/server/routes/fleet/register_fleet_policy_callbacks.ts @@ -122,7 +122,7 @@ function onPackagePolicyPostCreate({ coreStart: CoreStart; logger: Logger; }): PostPackagePolicyPostCreateCallback { - return async (packagePolicy) => { + return async (packagePolicy, savedObjectsClient) => { if (packagePolicy.package?.name !== 'apm') { return packagePolicy; } @@ -130,6 +130,7 @@ function onPackagePolicyPostCreate({ // add api key to new package policy await addApiKeysToPackagePolicyIfMissing({ policy: packagePolicy, + savedObjectsClient, coreStart, fleet, logger, diff --git a/x-pack/solutions/observability/plugins/apm/tsconfig.json b/x-pack/solutions/observability/plugins/apm/tsconfig.json index 6d3bdcb18df55..be688ddd1da27 100644 --- a/x-pack/solutions/observability/plugins/apm/tsconfig.json +++ b/x-pack/solutions/observability/plugins/apm/tsconfig.json @@ -131,7 +131,8 @@ "@kbn/saved-search-plugin", "@kbn/charts-theme", "@kbn/response-ops-rule-params", - "@kbn/entityManager-plugin" + "@kbn/entityManager-plugin", + "@kbn/core-http-server-utils" ], "exclude": ["target/**/*"] } From 91eefe437a0ef68de34cd6f50f2a1e9cb93f6fc2 Mon Sep 17 00:00:00 2001 From: Angela Chuang <6295984+angorayc@users.noreply.github.com> Date: Tue, 21 Jan 2025 13:19:49 +0000 Subject: [PATCH 033/148] [Security Solution] Add retrieve results to security solution search strategy (#207307) ## Summary https://github.com/elastic/kibana/pull/189031 https://p.elstc.co/paste/pCGQy1nV#B7fBRtGiDq-QN14qT/eE8zPOPWgXP88672NIcbSblaD Without `options.retrieveResults = true` parameter, `response.rawResponse.hits.hits` from search strategy can be undefined ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../factory/cti/event_enrichment/response.test.ts | 13 +++++++++++++ .../factory/cti/event_enrichment/response.ts | 5 ++++- .../search_strategy/security_solution/index.ts | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.test.ts index adddb12aa16e6..2591a48f22853 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.test.ts @@ -10,6 +10,7 @@ import { buildEventEnrichmentRawResponseMock, } from '../../../../../../common/search_strategy/security_solution/cti/index.mock'; import { parseEventEnrichmentResponse } from './response'; +import type { IEsSearchResponse } from '@kbn/search-types'; describe('parseEventEnrichmentResponse', () => { it('includes an accurate inspect response', async () => { @@ -101,4 +102,16 @@ describe('parseEventEnrichmentResponse', () => { }), ]); }); + + it('returns an empty array when no hits', async () => { + const options = buildEventEnrichmentRequestOptionsMock(); + const response = { + rawResponse: { + hits: {}, + }, + } as IEsSearchResponse; + const parsedResponse = await parseEventEnrichmentResponse(options, response); + + expect(parsedResponse.enrichments).toEqual([]); + }); }); diff --git a/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.ts index ebbff68d18cab..7be7694df8037 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.ts @@ -6,6 +6,8 @@ */ import type { IEsSearchResponse } from '@kbn/search-types'; +import { getOr } from 'lodash/fp'; +import type { SearchHit } from '@elastic/elasticsearch/lib/api/types'; import type { EventEnrichmentRequestOptions } from '../../../../../../common/api/search_strategy'; import { inspectStringifyObject } from '../../../../../utils/build_query'; import { buildIndicatorEnrichments, getTotalCount } from './helpers'; @@ -19,7 +21,8 @@ export const parseEventEnrichmentResponse = async ( dsl: [inspectStringifyObject(buildEventEnrichmentQuery(options))], }; const totalCount = getTotalCount(response.rawResponse.hits.total); - const enrichments = buildIndicatorEnrichments(response.rawResponse.hits.hits); + const hits: SearchHit[] = getOr([], 'rawResponse.hits.hits', response); + const enrichments = buildIndicatorEnrichments(hits); return { ...response, diff --git a/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/index.ts index 00393e2e6187e..5c8c4444dd761 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/index.ts @@ -29,6 +29,8 @@ export const securitySolutionSearchStrategyProvider = ( search: (request, options, deps) => { const parsedRequest = searchStrategyRequestSchema.parse(request); const queryFactory = securitySolutionFactory[parsedRequest.factoryQueryType]; + // NOTE: without this parameter, .hits.hits can be empty + options.retrieveResults = true; const dsl = queryFactory.buildDsl(parsedRequest); return es.search({ ...request, params: dsl }, options, deps).pipe( From 1a6bfef903f13859dc93fc6f30316a17f710376c Mon Sep 17 00:00:00 2001 From: Tre Date: Tue, 21 Jan 2025 14:05:01 +0000 Subject: [PATCH 034/148] [SKIP ON MKI] `x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/assets/dashboard.ts` (#207337) see details: https://github.com/elastic/kibana/issues/207310 --- .../apis/observability/streams/assets/dashboard.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/assets/dashboard.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/assets/dashboard.ts index 6b1215548b4bf..da114d49b01ea 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/assets/dashboard.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/streams/assets/dashboard.ts @@ -108,7 +108,9 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { } } - describe('Asset links', () => { + describe('Asset links', function () { + // see details: https://github.com/elastic/kibana/issues/207310 + this.tags(['failsOnMKI']); before(async () => { apiClient = await createStreamsRepositoryAdminClient(roleScopedSupertest); await enableStreams(apiClient); From 17be4e651b1f71d14017ff9c9329b6cc1c80edf9 Mon Sep 17 00:00:00 2001 From: Robert Jaszczurek <92210485+rbrtj@users.noreply.github.com> Date: Tue, 21 Jan 2025 15:07:51 +0100 Subject: [PATCH 035/148] [ML] Anomaly detection: Use EUI icons for Rare, Geo and Categorization jobs (#207269) With https://github.com/elastic/eui/pull/8248 merged and icons now available in EUI, updating them in Kibana. This addresses https://github.com/elastic/kibana/issues/204594. image --- .../job_type/categorization_job_icon.tsx | 23 -------------- .../new_job/pages/job_type/geo_job_icon.tsx | 30 ------------------- .../jobs/new_job/pages/job_type/page.tsx | 9 ++---- 3 files changed, 3 insertions(+), 59 deletions(-) delete mode 100644 x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/categorization_job_icon.tsx delete mode 100644 x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/geo_job_icon.tsx diff --git a/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/categorization_job_icon.tsx b/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/categorization_job_icon.tsx deleted file mode 100644 index d1fc35e773842..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/categorization_job_icon.tsx +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; - -export const CategorizationIcon = ( - - - - -); diff --git a/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/geo_job_icon.tsx b/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/geo_job_icon.tsx deleted file mode 100644 index d3296b65200bf..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/geo_job_icon.tsx +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; - -export const GeoIcon = ( - - - - - - - - - - - -); diff --git a/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/page.tsx b/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/page.tsx index 42b5623605ec0..49b61c542db30 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/page.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/pages/job_type/page.tsx @@ -25,10 +25,7 @@ import { useDataSource } from '../../../../contexts/ml'; import { DataRecognizer } from '../../../../components/data_recognizer'; import { addItemToRecentlyAccessed } from '../../../../util/recently_accessed'; import { LinkCard } from '../../../../components/link_card'; -import { CategorizationIcon } from './categorization_job_icon'; import { ML_APP_LOCATOR, ML_PAGES } from '../../../../../../common/constants/locator'; -import { RareIcon } from './rare_job_icon'; -import { GeoIcon } from './geo_job_icon'; import { useCreateAndNavigateToMlLink } from '../../../../contexts/kibana/use_create_url'; import { MlPageHeader } from '../../../../components/page_header'; @@ -214,7 +211,7 @@ export const Page: FC = () => { { onClick: () => navigateToPath(`/jobs/new_job/categorization${getUrlParams()}`), icon: { - type: CategorizationIcon, + type: 'createGenericJob', ariaLabel: i18n.translate('xpack.ml.newJob.wizard.jobType.categorizationAriaLabel', { defaultMessage: 'Categorization job', }), @@ -230,7 +227,7 @@ export const Page: FC = () => { { onClick: () => navigateToPath(`/jobs/new_job/rare${getUrlParams()}`), icon: { - type: RareIcon, + type: 'createGenericJob', ariaLabel: i18n.translate('xpack.ml.newJob.wizard.jobType.rareAriaLabel', { defaultMessage: 'Rare job', }), @@ -249,7 +246,7 @@ export const Page: FC = () => { jobTypes.push({ onClick: () => navigateToPath(`/jobs/new_job/geo${getUrlParams()}`), icon: { - type: GeoIcon, + type: 'createGeoJob', ariaLabel: i18n.translate('xpack.ml.newJob.wizard.jobType.geoAriaLabel', { defaultMessage: 'Geo job', }), From 7bb2dad38f8938569374ce5c99d5e4a2f1ff9b95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Tue, 21 Jan 2025 15:10:54 +0100 Subject: [PATCH 036/148] [ES `body` removal] `@elastic/response-ops` (#204882) --- .../search_strategy_types.ts | 2 +- .../apis/search_alerts/search_alerts.ts | 2 +- ...use_get_alerts_group_aggregations_query.ts | 2 +- .../src/containers/query/types.ts | 4 +- .../connector/methods/get_all/get_all.ts | 2 +- .../server/data/connector/types/params.ts | 2 +- .../lib/get_execution_log_aggregation.ts | 2 +- .../monitoring/register_cluster_collector.ts | 2 +- .../actions/server/usage/actions_telemetry.ts | 2 +- .../usage/lib/parse_connector_type_bucket.ts | 2 +- .../field_maps/mapping_from_field_map.ts | 2 +- .../alerting/common/rule_tags_aggregation.ts | 2 +- .../alerts_client/alerts_client.test.ts | 64 +++-- .../server/alerts_client/alerts_client.ts | 8 +- .../alerts_client/alerts_client_fixtures.ts | 126 +++++---- .../lib/get_summarized_alerts_query.ts | 18 +- .../lib/inject_analyze_wildcard.ts | 2 +- .../lib/sanitize_bulk_response.test.ts | 2 +- .../lib/sanitize_bulk_response.ts | 2 +- .../alerts_service/alerts_service.test.ts | 232 ++++++++--------- .../default_lifecycle_policy.ts | 2 +- .../lib/create_concrete_write_index.test.ts | 78 +++--- .../lib/create_concrete_write_index.ts | 26 +- ...reate_or_update_component_template.test.ts | 31 +-- .../create_or_update_component_template.ts | 16 +- .../lib/create_or_update_ilm_policy.ts | 2 +- .../create_or_update_index_template.test.ts | 64 +++-- .../lib/create_or_update_index_template.ts | 68 +++-- .../alerts_service/lib/data_stream_adapter.ts | 8 +- .../lib/set_alerts_to_untracked.test.ts | 246 +++++++++--------- .../lib/set_alerts_to_untracked.ts | 36 ++- .../rule/methods/aggregate/types/index.ts | 2 +- .../validate_rule_aggregation_fields.ts | 2 +- .../alerting_authorization_kuery.ts | 2 +- .../invalidate_pending_api_keys/task.ts | 2 +- .../lib/convert_es_sort_to_event_log_sort.ts | 6 +- .../lib/get_execution_log_aggregation.ts | 2 +- .../lib/wrap_scoped_cluster_client.test.ts | 30 +-- .../server/lib/wrap_scoped_cluster_client.ts | 2 +- .../monitoring/register_cluster_collector.ts | 2 +- .../suggestions/values_suggestion_alerts.ts | 2 +- .../suggestions/values_suggestion_rules.ts | 2 +- .../methods/get_action_error_log.ts | 2 +- .../rules_client/methods/get_execution_log.ts | 2 +- .../tests/get_execution_log.test.ts | 2 +- .../task_runner/ad_hoc_task_runner.test.ts | 18 +- .../task_runner_alerts_client.test.ts | 2 +- .../usage/lib/get_telemetry_from_alerts.ts | 20 +- .../usage/lib/get_telemetry_from_event_log.ts | 42 ++- .../usage/lib/get_telemetry_from_kibana.ts | 210 ++++++++------- .../lib/get_telemetry_from_task_manager.ts | 84 +++--- .../lib/group_connectors_by_consumers.ts | 2 +- .../lib/parse_simple_rule_type_bucket.ts | 2 +- .../shared/cases/public/containers/types.ts | 2 +- .../metrics/alerts/aggregations/hosts.ts | 2 +- .../cases/server/client/metrics/types.ts | 2 +- .../server/services/attachments/index.ts | 2 +- .../services/attachments/operations/get.ts | 2 +- .../server/services/attachments/types.ts | 2 +- .../cases/server/services/cases/index.ts | 2 +- .../server/services/user_actions/index.ts | 2 +- .../server/es/cluster_client_adapter.ts | 10 +- .../shared/event_log/server/es/init.ts | 2 +- .../event_log/server/event_log_client.ts | 2 +- .../resource_installer.ts | 14 +- .../common/build_sorted_events_query.ts | 2 +- .../rule_types/es_query/action_context.ts | 2 +- .../server/rule_types/es_query/util.ts | 2 +- .../connector_types/es_index/index.test.ts | 118 ++++----- .../server/connector_types/es_index/index.ts | 13 +- .../server/lib/bulk_operation_buffer.ts | 2 +- .../server/metrics/task_metrics_collector.ts | 2 +- .../monitoring/workload_statistics.test.ts | 2 +- .../server/monitoring/workload_statistics.ts | 2 +- .../shared/task_manager/server/plugin.ts | 2 +- ...egate_task_overdue_percentiles_for_type.ts | 2 +- .../mark_available_tasks_as_claimed.ts | 2 +- .../server/queries/query_clauses.ts | 2 +- ...mark_removed_tasks_as_unrecognized.test.ts | 2 +- .../mark_removed_tasks_as_unrecognized.ts | 2 +- .../background_task_utilization.test.ts | 2 +- .../server/saved_objects/index.ts | 2 +- .../task_manager/server/task_store.test.ts | 2 +- .../shared/task_manager/server/task_store.ts | 2 +- .../common/data/lib/build_agg.ts | 2 +- .../data/lib/parse_aggregation_results.ts | 2 +- .../load_execution_log_aggregations.ts | 2 +- .../lib/rule_api/load_action_error_log.ts | 2 +- .../load_execution_log_aggregations.ts | 2 +- .../alerts_table/alerts_table_state.tsx | 4 +- .../sections/alerts_table/configuration.tsx | 2 +- .../sections/alerts_table/hooks/constants.ts | 2 +- .../alerts_table/hooks/use_bulk_actions.ts | 2 +- .../use_bulk_untrack_alerts_by_query.tsx | 2 +- .../alerts_table/hooks/use_sorting.ts | 2 +- .../sections/field_browser/mock.ts | 2 +- .../triggers_actions_ui/public/types.ts | 5 +- .../server/data/lib/time_series_query.test.ts | 2 +- .../server/data/lib/time_series_query.ts | 2 +- .../risk_score/risk_score_data_client.test.ts | 12 +- .../risk_score/risk_score_data_client.ts | 28 +- .../group1/tests/alerting/backfill/delete.ts | 2 +- .../group4/tests/alerting/alerts.ts | 2 +- .../tests/actions/execute_unsecured_action.ts | 2 +- .../actions/schedule_unsecured_action.ts | 2 +- .../tests/alerting/group1/alerts_base.ts | 2 +- .../tests/alerting/group4/alert_severity.ts | 2 +- .../group4/alerts_as_data/alerts_as_data.ts | 2 +- .../alerts_as_data_alert_delay.ts | 2 +- .../alerts_as_data_conflicts.ts | 2 +- .../alerts_as_data/alerts_as_data_flapping.ts | 2 +- .../tests/alerting/group4/migrations.ts | 2 +- .../common/lib/alerts.ts | 2 +- .../common/lib/api/index.ts | 2 +- .../test_suites/task_manager/migrations.ts | 2 +- .../task_manager/task_management.ts | 2 +- .../task_manager/task_partitions.ts | 2 +- .../test_suites/task_manager/task_priority.ts | 2 +- .../test_suites/task_manager/migrations.ts | 2 +- .../task_manager/task_management.ts | 2 +- .../test_suites/task_manager/task_priority.ts | 2 +- 121 files changed, 860 insertions(+), 961 deletions(-) diff --git a/src/platform/packages/shared/kbn-alerting-types/search_strategy_types.ts b/src/platform/packages/shared/kbn-alerting-types/search_strategy_types.ts index 9df72e4fa7886..51e1259091fa4 100644 --- a/src/platform/packages/shared/kbn-alerting-types/search_strategy_types.ts +++ b/src/platform/packages/shared/kbn-alerting-types/search_strategy_types.ts @@ -13,7 +13,7 @@ import type { QueryDslFieldAndFormat, QueryDslQueryContainer, SortCombinations, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import type { Alert } from './alert_type'; export type RuleRegistrySearchRequest = IEsSearchRequest & { diff --git a/src/platform/packages/shared/kbn-alerts-ui-shared/src/common/apis/search_alerts/search_alerts.ts b/src/platform/packages/shared/kbn-alerts-ui-shared/src/common/apis/search_alerts/search_alerts.ts index 232d1bf20fc68..412a5fa607110 100644 --- a/src/platform/packages/shared/kbn-alerts-ui-shared/src/common/apis/search_alerts/search_alerts.ts +++ b/src/platform/packages/shared/kbn-alerts-ui-shared/src/common/apis/search_alerts/search_alerts.ts @@ -20,7 +20,7 @@ import type { QueryDslFieldAndFormat, QueryDslQueryContainer, SortCombinations, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import type { EsQuerySnapshot, LegacyField } from '../../types'; export interface SearchAlertsParams { diff --git a/src/platform/packages/shared/kbn-alerts-ui-shared/src/common/hooks/use_get_alerts_group_aggregations_query.ts b/src/platform/packages/shared/kbn-alerts-ui-shared/src/common/hooks/use_get_alerts_group_aggregations_query.ts index e3c2d42a391e9..c0b022578d7be 100644 --- a/src/platform/packages/shared/kbn-alerts-ui-shared/src/common/hooks/use_get_alerts_group_aggregations_query.ts +++ b/src/platform/packages/shared/kbn-alerts-ui-shared/src/common/hooks/use_get_alerts_group_aggregations_query.ts @@ -16,7 +16,7 @@ import type { AggregationsAggregationContainer, QueryDslQueryContainer, SortCombinations, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { BASE_RAC_ALERTS_API_PATH } from '../constants'; export interface UseGetAlertsGroupAggregationsQueryProps { diff --git a/src/platform/packages/shared/kbn-grouping/src/containers/query/types.ts b/src/platform/packages/shared/kbn-grouping/src/containers/query/types.ts index 46e6af5855bb5..9956fdb35deb4 100644 --- a/src/platform/packages/shared/kbn-grouping/src/containers/query/types.ts +++ b/src/platform/packages/shared/kbn-grouping/src/containers/query/types.ts @@ -11,10 +11,10 @@ import type { Script, MappingRuntimeField, MappingRuntimeFields, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import type { RuntimeFieldSpec, RuntimePrimitiveTypes } from '@kbn/data-views-plugin/common'; import type { BoolQuery } from '@kbn/es-query'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; type RunTimeMappings = | Record & { type: RuntimePrimitiveTypes }> diff --git a/x-pack/platform/plugins/shared/actions/server/application/connector/methods/get_all/get_all.ts b/x-pack/platform/plugins/shared/actions/server/application/connector/methods/get_all/get_all.ts index caa5a361ae454..15aa19452a6f9 100644 --- a/x-pack/platform/plugins/shared/actions/server/application/connector/methods/get_all/get_all.ts +++ b/x-pack/platform/plugins/shared/actions/server/application/connector/methods/get_all/get_all.ts @@ -8,7 +8,7 @@ /** * Get all actions with in-memory connectors */ -import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import * as estypes from '@elastic/elasticsearch/lib/api/types'; import { AuditLogger } from '@kbn/security-plugin-types-server'; import { ElasticsearchClient, Logger } from '@kbn/core/server'; import { omit } from 'lodash'; diff --git a/x-pack/platform/plugins/shared/actions/server/data/connector/types/params.ts b/x-pack/platform/plugins/shared/actions/server/data/connector/types/params.ts index c23447fb37486..9de712597ad60 100644 --- a/x-pack/platform/plugins/shared/actions/server/data/connector/types/params.ts +++ b/x-pack/platform/plugins/shared/actions/server/data/connector/types/params.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; -import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import * as estypes from '@elastic/elasticsearch/lib/api/types'; import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { SavedObjectsClient } from '@kbn/core/server'; diff --git a/x-pack/platform/plugins/shared/actions/server/lib/get_execution_log_aggregation.ts b/x-pack/platform/plugins/shared/actions/server/lib/get_execution_log_aggregation.ts index ff11f831662cc..75c0dcdcdf74f 100644 --- a/x-pack/platform/plugins/shared/actions/server/lib/get_execution_log_aggregation.ts +++ b/x-pack/platform/plugins/shared/actions/server/lib/get_execution_log_aggregation.ts @@ -6,7 +6,7 @@ */ import { KueryNode } from '@kbn/es-query'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import Boom from '@hapi/boom'; import { flatMap, get, isEmpty } from 'lodash'; import { AggregateEventsBySavedObjectResult } from '@kbn/event-log-plugin/server'; diff --git a/x-pack/platform/plugins/shared/actions/server/monitoring/register_cluster_collector.ts b/x-pack/platform/plugins/shared/actions/server/monitoring/register_cluster_collector.ts index 23c4953b40d6e..b1ed0ecdf2ea8 100644 --- a/x-pack/platform/plugins/shared/actions/server/monitoring/register_cluster_collector.ts +++ b/x-pack/platform/plugins/shared/actions/server/monitoring/register_cluster_collector.ts @@ -7,7 +7,7 @@ import type { AggregationsKeyedPercentiles, AggregationsPercentilesAggregateBase, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { MonitoringCollectionSetup } from '@kbn/monitoring-collection-plugin/server'; import { aggregateTaskOverduePercentilesForType } from '@kbn/task-manager-plugin/server'; import { CoreSetup } from '@kbn/core/server'; diff --git a/x-pack/platform/plugins/shared/actions/server/usage/actions_telemetry.ts b/x-pack/platform/plugins/shared/actions/server/usage/actions_telemetry.ts index b7e93f5157140..778313d2024a6 100644 --- a/x-pack/platform/plugins/shared/actions/server/usage/actions_telemetry.ts +++ b/x-pack/platform/plugins/shared/actions/server/usage/actions_telemetry.ts @@ -7,7 +7,7 @@ import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import { ElasticsearchClient, Logger } from '@kbn/core/server'; -import { AggregationsTermsAggregateBase } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { AggregationsTermsAggregateBase } from '@elastic/elasticsearch/lib/api/types'; import { AvgActionRunOutcomeByConnectorTypeBucket, parseActionRunOutcomeByConnectorTypesBucket, diff --git a/x-pack/platform/plugins/shared/actions/server/usage/lib/parse_connector_type_bucket.ts b/x-pack/platform/plugins/shared/actions/server/usage/lib/parse_connector_type_bucket.ts index 96e1610c635d8..936dc3f217ca2 100644 --- a/x-pack/platform/plugins/shared/actions/server/usage/lib/parse_connector_type_bucket.ts +++ b/x-pack/platform/plugins/shared/actions/server/usage/lib/parse_connector_type_bucket.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { AggregationsBuckets } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { AggregationsBuckets } from '@elastic/elasticsearch/lib/api/types'; import { replaceFirstAndLastDotSymbols } from '../actions_telemetry'; export interface AvgActionRunOutcomeByConnectorTypeBucket { diff --git a/x-pack/platform/plugins/shared/alerting/common/alert_schema/field_maps/mapping_from_field_map.ts b/x-pack/platform/plugins/shared/alerting/common/alert_schema/field_maps/mapping_from_field_map.ts index 1d5121883df69..67e41f6d9de6c 100644 --- a/x-pack/platform/plugins/shared/alerting/common/alert_schema/field_maps/mapping_from_field_map.ts +++ b/x-pack/platform/plugins/shared/alerting/common/alert_schema/field_maps/mapping_from_field_map.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { MappingTypeMapping } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { MappingTypeMapping } from '@elastic/elasticsearch/lib/api/types'; import { set } from '@kbn/safer-lodash-set'; import type { FieldMap, MultiField } from '@kbn/alerts-as-data-utils'; diff --git a/x-pack/platform/plugins/shared/alerting/common/rule_tags_aggregation.ts b/x-pack/platform/plugins/shared/alerting/common/rule_tags_aggregation.ts index 4df444d51e19b..bfdc244e9e116 100644 --- a/x-pack/platform/plugins/shared/alerting/common/rule_tags_aggregation.ts +++ b/x-pack/platform/plugins/shared/alerting/common/rule_tags_aggregation.ts @@ -8,7 +8,7 @@ import type { AggregationsAggregationContainer, AggregationsCompositeAggregation, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import type { AggregateOptions } from '../server/application/rule/methods/aggregate/types'; export type RuleTagsAggregationOptions = Pick & { diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client.test.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client.test.ts index 557341f3e02de..d6c147686c7a0 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client.test.ts @@ -442,18 +442,16 @@ describe('Alerts Client', () => { ); expect(clusterClient.search).toHaveBeenCalledWith({ - body: { - query: { - bool: { - filter: [ - { term: { 'kibana.alert.rule.uuid': '1' } }, - { terms: { 'kibana.alert.uuid': ['abc', 'def', 'xyz'] } }, - ], - }, + query: { + bool: { + filter: [ + { term: { 'kibana.alert.rule.uuid': '1' } }, + { terms: { 'kibana.alert.uuid': ['abc', 'def', 'xyz'] } }, + ], }, - seq_no_primary_term: true, - size: 3, }, + seq_no_primary_term: true, + size: 3, index: useDataStreamForAlerts ? '.alerts-test.alerts-default' : '.internal.alerts-test.alerts-default-*', @@ -516,18 +514,16 @@ describe('Alerts Client', () => { ); expect(clusterClient.search).toHaveBeenCalledWith({ - body: { - query: { - bool: { - filter: [ - { term: { 'kibana.alert.rule.uuid': '1' } }, - { terms: { 'kibana.alert.uuid': ['abc'] } }, - ], - }, + query: { + bool: { + filter: [ + { term: { 'kibana.alert.rule.uuid': '1' } }, + { terms: { 'kibana.alert.uuid': ['abc'] } }, + ], }, - size: 1, - seq_no_primary_term: true, }, + size: 1, + seq_no_primary_term: true, index: useDataStreamForAlerts ? '.alerts-test.alerts-default' : '.internal.alerts-test.alerts-default-*', @@ -570,7 +566,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { create: { _id: uuid1, ...(useDataStreamForAlerts ? {} : { require_alias: true }) }, }, @@ -617,7 +613,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: true, require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { create: { _id: uuid1, ...(useDataStreamForAlerts ? {} : { require_alias: true }) }, }, @@ -710,7 +706,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { index: { _id: 'abc', @@ -783,7 +779,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { index: { _id: 'abc', @@ -918,7 +914,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { create: { _id: 'abc', @@ -991,7 +987,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { index: { _id: 'def', @@ -1090,7 +1086,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { index: { _id: 'def', @@ -1247,7 +1243,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { index: { _id: 'def', @@ -1365,7 +1361,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { index: { _id: 'def', @@ -1569,7 +1565,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { index: { _id: 'def', @@ -2540,7 +2536,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { create: { _id: uuid1, ...(useDataStreamForAlerts ? {} : { require_alias: true }) }, }, @@ -2814,7 +2810,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { create: { _id: expect.any(String), @@ -2915,7 +2911,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { create: { _id: 'abc', @@ -3012,7 +3008,7 @@ describe('Alerts Client', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { index: { _id: 'abc', diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client.ts index d62f579e4566e..ed42ae93fdcc3 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client.ts @@ -15,7 +15,7 @@ import { ALERT_MAINTENANCE_WINDOW_IDS, } from '@kbn/rule-data-utils'; import { chunk, flatMap, get, isEmpty, keys } from 'lodash'; -import { SearchRequest } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SearchRequest } from '@elastic/elasticsearch/lib/api/types'; import type { Alert } from '@kbn/alerts-as-data-utils'; import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; import { DeepPartial } from '@kbn/utility-types'; @@ -231,7 +231,7 @@ export class AlertsClient< } public async search( - queryBody: SearchRequest['body'] + queryBody: SearchRequest ): Promise> { const esClient = await this.options.elasticsearchClientPromise; const index = this.isUsingDataStreams() @@ -242,7 +242,7 @@ export class AlertsClient< aggregations, } = await esClient.search({ index, - body: queryBody, + ...queryBody, ignore_unavailable: true, }); @@ -568,7 +568,7 @@ export class AlertsClient< refresh: this.isServerless ? true : 'wait_for', index: this.indexTemplateAndPattern.alias, require_alias: !this.isUsingDataStreams(), - body: bulkBody, + operations: bulkBody, }); // If there were individual indexing errors, they will be returned in the success response diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client_fixtures.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client_fixtures.ts index 0da20a5e49b70..90e8387f5039d 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client_fixtures.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_client/alerts_client_fixtures.ts @@ -129,67 +129,66 @@ export const getExpectedQueryByExecutionUuid = ({ excludedAlertInstanceIds?: string[]; alertsFilter?: AlertsFilter; }) => ({ - body: { - query: { - bool: { - filter: [ - { term: { 'kibana.alert.rule.execution.uuid': uuid } }, - { term: { 'kibana.alert.rule.uuid': ruleId } }, - { - bool: { must_not: { exists: { field: 'kibana.alert.maintenance_window_ids' } } }, - }, - ...(isLifecycleAlert ? [{ term: { 'event.action': alertTypes[alertType] } }] : []), - ...(!!excludedAlertInstanceIds?.length - ? [ - { - bool: { - must_not: { - terms: { - 'kibana.alert.instance.id': excludedAlertInstanceIds, - }, + query: { + bool: { + filter: [ + { term: { 'kibana.alert.rule.execution.uuid': uuid } }, + { term: { 'kibana.alert.rule.uuid': ruleId } }, + { + bool: { must_not: { exists: { field: 'kibana.alert.maintenance_window_ids' } } }, + }, + ...(isLifecycleAlert ? [{ term: { 'event.action': alertTypes[alertType] } }] : []), + ...(!!excludedAlertInstanceIds?.length + ? [ + { + bool: { + must_not: { + terms: { + 'kibana.alert.instance.id': excludedAlertInstanceIds, }, }, }, - ] - : []), - ...(alertsFilter - ? [ - { - bool: { - minimum_should_match: 1, - should: [ - { - match: { - [alertsFilter.query!.kql.split(':')[0]]: - alertsFilter.query!.kql.split(':')[1], - }, + }, + ] + : []), + ...(alertsFilter + ? [ + { + bool: { + minimum_should_match: 1, + should: [ + { + match: { + [alertsFilter.query!.kql.split(':')[0]]: + alertsFilter.query!.kql.split(':')[1], }, - ], - }, + }, + ], }, - { + }, + { + script: { script: { - script: { - params: { - datetimeField: '@timestamp', - days: alertsFilter.timeframe?.days, - timezone: alertsFilter.timeframe!.timezone, - }, - source: - 'params.days.contains(doc[params.datetimeField].value.withZoneSameInstant(ZoneId.of(params.timezone)).dayOfWeek.getValue())', + params: { + datetimeField: '@timestamp', + days: alertsFilter.timeframe?.days, + timezone: alertsFilter.timeframe!.timezone, }, + source: + 'params.days.contains(doc[params.datetimeField].value.withZoneSameInstant(ZoneId.of(params.timezone)).dayOfWeek.getValue())', }, }, - { + }, + { + script: { script: { - script: { - params: { - datetimeField: '@timestamp', - end: alertsFilter.timeframe!.hours.end, - start: alertsFilter.timeframe!.hours.start, - timezone: alertsFilter.timeframe!.timezone, - }, - source: ` + params: { + datetimeField: '@timestamp', + end: alertsFilter.timeframe!.hours.end, + start: alertsFilter.timeframe!.hours.start, + timezone: alertsFilter.timeframe!.timezone, + }, + source: ` def alertsDateTime = doc[params.datetimeField].value.withZoneSameInstant(ZoneId.of(params.timezone)); def alertsTime = LocalTime.of(alertsDateTime.getHour(), alertsDateTime.getMinute()); def start = LocalTime.parse(params.start); @@ -211,17 +210,16 @@ export const getExpectedQueryByExecutionUuid = ({ } } `, - }, }, }, - ] - : []), - ], - }, + }, + ] + : []), + ], }, - size: 100, - track_total_hits: true, }, + size: 100, + track_total_hits: true, ignore_unavailable: true, index: indexName, }); @@ -376,15 +374,13 @@ export const getExpectedQueryByTimeRange = ({ } return { - body: { - query: { - bool: { - filter, - }, + query: { + bool: { + filter, }, - size: 100, - track_total_hits: true, }, + size: 100, + track_total_hits: true, ignore_unavailable: true, index: indexName, }; diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/get_summarized_alerts_query.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/get_summarized_alerts_query.ts index ab3edece0becc..bb2bfeaa200fc 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/get_summarized_alerts_query.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/get_summarized_alerts_query.ts @@ -10,7 +10,7 @@ import { SearchRequest, SearchTotalHits, AggregationsAggregationContainer, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { BoolQuery } from '@kbn/es-query'; import { ALERT_END, @@ -53,7 +53,7 @@ const getLifecycleAlertsQueryByExecutionUuid = ({ ruleId, excludedAlertInstanceIds, alertsFilter, -}: GetLifecycleAlertsQueryByExecutionUuidParams): Array => { +}: GetLifecycleAlertsQueryByExecutionUuidParams): SearchRequest[] => { // lifecycle alerts assign a different action to an alert depending // on whether it is new/ongoing/recovered. query for each action in order // to get the count of each action type as well as up to the maximum number @@ -89,7 +89,7 @@ const getLifecycleAlertsQueryByTimeRange = ({ ruleId, excludedAlertInstanceIds, alertsFilter, -}: GetLifecycleAlertsQueryByTimeRangeParams): Array => { +}: GetLifecycleAlertsQueryByTimeRangeParams): SearchRequest[] => { return [ getQueryByTimeRange({ start, @@ -124,7 +124,7 @@ const getQueryByExecutionUuid = ({ excludedAlertInstanceIds, action, alertsFilter, -}: GetQueryByExecutionUuidParams): SearchRequest['body'] => { +}: GetQueryByExecutionUuidParams): SearchRequest => { const filter: QueryDslQueryContainer[] = [ { term: { @@ -187,7 +187,7 @@ const getQueryByTimeRange = ({ excludedAlertInstanceIds, type, alertsFilter, -}: GetQueryByTimeRangeParams): SearchRequest['body'] => { +}: GetQueryByTimeRangeParams): SearchRequest => { // base query filters the alert documents for a rule by the given time range let filter: QueryDslQueryContainer[] = [ { @@ -282,7 +282,7 @@ export const getQueryByScopedQueries = ({ ruleId, action, maintenanceWindows, -}: GetQueryByScopedQueriesParams): SearchRequest['body'] => { +}: GetQueryByScopedQueriesParams): SearchRequest => { const filters: QueryDslQueryContainer[] = [ { term: { @@ -460,7 +460,7 @@ const getLifecycleAlertsQueries = ({ ruleId, excludedAlertInstanceIds, alertsFilter, -}: GetAlertsQueryParams): Array => { +}: GetAlertsQueryParams): SearchRequest[] => { let queryBodies; if (!!executionUuid) { queryBodies = getLifecycleAlertsQueryByExecutionUuid({ @@ -489,7 +489,7 @@ const getContinualAlertsQuery = ({ ruleId, excludedAlertInstanceIds, alertsFilter, -}: GetAlertsQueryParams): SearchRequest['body'] => { +}: GetAlertsQueryParams): SearchRequest => { let queryBody; if (!!executionUuid) { queryBody = getQueryByExecutionUuid({ @@ -516,7 +516,7 @@ const getMaintenanceWindowAlertsQuery = ({ ruleId, action, maintenanceWindows, -}: GetMaintenanceWindowAlertsQueryParams): SearchRequest['body'] => { +}: GetMaintenanceWindowAlertsQueryParams): SearchRequest => { return getQueryByScopedQueries({ executionUuid, ruleId, diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/inject_analyze_wildcard.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/inject_analyze_wildcard.ts index 58a4f89948973..2a6f6a3e0b754 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/inject_analyze_wildcard.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/inject_analyze_wildcard.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; export const injectAnalyzeWildcard = (query: QueryDslQueryContainer): void => { if (!query) { diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/sanitize_bulk_response.test.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/sanitize_bulk_response.test.ts index 533bb5b554ae9..383fc2123557f 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/sanitize_bulk_response.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/sanitize_bulk_response.test.ts @@ -5,7 +5,7 @@ * 2.0. */ import { TransportResult } from '@elastic/elasticsearch'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { sanitizeBulkErrorResponse } from './sanitize_bulk_response'; // Using https://www.elastic.co/guide/en/elasticsearch/reference/8.11/docs-bulk.html diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/sanitize_bulk_response.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/sanitize_bulk_response.ts index 0c18500c3bd5f..06d9debbbe2ef 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/sanitize_bulk_response.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_client/lib/sanitize_bulk_response.ts @@ -8,7 +8,7 @@ import { cloneDeep } from 'lodash'; import { TransportResult } from '@elastic/elasticsearch'; import { get } from 'lodash'; import { set } from '@kbn/safer-lodash-set'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; export const sanitizeBulkErrorResponse = ( response: TransportResult | estypes.BulkResponse diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/alerts_service.test.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/alerts_service.test.ts index abf1d3d6c4307..a733a96e75216 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/alerts_service.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/alerts_service.test.ts @@ -10,7 +10,7 @@ import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-m import { IndicesGetDataStreamResponse, IndicesDataStreamIndex, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { errors as EsErrors } from '@elastic/elasticsearch'; import { ReplaySubject, Subject, of } from 'rxjs'; import { AlertsService } from './alerts_service'; @@ -150,54 +150,52 @@ const getIndexTemplatePutBody = (opts?: GetIndexTemplatePutBodyOpts) => { ]; return { name: `.alerts-${context ? context : 'test'}.alerts-${namespace}-index-template`, - body: { - index_patterns: indexPatterns, - composed_of: [ - ...(useEcs ? ['.alerts-ecs-mappings'] : []), - `.alerts-${context ? `${context}.alerts` : 'test.alerts'}-mappings`, - ...(useLegacyAlerts ? ['.alerts-legacy-alert-mappings'] : []), - '.alerts-framework-mappings', - ], - ...(useDataStream ? { data_stream: { hidden: true } } : {}), - priority: namespace.length, - template: { - settings: { - auto_expand_replicas: '0-1', - hidden: true, - ...(useDataStream - ? {} - : { - 'index.lifecycle': { - name: '.alerts-ilm-policy', - rollover_alias: `.alerts-${context ? context : 'test'}.alerts-${namespace}`, - }, - }), - 'index.mapping.ignore_malformed': true, - 'index.mapping.total_fields.limit': 2500, - }, - mappings: { - dynamic: false, - _meta: { - kibana: { version: '8.8.0' }, - managed: true, - namespace, - }, - }, - ...(secondaryAlias - ? { - aliases: { - [`${secondaryAlias}-default`]: { - is_write_index: false, - }, + index_patterns: indexPatterns, + composed_of: [ + ...(useEcs ? ['.alerts-ecs-mappings'] : []), + `.alerts-${context ? `${context}.alerts` : 'test.alerts'}-mappings`, + ...(useLegacyAlerts ? ['.alerts-legacy-alert-mappings'] : []), + '.alerts-framework-mappings', + ], + ...(useDataStream ? { data_stream: { hidden: true } } : {}), + priority: namespace.length, + template: { + settings: { + auto_expand_replicas: '0-1', + hidden: true, + ...(useDataStream + ? {} + : { + 'index.lifecycle': { + name: '.alerts-ilm-policy', + rollover_alias: `.alerts-${context ? context : 'test'}.alerts-${namespace}`, }, - } - : {}), + }), + 'index.mapping.ignore_malformed': true, + 'index.mapping.total_fields.limit': 2500, }, - _meta: { - kibana: { version: '8.8.0' }, - managed: true, - namespace, + mappings: { + dynamic: false, + _meta: { + kibana: { version: '8.8.0' }, + managed: true, + namespace, + }, }, + ...(secondaryAlias + ? { + aliases: { + [`${secondaryAlias}-default`]: { + is_write_index: false, + }, + }, + } + : {}), + }, + _meta: { + kibana: { version: '8.8.0' }, + managed: true, + namespace, }, }; }; @@ -473,14 +471,12 @@ describe('Alerts Service', () => { expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(1); expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledWith({ name: existingIndexTemplate.name, - body: { - ...existingIndexTemplate.index_template, - template: { - ...existingIndexTemplate.index_template.template, - settings: { - ...existingIndexTemplate.index_template.template?.settings, - 'index.mapping.total_fields.limit': 2500, - }, + ...existingIndexTemplate.index_template, + template: { + ...existingIndexTemplate.index_template.template, + settings: { + ...existingIndexTemplate.index_template.template?.settings, + 'index.mapping.total_fields.limit': 2500, }, }, }); @@ -558,11 +554,9 @@ describe('Alerts Service', () => { } else { expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -624,11 +618,9 @@ describe('Alerts Service', () => { } else { expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -686,11 +678,9 @@ describe('Alerts Service', () => { } else { expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -731,11 +721,9 @@ describe('Alerts Service', () => { } else { expect(clusterClient.indices.create).toHaveBeenNthCalledWith(1, { index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -798,11 +786,9 @@ describe('Alerts Service', () => { } else { expect(clusterClient.indices.create).toHaveBeenNthCalledWith(2, { index: '.internal.alerts-test.alerts-another-namespace-000001', - body: { - aliases: { - '.alerts-test.alerts-another-namespace': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-another-namespace': { + is_write_index: true, }, }, }); @@ -855,11 +841,9 @@ describe('Alerts Service', () => { expect(clusterClient.indices.putMapping).toHaveBeenCalledTimes(2); expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -891,46 +875,44 @@ describe('Alerts Service', () => { const template = { name: `.alerts-empty.alerts-default-index-template`, - body: { - index_patterns: useDataStreamForAlerts - ? [`.alerts-empty.alerts-default`] - : [ - `.internal.alerts-empty.alerts-default-*`, - `.reindexed-v8-internal.alerts-empty.alerts-default-*`, - ], - composed_of: ['.alerts-framework-mappings'], - ...(useDataStreamForAlerts ? { data_stream: { hidden: true } } : {}), - priority: 7, - template: { - settings: { - auto_expand_replicas: '0-1', - hidden: true, - ...(useDataStreamForAlerts - ? {} - : { - 'index.lifecycle': { - name: '.alerts-ilm-policy', - rollover_alias: `.alerts-empty.alerts-default`, - }, - }), - 'index.mapping.ignore_malformed': true, - 'index.mapping.total_fields.limit': 2500, - }, - mappings: { - _meta: { - kibana: { version: '8.8.0' }, - managed: true, - namespace: 'default', - }, - dynamic: false, - }, + index_patterns: useDataStreamForAlerts + ? [`.alerts-empty.alerts-default`] + : [ + `.internal.alerts-empty.alerts-default-*`, + `.reindexed-v8-internal.alerts-empty.alerts-default-*`, + ], + composed_of: ['.alerts-framework-mappings'], + ...(useDataStreamForAlerts ? { data_stream: { hidden: true } } : {}), + priority: 7, + template: { + settings: { + auto_expand_replicas: '0-1', + hidden: true, + ...(useDataStreamForAlerts + ? {} + : { + 'index.lifecycle': { + name: '.alerts-ilm-policy', + rollover_alias: `.alerts-empty.alerts-default`, + }, + }), + 'index.mapping.ignore_malformed': true, + 'index.mapping.total_fields.limit': 2500, }, - _meta: { - kibana: { version: '8.8.0' }, - managed: true, - namespace: 'default', + mappings: { + _meta: { + kibana: { version: '8.8.0' }, + managed: true, + namespace: 'default', + }, + dynamic: false, }, }, + _meta: { + kibana: { version: '8.8.0' }, + managed: true, + namespace: 'default', + }, }; expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledWith(template); @@ -944,11 +926,9 @@ describe('Alerts Service', () => { } else { expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-empty.alerts-default-000001', - body: { - aliases: { - '.alerts-empty.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-empty.alerts-default': { + is_write_index: true, }, }, }); diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/default_lifecycle_policy.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/default_lifecycle_policy.ts index 67230f1c35da0..e6717f408b342 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/default_lifecycle_policy.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/default_lifecycle_policy.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { IlmPolicy } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { IlmPolicy } from '@elastic/elasticsearch/lib/api/types'; /** * Default alert index ILM policy diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_concrete_write_index.test.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_concrete_write_index.test.ts index f8e2f8c089529..2683007ca86f4 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_concrete_write_index.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_concrete_write_index.test.ts @@ -6,7 +6,7 @@ */ import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; import { errors as EsErrors } from '@elastic/elasticsearch'; -import { IndicesGetDataStreamResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { IndicesGetDataStreamResponse } from '@elastic/elasticsearch/lib/api/types'; import { createConcreteWriteIndex, setConcreteWriteIndex } from './create_concrete_write_index'; import { getDataStreamAdapter } from './data_stream_adapter'; @@ -95,11 +95,9 @@ describe('createConcreteWriteIndex', () => { } else { expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -309,11 +307,9 @@ describe('createConcreteWriteIndex', () => { } else { expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -359,11 +355,9 @@ describe('createConcreteWriteIndex', () => { if (!useDataStream) { expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -399,11 +393,9 @@ describe('createConcreteWriteIndex', () => { if (!useDataStream) { expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -631,11 +623,9 @@ describe('createConcreteWriteIndex', () => { } else { expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -670,11 +660,9 @@ describe('createConcreteWriteIndex', () => { } else { expect(clusterClient.indices.create).toHaveBeenCalledWith({ index: '.internal.alerts-test.alerts-default-000001', - body: { - aliases: { - '.alerts-test.alerts-default': { - is_write_index: true, - }, + aliases: { + '.alerts-test.alerts-default': { + is_write_index: true, }, }, }); @@ -756,23 +744,21 @@ describe('setConcreteWriteIndex', () => { 'Attempting to set index: .internal.alerts-test.alerts-default-000004 as the write index for alias: .alerts-test.alerts-default.' ); expect(clusterClient.indices.updateAliases).toHaveBeenCalledWith({ - body: { - actions: [ - { - remove: { - alias: '.alerts-test.alerts-default', - index: '.internal.alerts-test.alerts-default-000004', - }, + actions: [ + { + remove: { + alias: '.alerts-test.alerts-default', + index: '.internal.alerts-test.alerts-default-000004', }, - { - add: { - alias: '.alerts-test.alerts-default', - index: '.internal.alerts-test.alerts-default-000004', - is_write_index: true, - }, + }, + { + add: { + alias: '.alerts-test.alerts-default', + index: '.internal.alerts-test.alerts-default-000004', + is_write_index: true, }, - ], - }, + }, + ], }); expect(logger.info).toHaveBeenCalledWith( 'Successfully set index: .internal.alerts-test.alerts-default-000004 as the write index for alias: .alerts-test.alerts-default.' diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_concrete_write_index.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_concrete_write_index.ts index cc298ed3cd7d2..7bb7a9d2a76bb 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_concrete_write_index.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_concrete_write_index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { IndicesSimulateIndexTemplateResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { IndicesSimulateIndexTemplateResponse } from '@elastic/elasticsearch/lib/api/types'; import { Logger, ElasticsearchClient } from '@kbn/core/server'; import { get, sortBy } from 'lodash'; import { IIndexPatternString } from '../resource_installer_utils'; @@ -45,7 +45,7 @@ const updateTotalFieldLimitSetting = async ({ () => esClient.indices.putSettings({ index, - body: { 'index.mapping.total_fields.limit': totalFieldsLimit }, + settings: { 'index.mapping.total_fields.limit': totalFieldsLimit }, }), { logger } ); @@ -90,7 +90,7 @@ const updateUnderlyingMapping = async ({ try { await retryTransientEsErrors( - () => esClient.indices.putMapping({ index, body: simulatedMapping }), + () => esClient.indices.putMapping({ index, ...simulatedMapping }), { logger } ); @@ -183,18 +183,16 @@ export async function setConcreteWriteIndex(opts: SetConcreteWriteIndexOpts) { await retryTransientEsErrors( () => esClient.indices.updateAliases({ - body: { - actions: [ - { remove: { index: concreteIndex.index, alias: concreteIndex.alias } }, - { - add: { - index: concreteIndex.index, - alias: concreteIndex.alias, - is_write_index: true, - }, + actions: [ + { remove: { index: concreteIndex.index, alias: concreteIndex.alias } }, + { + add: { + index: concreteIndex.index, + alias: concreteIndex.alias, + is_write_index: true, }, - ], - }, + }, + ], }), { logger } ); diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_component_template.test.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_component_template.test.ts index 3a1d490afe9d6..e1ea7a3e519da 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_component_template.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_component_template.test.ts @@ -5,6 +5,7 @@ * 2.0. */ import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; +import { ClusterPutComponentTemplateRequest } from '@elastic/elasticsearch/lib/api/types'; import { errors as EsErrors } from '@elastic/elasticsearch'; import { createOrUpdateComponentTemplate } from './create_or_update_component_template'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; @@ -13,7 +14,7 @@ const randomDelayMultiplier = 0.01; const logger = loggingSystemMock.createLogger(); const clusterClient = elasticsearchServiceMock.createClusterClient().asInternalUser; -const ComponentTemplate = { +const ComponentTemplate: ClusterPutComponentTemplateRequest = { name: 'test-mappings', _meta: { managed: true, @@ -176,14 +177,12 @@ describe('createOrUpdateComponentTemplate', () => { expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(1); expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledWith({ name: existingIndexTemplate.name, - body: { - ...existingIndexTemplate.index_template, - template: { - ...existingIndexTemplate.index_template.template, - settings: { - ...existingIndexTemplate.index_template.template?.settings, - 'index.mapping.total_fields.limit': 2500, - }, + ...existingIndexTemplate.index_template, + template: { + ...existingIndexTemplate.index_template.template, + settings: { + ...existingIndexTemplate.index_template.template?.settings, + 'index.mapping.total_fields.limit': 2500, }, }, }); @@ -282,14 +281,12 @@ describe('createOrUpdateComponentTemplate', () => { expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(1); expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledWith({ name: existingIndexTemplate.name, - body: { - ...existingIndexTemplate.index_template, - template: { - ...existingIndexTemplate.index_template.template, - settings: { - ...existingIndexTemplate.index_template.template?.settings, - 'index.mapping.total_fields.limit': 2500, - }, + ...existingIndexTemplate.index_template, + template: { + ...existingIndexTemplate.index_template.template, + settings: { + ...existingIndexTemplate.index_template.template?.settings, + 'index.mapping.total_fields.limit': 2500, }, }, }); diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_component_template.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_component_template.ts index 118ad5de97198..14c2b6876071a 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_component_template.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_component_template.ts @@ -8,7 +8,7 @@ import { ClusterPutComponentTemplateRequest, IndicesGetIndexTemplateIndexTemplateItem, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { Logger, ElasticsearchClient } from '@kbn/core/server'; import { asyncForEach } from '@kbn/std'; import { retryTransientEsErrors } from './retry_transient_es_errors'; @@ -50,14 +50,12 @@ const getIndexTemplatesUsingComponentTemplate = async ( () => esClient.indices.putIndexTemplate({ name: template.name, - body: { - ...template.index_template, - template: { - ...template.index_template.template, - settings: { - ...template.index_template.template?.settings, - 'index.mapping.total_fields.limit': totalFieldsLimit, - }, + ...template.index_template, + template: { + ...template.index_template.template, + settings: { + ...template.index_template.template?.settings, + 'index.mapping.total_fields.limit': totalFieldsLimit, }, }, }), diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_ilm_policy.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_ilm_policy.ts index 4ba14dbe3956b..aabdfbf5dde52 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_ilm_policy.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_ilm_policy.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { IlmPolicy } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { IlmPolicy } from '@elastic/elasticsearch/lib/api/types'; import { Logger, ElasticsearchClient } from '@kbn/core/server'; import { retryTransientEsErrors } from './retry_transient_es_errors'; import { DataStreamAdapter } from './data_stream_adapter'; diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_index_template.test.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_index_template.test.ts index 85113b768860a..b130976f6bcb0 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_index_template.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_index_template.test.ts @@ -16,44 +16,42 @@ const clusterClient = elasticsearchServiceMock.createClusterClient().asInternalU const IndexTemplate = (namespace: string = 'default', useDataStream: boolean = false) => ({ name: `.alerts-test.alerts-${namespace}-index-template`, - body: { - _meta: { - kibana: { - version: '8.6.1', - }, - managed: true, - namespace, + _meta: { + kibana: { + version: '8.6.1', }, - composed_of: ['mappings1', 'framework-mappings'], - index_patterns: [`.internal.alerts-test.alerts-${namespace}-*`], - template: { - mappings: { - _meta: { - kibana: { - version: '8.6.1', - }, - managed: true, - namespace, + managed: true, + namespace, + }, + composed_of: ['mappings1', 'framework-mappings'], + index_patterns: [`.internal.alerts-test.alerts-${namespace}-*`], + template: { + mappings: { + _meta: { + kibana: { + version: '8.6.1', }, - dynamic: false, - }, - settings: { - auto_expand_replicas: '0-1', - hidden: true, - ...(useDataStream - ? {} - : { - 'index.lifecycle': { - name: 'test-ilm-policy', - rollover_alias: `.alerts-test.alerts-${namespace}`, - }, - }), - 'index.mapping.ignore_malformed': true, - 'index.mapping.total_fields.limit': 2500, + managed: true, + namespace, }, + dynamic: false, + }, + settings: { + auto_expand_replicas: '0-1', + hidden: true, + ...(useDataStream + ? {} + : { + 'index.lifecycle': { + name: 'test-ilm-policy', + rollover_alias: `.alerts-test.alerts-${namespace}`, + }, + }), + 'index.mapping.ignore_malformed': true, + 'index.mapping.total_fields.limit': 2500, }, - priority: namespace.length, }, + priority: namespace.length, }); const SimulateTemplateResponse = { diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_index_template.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_index_template.ts index 0a1b4951bcc9a..d54d9cd09572a 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_index_template.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_index_template.ts @@ -9,7 +9,7 @@ import { IndicesPutIndexTemplateRequest, MappingTypeMapping, Metadata, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { Logger, ElasticsearchClient } from '@kbn/core/server'; import { isEmpty } from 'lodash'; import { IIndexPatternString } from '../resource_installer_utils'; @@ -57,42 +57,40 @@ export const getIndexTemplate = ({ return { name: indexPatterns.template, - body: { - ...(dataStreamFields.data_stream ? { data_stream: dataStreamFields.data_stream } : {}), - index_patterns: dataStreamFields.index_patterns, - composed_of: componentTemplateRefs, - template: { - settings: { - auto_expand_replicas: '0-1', - hidden: true, - ...(dataStreamAdapter.isUsingDataStreams() - ? {} - : { - 'index.lifecycle': indexLifecycle, - }), - 'index.mapping.ignore_malformed': true, - 'index.mapping.total_fields.limit': totalFieldsLimit, - }, - mappings: { - dynamic: false, - _meta: indexMetadata, - }, - ...(indexPatterns.secondaryAlias - ? { - aliases: { - [indexPatterns.secondaryAlias]: { - is_write_index: false, - }, - }, - } - : {}), + ...(dataStreamFields.data_stream ? { data_stream: dataStreamFields.data_stream } : {}), + index_patterns: dataStreamFields.index_patterns, + composed_of: componentTemplateRefs, + template: { + settings: { + auto_expand_replicas: '0-1', + hidden: true, + ...(dataStreamAdapter.isUsingDataStreams() + ? {} + : { + 'index.lifecycle': indexLifecycle, + }), + 'index.mapping.ignore_malformed': true, + 'index.mapping.total_fields.limit': totalFieldsLimit, }, - _meta: indexMetadata, - - // By setting the priority to namespace.length, we ensure that if one namespace is a prefix of another namespace - // then newly created indices will use the matching template with the *longest* namespace - priority: namespace.length, + mappings: { + dynamic: false, + _meta: indexMetadata, + }, + ...(indexPatterns.secondaryAlias + ? { + aliases: { + [indexPatterns.secondaryAlias]: { + is_write_index: false, + }, + }, + } + : {}), }, + _meta: indexMetadata, + + // By setting the priority to namespace.length, we ensure that if one namespace is a prefix of another namespace + // then newly created indices will use the matching template with the *longest* namespace + priority: namespace.length, }; }; diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/data_stream_adapter.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/data_stream_adapter.ts index a4805cd95c5ff..5293cc73c1100 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/data_stream_adapter.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/data_stream_adapter.ts @@ -208,11 +208,9 @@ async function createAliasStream(opts: CreateConcreteWriteIndexOpts): Promise esClient.indices.create({ index: indexPatterns.name, - body: { - aliases: { - [indexPatterns.alias]: { - is_write_index: true, - }, + aliases: { + [indexPatterns.alias]: { + is_write_index: true, }, }, }), diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/set_alerts_to_untracked.test.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/set_alerts_to_untracked.test.ts index 003673f9fdb92..5c911ed35a2e7 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/set_alerts_to_untracked.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/set_alerts_to_untracked.test.ts @@ -59,42 +59,45 @@ describe('setAlertsToUntracked()', () => { Array [ Object { "allow_no_indices": true, - "body": Object { - "conflicts": "proceed", - "query": Object { - "bool": Object { - "must": Array [ - Object { - "term": Object { - "kibana.alert.status": Object { - "value": "active", - }, + "conflicts": "proceed", + "index": Array [ + "test-index", + ], + "query": Object { + "bool": Object { + "must": Array [ + Object { + "term": Object { + "kibana.alert.status": Object { + "value": "active", }, }, - Object { - "bool": Object { - "should": Array [ - Object { - "term": Object { - "kibana.alert.rule.uuid": Object { - "value": "test-rule", - }, + }, + Object { + "bool": Object { + "should": Array [ + Object { + "term": Object { + "kibana.alert.rule.uuid": Object { + "value": "test-rule", }, }, - ], - }, + }, + ], }, - Object { - "bool": Object { - "should": Array [], - }, + }, + Object { + "bool": Object { + "should": Array [], }, - ], - }, + }, + ], }, - "script": Object { - "lang": "painless", - "source": " + }, + "refresh": true, + "script": Object { + "lang": "painless", + "source": " if (!ctx._source.containsKey('kibana.alert.status') || ctx._source['kibana.alert.status'].empty) { ctx._source.kibana.alert.status = 'untracked'; ctx._source.kibana.alert.end = '2023-03-28T22:27:28.159Z'; @@ -104,12 +107,7 @@ describe('setAlertsToUntracked()', () => { ctx._source['kibana.alert.end'] = '2023-03-28T22:27:28.159Z'; ctx._source['kibana.alert.time_range'].lte = '2023-03-28T22:27:28.159Z'; }", - }, }, - "index": Array [ - "test-index", - ], - "refresh": true, }, ] `); @@ -128,42 +126,45 @@ describe('setAlertsToUntracked()', () => { Array [ Object { "allow_no_indices": true, - "body": Object { - "conflicts": "proceed", - "query": Object { - "bool": Object { - "must": Array [ - Object { - "term": Object { - "kibana.alert.status": Object { - "value": "active", - }, + "conflicts": "proceed", + "index": Array [ + "test-index", + ], + "query": Object { + "bool": Object { + "must": Array [ + Object { + "term": Object { + "kibana.alert.status": Object { + "value": "active", }, }, - Object { - "bool": Object { - "should": Array [], - }, + }, + Object { + "bool": Object { + "should": Array [], }, - Object { - "bool": Object { - "should": Array [ - Object { - "term": Object { - "kibana.alert.uuid": Object { - "value": "test-alert", - }, + }, + Object { + "bool": Object { + "should": Array [ + Object { + "term": Object { + "kibana.alert.uuid": Object { + "value": "test-alert", }, }, - ], - }, + }, + ], }, - ], - }, + }, + ], }, - "script": Object { - "lang": "painless", - "source": " + }, + "refresh": true, + "script": Object { + "lang": "painless", + "source": " if (!ctx._source.containsKey('kibana.alert.status') || ctx._source['kibana.alert.status'].empty) { ctx._source.kibana.alert.status = 'untracked'; ctx._source.kibana.alert.end = '2023-03-28T22:27:28.159Z'; @@ -173,12 +174,7 @@ describe('setAlertsToUntracked()', () => { ctx._source['kibana.alert.end'] = '2023-03-28T22:27:28.159Z'; ctx._source['kibana.alert.time_range'].lte = '2023-03-28T22:27:28.159Z'; }", - }, }, - "index": Array [ - "test-index", - ], - "refresh": true, }, ] `); @@ -457,63 +453,59 @@ describe('setAlertsToUntracked()', () => { expect(clusterClient.updateByQuery).toHaveBeenCalledWith( expect.objectContaining({ - body: expect.objectContaining({ - query: { - bool: { - must: [ - { - term: { - 'kibana.alert.status': { - value: 'active', // This has to be active - }, + query: { + bool: { + must: [ + { + term: { + 'kibana.alert.status': { + value: 'active', // This has to be active }, }, - ], - filter: [ - { - bool: { - must: { - term: { - 'kibana.alert.rule.name': 'test', - }, + }, + ], + filter: [ + { + bool: { + must: { + term: { + 'kibana.alert.rule.name': 'test', }, }, }, - ], - }, + }, + ], }, - }), + }, }) ); expect(clusterClient.search).toHaveBeenCalledWith( expect.objectContaining({ - body: expect.objectContaining({ - query: { - bool: { - must: [ - { - term: { - 'kibana.alert.status': { - value: 'untracked', // This has to be untracked - }, + query: { + bool: { + must: [ + { + term: { + 'kibana.alert.status': { + value: 'untracked', // This has to be untracked }, }, - ], - filter: [ - { - bool: { - must: { - term: { - 'kibana.alert.rule.name': 'test', - }, + }, + ], + filter: [ + { + bool: { + must: { + term: { + 'kibana.alert.rule.name': 'test', }, }, }, - ], - }, + }, + ], }, - }), + }, }) ); @@ -596,32 +588,30 @@ describe('setAlertsToUntracked()', () => { expect(clusterClient.updateByQuery).toHaveBeenCalledWith( expect.objectContaining({ - body: expect.objectContaining({ - query: { - bool: { - must: [ - { - term: { - 'kibana.alert.status': { - value: 'active', // This has to be active - }, + query: { + bool: { + must: [ + { + term: { + 'kibana.alert.status': { + value: 'active', // This has to be active }, }, - ], - filter: [ - { - bool: { - must: { - term: { - 'kibana.alert.rule.name': 'test', - }, + }, + ], + filter: [ + { + bool: { + must: { + term: { + 'kibana.alert.rule.name': 'test', }, }, }, - ], - }, + }, + ], }, - }), + }, }) ); diff --git a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/set_alerts_to_untracked.ts b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/set_alerts_to_untracked.ts index 89c8d671de6a0..6389f4e6639db 100644 --- a/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/set_alerts_to_untracked.ts +++ b/x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/set_alerts_to_untracked.ts @@ -20,7 +20,7 @@ import { ALERT_UUID, AlertStatus, } from '@kbn/rule-data-utils'; -import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import type { RulesClientContext } from '../../rules_client'; import { AlertingAuthorizationEntity } from '../../authorization/types'; @@ -125,14 +125,12 @@ const ensureAuthorizedToUntrack = async (params: SetAlertsToUntrackedParamsWithD const response = await esClient.search({ index: indices, allow_no_indices: true, - body: { - size: 0, - query: getUntrackQuery(params, ALERT_STATUS_ACTIVE), - aggs: { - ruleTypeIds: { - terms: { field: ALERT_RULE_TYPE_ID }, - aggs: { consumers: { terms: { field: ALERT_RULE_CONSUMER } } }, - }, + size: 0, + query: getUntrackQuery(params, ALERT_STATUS_ACTIVE), + aggs: { + ruleTypeIds: { + terms: { field: ALERT_RULE_TYPE_ID }, + aggs: { consumers: { terms: { field: ALERT_RULE_CONSUMER } } }, }, }, }); @@ -218,14 +216,12 @@ export async function setAlertsToUntracked( const response = await esClient.updateByQuery({ index: indices, allow_no_indices: true, - body: { - conflicts: 'proceed', - script: { - source: getUntrackUpdatePainlessScript(new Date()), - lang: 'painless', - }, - query: getUntrackQuery(params, ALERT_STATUS_ACTIVE), + conflicts: 'proceed', + script: { + source: getUntrackUpdatePainlessScript(new Date()), + lang: 'painless', }, + query: getUntrackQuery(params, ALERT_STATUS_ACTIVE), refresh: true, }); @@ -259,11 +255,9 @@ export async function setAlertsToUntracked( const searchResponse = await esClient.search({ index: indices, allow_no_indices: true, - body: { - _source: [ALERT_RULE_UUID, ALERT_UUID], - size: total, - query: getUntrackQuery(params, ALERT_STATUS_UNTRACKED), - }, + _source: [ALERT_RULE_UUID, ALERT_UUID], + size: total, + query: getUntrackQuery(params, ALERT_STATUS_UNTRACKED), }); return searchResponse.hits.hits.map((hit) => hit._source) as UntrackedAlertsResult; diff --git a/x-pack/platform/plugins/shared/alerting/server/application/rule/methods/aggregate/types/index.ts b/x-pack/platform/plugins/shared/alerting/server/application/rule/methods/aggregate/types/index.ts index e146928efcfff..804ed47227e99 100644 --- a/x-pack/platform/plugins/shared/alerting/server/application/rule/methods/aggregate/types/index.ts +++ b/x-pack/platform/plugins/shared/alerting/server/application/rule/methods/aggregate/types/index.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import type { AggregationsAggregationContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { AggregationsAggregationContainer } from '@elastic/elasticsearch/lib/api/types'; import { TypeOf } from '@kbn/config-schema'; import { KueryNode } from '@kbn/es-query'; import { aggregateOptionsSchema } from '../schemas'; diff --git a/x-pack/platform/plugins/shared/alerting/server/application/rule/methods/aggregate/validation/validate_rule_aggregation_fields.ts b/x-pack/platform/plugins/shared/alerting/server/application/rule/methods/aggregate/validation/validate_rule_aggregation_fields.ts index 6b61d7aa5c324..df35050455a82 100644 --- a/x-pack/platform/plugins/shared/alerting/server/application/rule/methods/aggregate/validation/validate_rule_aggregation_fields.ts +++ b/x-pack/platform/plugins/shared/alerting/server/application/rule/methods/aggregate/validation/validate_rule_aggregation_fields.ts @@ -6,7 +6,7 @@ */ import Boom from '@hapi/boom'; -import type { AggregationsAggregationContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { AggregationsAggregationContainer } from '@elastic/elasticsearch/lib/api/types'; const ALLOW_FIELDS = [ 'alert.attributes.executionStatus.status', diff --git a/x-pack/platform/plugins/shared/alerting/server/authorization/alerting_authorization_kuery.ts b/x-pack/platform/plugins/shared/alerting/server/authorization/alerting_authorization_kuery.ts index 666059c7a7b47..744c2db2f97a0 100644 --- a/x-pack/platform/plugins/shared/alerting/server/authorization/alerting_authorization_kuery.ts +++ b/x-pack/platform/plugins/shared/alerting/server/authorization/alerting_authorization_kuery.ts @@ -8,7 +8,7 @@ import { remove } from 'lodash'; import { EsQueryConfig, nodeBuilder, toElasticsearchQuery, KueryNode } from '@kbn/es-query'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { AuthorizedRuleTypes } from './alerting_authorization'; export enum AlertingAuthorizationFilterType { diff --git a/x-pack/platform/plugins/shared/alerting/server/invalidate_pending_api_keys/task.ts b/x-pack/platform/plugins/shared/alerting/server/invalidate_pending_api_keys/task.ts index 18364299b99a6..b2e992623a643 100644 --- a/x-pack/platform/plugins/shared/alerting/server/invalidate_pending_api_keys/task.ts +++ b/x-pack/platform/plugins/shared/alerting/server/invalidate_pending_api_keys/task.ts @@ -21,7 +21,7 @@ import { import { AggregationsStringTermsBucketKeys, AggregationsTermsAggregateBase, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { ACTION_TASK_PARAMS_SAVED_OBJECT_TYPE } from '@kbn/actions-plugin/server/constants/saved_objects'; import { InvalidateAPIKeyResult } from '../rules_client'; import { AlertingConfig } from '../config'; diff --git a/x-pack/platform/plugins/shared/alerting/server/lib/convert_es_sort_to_event_log_sort.ts b/x-pack/platform/plugins/shared/alerting/server/lib/convert_es_sort_to_event_log_sort.ts index 9adb2d0a21e69..b625791031d89 100644 --- a/x-pack/platform/plugins/shared/alerting/server/lib/convert_es_sort_to_event_log_sort.ts +++ b/x-pack/platform/plugins/shared/alerting/server/lib/convert_es_sort_to_event_log_sort.ts @@ -5,11 +5,7 @@ * 2.0. */ -import type { - Sort, - FieldSort, - SortCombinations, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { Sort, FieldSort, SortCombinations } from '@elastic/elasticsearch/lib/api/types'; const getFormattedSort = (sort: SortCombinations) => { if (typeof sort === 'string') { diff --git a/x-pack/platform/plugins/shared/alerting/server/lib/get_execution_log_aggregation.ts b/x-pack/platform/plugins/shared/alerting/server/lib/get_execution_log_aggregation.ts index 30f495efbf087..8f24c1acb5c12 100644 --- a/x-pack/platform/plugins/shared/alerting/server/lib/get_execution_log_aggregation.ts +++ b/x-pack/platform/plugins/shared/alerting/server/lib/get_execution_log_aggregation.ts @@ -7,7 +7,7 @@ import { i18n } from '@kbn/i18n'; import { KueryNode } from '@kbn/es-query'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import Boom from '@hapi/boom'; import { flatMap, get, isEmpty } from 'lodash'; import { AggregateEventsBySavedObjectResult } from '@kbn/event-log-plugin/server'; diff --git a/x-pack/platform/plugins/shared/alerting/server/lib/wrap_scoped_cluster_client.test.ts b/x-pack/platform/plugins/shared/alerting/server/lib/wrap_scoped_cluster_client.test.ts index e287712104949..1ed0d1ad7381f 100644 --- a/x-pack/platform/plugins/shared/alerting/server/lib/wrap_scoped_cluster_client.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/lib/wrap_scoped_cluster_client.test.ts @@ -11,7 +11,7 @@ import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; import { createWrappedScopedClusterClientFactory } from './wrap_scoped_cluster_client'; const esQuery = { - body: { query: { bool: { filter: { range: { '@timestamp': { gte: 0 } } } } } }, + query: { bool: { filter: { range: { '@timestamp': { gte: 0 } } } } }, }; const eqlQuery = { index: 'foo', @@ -20,9 +20,7 @@ const eqlQuery = { const esqlQueryRequest = { method: 'POST', path: '/_query', - body: { - query: 'from .kibana_task_manager', - }, + query: 'from .kibana_task_manager', }; let logger = loggingSystemMock.create().get(); @@ -73,7 +71,7 @@ describe('wrapScopedClusterClient', () => { expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - `executing query for rule .test-rule-type:abcdefg in space my-space - {\"body\":{\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}}} - with options {} and 5000ms requestTimeout` + `executing query for rule .test-rule-type:abcdefg in space my-space - {\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}} - with options {} and 5000ms requestTimeout` ); expect(loggingSystemMock.collect(logger).trace[0][0]).toEqual( `result of executing query for rule .test-rule-type:abcdefg in space my-space: {\"body\":{},\"statusCode\":200,\"headers\":{\"x-elastic-product\":\"Elasticsearch\"},\"warnings\":[],\"meta\":{}}` @@ -102,7 +100,7 @@ describe('wrapScopedClusterClient', () => { expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - `executing query for rule .test-rule-type:abcdefg in space my-space - {\"body\":{\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}}} - with options {} and 5000ms requestTimeout` + `executing query for rule .test-rule-type:abcdefg in space my-space - {\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}} - with options {} and 5000ms requestTimeout` ); expect(loggingSystemMock.collect(logger).trace[0][0]).toEqual( `result of executing query for rule .test-rule-type:abcdefg in space my-space: {\"body\":{},\"statusCode\":200,\"headers\":{\"x-elastic-product\":\"Elasticsearch\"},\"warnings\":[],\"meta\":{}}` @@ -136,7 +134,7 @@ describe('wrapScopedClusterClient', () => { expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - `executing query for rule .test-rule-type:abcdefg in space my-space - {\"body\":{\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}}} - with options {\"ignore\":[404],\"requestTimeout\":10000} and 5000ms requestTimeout` + `executing query for rule .test-rule-type:abcdefg in space my-space - {\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}} - with options {\"ignore\":[404],\"requestTimeout\":10000} and 5000ms requestTimeout` ); expect(loggingSystemMock.collect(logger).trace[0][0]).toEqual( `result of executing query for rule .test-rule-type:abcdefg in space my-space: {\"body\":{},\"statusCode\":200,\"headers\":{\"x-elastic-product\":\"Elasticsearch\"},\"warnings\":[],\"meta\":{}}` @@ -161,11 +159,11 @@ describe('wrapScopedClusterClient', () => { ).rejects.toThrowErrorMatchingInlineSnapshot(`"something went wrong!"`); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - `executing query for rule .test-rule-type:abcdefg in space my-space - {\"body\":{\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}}} - with options {}` + `executing query for rule .test-rule-type:abcdefg in space my-space - {\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}} - with options {}` ); expect(logger.trace).not.toHaveBeenCalled(); expect(logger.warn).toHaveBeenCalledWith( - `executing query for rule .test-rule-type:abcdefg in space my-space - {\"body\":{\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}}} - with options {}` + `executing query for rule .test-rule-type:abcdefg in space my-space - {\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}} - with options {}` ); }); @@ -195,7 +193,7 @@ describe('wrapScopedClusterClient', () => { expect(stats.esSearchDurationMs).toEqual(0); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - `executing query for rule .test-rule-type:abcdefg in space my-space - {\"body\":{\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}}} - with options {}` + `executing query for rule .test-rule-type:abcdefg in space my-space - {\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}} - with options {}` ); expect(loggingSystemMock.collect(logger).trace[0][0]).toEqual( `result of executing query for rule .test-rule-type:abcdefg in space my-space: {}` @@ -230,7 +228,7 @@ describe('wrapScopedClusterClient', () => { expect(stats.esSearchDurationMs).toEqual(999); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - `executing query for rule .test-rule-type:abcdefg in space my-space - {\"body\":{\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}}} - with options {}` + `executing query for rule .test-rule-type:abcdefg in space my-space - {\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}} - with options {}` ); expect(loggingSystemMock.collect(logger).trace[0][0]).toEqual( `result of executing query for rule .test-rule-type:abcdefg in space my-space: {\"took\":333}` @@ -258,7 +256,7 @@ describe('wrapScopedClusterClient', () => { ); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - `executing query for rule .test-rule-type:abcdefg in space my-space - {\"body\":{\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}}} - with options {}` + `executing query for rule .test-rule-type:abcdefg in space my-space - {\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}} - with options {}` ); expect(logger.trace).not.toHaveBeenCalled(); expect(logger.warn).not.toHaveBeenCalled(); @@ -459,7 +457,7 @@ describe('wrapScopedClusterClient', () => { expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - 'executing ES|QL query for rule .test-rule-type:abcdefg in space my-space - {"method":"POST","path":"/_query","body":{"query":"from .kibana_task_manager"}} - with options {} and 5000ms requestTimeout' + 'executing ES|QL query for rule .test-rule-type:abcdefg in space my-space - {"method":"POST","path":"/_query","query":"from .kibana_task_manager"} - with options {} and 5000ms requestTimeout' ); expect(logger.warn).not.toHaveBeenCalled(); }); @@ -485,7 +483,7 @@ describe('wrapScopedClusterClient', () => { expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - 'executing ES|QL query for rule .test-rule-type:abcdefg in space my-space - {"method":"POST","path":"/_query","body":{"query":"from .kibana_task_manager"}} - with options {} and 5000ms requestTimeout' + 'executing ES|QL query for rule .test-rule-type:abcdefg in space my-space - {"method":"POST","path":"/_query","query":"from .kibana_task_manager"} - with options {} and 5000ms requestTimeout' ); expect(logger.warn).not.toHaveBeenCalled(); }); @@ -516,7 +514,7 @@ describe('wrapScopedClusterClient', () => { expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - 'executing ES|QL query for rule .test-rule-type:abcdefg in space my-space - {"method":"POST","path":"/_query","body":{"query":"from .kibana_task_manager"}} - with options {"ignore":[404],"requestTimeout":10000} and 5000ms requestTimeout' + 'executing ES|QL query for rule .test-rule-type:abcdefg in space my-space - {"method":"POST","path":"/_query","query":"from .kibana_task_manager"} - with options {"ignore":[404],"requestTimeout":10000} and 5000ms requestTimeout' ); expect(logger.warn).not.toHaveBeenCalled(); }); @@ -572,7 +570,7 @@ describe('wrapScopedClusterClient', () => { expect(stats.totalSearchDurationMs).toBeGreaterThan(-1); expect(loggingSystemMock.collect(logger).debug[0][0]).toEqual( - `executing ES|QL query for rule .test-rule-type:abcdefg in space my-space - {\"method\":\"POST\",\"path\":\"/_query\",\"body\":{\"query\":\"from .kibana_task_manager\"}} - with options {}` + `executing ES|QL query for rule .test-rule-type:abcdefg in space my-space - {\"method\":\"POST\",\"path\":\"/_query\",\"query\":\"from .kibana_task_manager\"} - with options {}` ); expect(logger.warn).not.toHaveBeenCalled(); }); diff --git a/x-pack/platform/plugins/shared/alerting/server/lib/wrap_scoped_cluster_client.ts b/x-pack/platform/plugins/shared/alerting/server/lib/wrap_scoped_cluster_client.ts index 3bf87b3653c5a..002895843bf48 100644 --- a/x-pack/platform/plugins/shared/alerting/server/lib/wrap_scoped_cluster_client.ts +++ b/x-pack/platform/plugins/shared/alerting/server/lib/wrap_scoped_cluster_client.ts @@ -23,7 +23,7 @@ import type { SearchRequest as SearchRequestWithBody, AggregationsAggregate, EqlSearchRequest as EqlSearchRequestWithBody, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import type { IScopedClusterClient, ElasticsearchClient, Logger } from '@kbn/core/server'; import { SearchMetrics, RuleInfo } from './types'; diff --git a/x-pack/platform/plugins/shared/alerting/server/monitoring/register_cluster_collector.ts b/x-pack/platform/plugins/shared/alerting/server/monitoring/register_cluster_collector.ts index 11832a5e5d00d..93fe8a44f1367 100644 --- a/x-pack/platform/plugins/shared/alerting/server/monitoring/register_cluster_collector.ts +++ b/x-pack/platform/plugins/shared/alerting/server/monitoring/register_cluster_collector.ts @@ -7,7 +7,7 @@ import type { AggregationsKeyedPercentiles, AggregationsPercentilesAggregateBase, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { MonitoringCollectionSetup } from '@kbn/monitoring-collection-plugin/server'; import { aggregateTaskOverduePercentilesForType } from '@kbn/task-manager-plugin/server'; import { CoreSetup } from '@kbn/core/server'; diff --git a/x-pack/platform/plugins/shared/alerting/server/routes/suggestions/values_suggestion_alerts.ts b/x-pack/platform/plugins/shared/alerting/server/routes/suggestions/values_suggestion_alerts.ts index 5ad7e7a8ac437..e9364df87b11c 100644 --- a/x-pack/platform/plugins/shared/alerting/server/routes/suggestions/values_suggestion_alerts.ts +++ b/x-pack/platform/plugins/shared/alerting/server/routes/suggestions/values_suggestion_alerts.ts @@ -12,7 +12,7 @@ import { getRequestAbortedSignal } from '@kbn/data-plugin/server'; import { termsAggSuggestions } from '@kbn/unified-search-plugin/server/autocomplete/terms_agg'; import type { ConfigSchema } from '@kbn/unified-search-plugin/server/config'; import { getKbnServerError, reportServerError } from '@kbn/kibana-utils-plugin/server'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { ALERT_RULE_CONSUMER, ALERT_RULE_TYPE_ID, SPACE_IDS } from '@kbn/rule-data-utils'; import { verifyAccessAndContext } from '../lib'; diff --git a/x-pack/platform/plugins/shared/alerting/server/routes/suggestions/values_suggestion_rules.ts b/x-pack/platform/plugins/shared/alerting/server/routes/suggestions/values_suggestion_rules.ts index 1f33cba025396..cb8d2d3a29c9d 100644 --- a/x-pack/platform/plugins/shared/alerting/server/routes/suggestions/values_suggestion_rules.ts +++ b/x-pack/platform/plugins/shared/alerting/server/routes/suggestions/values_suggestion_rules.ts @@ -14,7 +14,7 @@ import type { ConfigSchema } from '@kbn/unified-search-plugin/server/config'; import { UsageCounter } from '@kbn/usage-collection-plugin/server'; import { getKbnServerError, reportServerError } from '@kbn/kibana-utils-plugin/server'; import { ALERTING_CASES_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server/src/saved_objects_index_pattern'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { verifyAccessAndContext } from '../lib'; import { ILicenseState } from '../../lib'; diff --git a/x-pack/platform/plugins/shared/alerting/server/rules_client/methods/get_action_error_log.ts b/x-pack/platform/plugins/shared/alerting/server/rules_client/methods/get_action_error_log.ts index 4d71af6573b57..41c161071b1c5 100644 --- a/x-pack/platform/plugins/shared/alerting/server/rules_client/methods/get_action_error_log.ts +++ b/x-pack/platform/plugins/shared/alerting/server/rules_client/methods/get_action_error_log.ts @@ -6,7 +6,7 @@ */ import { KueryNode } from '@kbn/es-query'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { SanitizedRuleWithLegacyId } from '../../types'; import { convertEsSortToEventLogSort } from '../../lib'; import { diff --git a/x-pack/platform/plugins/shared/alerting/server/rules_client/methods/get_execution_log.ts b/x-pack/platform/plugins/shared/alerting/server/rules_client/methods/get_execution_log.ts index 95d41a02a685b..457dc33064229 100644 --- a/x-pack/platform/plugins/shared/alerting/server/rules_client/methods/get_execution_log.ts +++ b/x-pack/platform/plugins/shared/alerting/server/rules_client/methods/get_execution_log.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { KueryNode } from '@kbn/es-query'; import { SanitizedRuleWithLegacyId } from '../../types'; import { diff --git a/x-pack/platform/plugins/shared/alerting/server/rules_client/tests/get_execution_log.test.ts b/x-pack/platform/plugins/shared/alerting/server/rules_client/tests/get_execution_log.test.ts index 3a3f801dd9085..11882f1ea176f 100644 --- a/x-pack/platform/plugins/shared/alerting/server/rules_client/tests/get_execution_log.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/rules_client/tests/get_execution_log.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { RulesClient, ConstructorOptions } from '../rules_client'; import { savedObjectsClientMock, diff --git a/x-pack/platform/plugins/shared/alerting/server/task_runner/ad_hoc_task_runner.test.ts b/x-pack/platform/plugins/shared/alerting/server/task_runner/ad_hoc_task_runner.test.ts index 87bc14d496db8..ba9d78a7f3c9b 100644 --- a/x-pack/platform/plugins/shared/alerting/server/task_runner/ad_hoc_task_runner.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/task_runner/ad_hoc_task_runner.test.ts @@ -477,7 +477,7 @@ describe('Ad Hoc Task Runner', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { create: { _id: UUID, @@ -745,13 +745,13 @@ describe('Ad Hoc Task Runner', () => { const bulkCall = clusterClient.bulk.mock.calls[0][0]; // @ts-ignore - expect(bulkCall.body[1][TIMESTAMP]).toEqual(schedule4.runAt); + expect(bulkCall.operations[1][TIMESTAMP]).toEqual(schedule4.runAt); // @ts-ignore - expect(bulkCall.body[1][ALERT_START]).toEqual(schedule4.runAt); + expect(bulkCall.operations[1][ALERT_START]).toEqual(schedule4.runAt); // @ts-ignore - expect(bulkCall.body[1][ALERT_TIME_RANGE]).toEqual({ gte: schedule4.runAt }); + expect(bulkCall.operations[1][ALERT_TIME_RANGE]).toEqual({ gte: schedule4.runAt }); // @ts-ignore - expect(bulkCall.body[1][ALERT_RULE_EXECUTION_TIMESTAMP]).toEqual(DATE_1970); + expect(bulkCall.operations[1][ALERT_RULE_EXECUTION_TIMESTAMP]).toEqual(DATE_1970); expect(internalSavedObjectsRepository.update).toHaveBeenCalledWith( AD_HOC_RUN_SAVED_OBJECT_TYPE, @@ -852,13 +852,13 @@ describe('Ad Hoc Task Runner', () => { const bulkCall = clusterClient.bulk.mock.calls[0][0]; // @ts-ignore - expect(bulkCall.body[1][TIMESTAMP]).toEqual(schedule5.runAt); + expect(bulkCall.operations[1][TIMESTAMP]).toEqual(schedule5.runAt); // @ts-ignore - expect(bulkCall.body[1][ALERT_START]).toEqual(schedule5.runAt); + expect(bulkCall.operations[1][ALERT_START]).toEqual(schedule5.runAt); // @ts-ignore - expect(bulkCall.body[1][ALERT_TIME_RANGE]).toEqual({ gte: schedule5.runAt }); + expect(bulkCall.operations[1][ALERT_TIME_RANGE]).toEqual({ gte: schedule5.runAt }); // @ts-ignore - expect(bulkCall.body[1][ALERT_RULE_EXECUTION_TIMESTAMP]).toEqual(DATE_1970); + expect(bulkCall.operations[1][ALERT_RULE_EXECUTION_TIMESTAMP]).toEqual(DATE_1970); expect(internalSavedObjectsRepository.update).toHaveBeenCalledWith( AD_HOC_RUN_SAVED_OBJECT_TYPE, diff --git a/x-pack/platform/plugins/shared/alerting/server/task_runner/task_runner_alerts_client.test.ts b/x-pack/platform/plugins/shared/alerting/server/task_runner/task_runner_alerts_client.test.ts index 3d0cd5ab05059..2c8c7daf7f13a 100644 --- a/x-pack/platform/plugins/shared/alerting/server/task_runner/task_runner_alerts_client.test.ts +++ b/x-pack/platform/plugins/shared/alerting/server/task_runner/task_runner_alerts_client.test.ts @@ -593,7 +593,7 @@ describe('Task Runner', () => { index: '.alerts-test.alerts-default', refresh: 'wait_for', require_alias: !useDataStreamForAlerts, - body: [ + operations: [ { create: { _id: '5f6aa57d-3e22-484e-bae8-cbed868f4d28', diff --git a/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_alerts.ts b/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_alerts.ts index f5537687fd3dd..ae92255bd2cd4 100644 --- a/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_alerts.ts +++ b/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_alerts.ts @@ -8,7 +8,7 @@ import type { AggregationsTermsAggregateBase, AggregationsStringTermsBucketKeys, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { ElasticsearchClient, Logger } from '@kbn/core/server'; import { NUM_ALERTING_RULE_TYPES } from '../alerting_usage_collector'; @@ -38,16 +38,14 @@ export async function getTotalAlertsCountAggregations({ const query = { index: AAD_INDEX_PATTERN, size: 0, - body: { - query: { - match_all: {}, - }, - aggs: { - by_rule_type_id: { - terms: { - field: 'kibana.alert.rule.rule_type_id', - size: NUM_ALERTING_RULE_TYPES, - }, + query: { + match_all: {}, + }, + aggs: { + by_rule_type_id: { + terms: { + field: 'kibana.alert.rule.rule_type_id', + size: NUM_ALERTING_RULE_TYPES, }, }, }, diff --git a/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_event_log.ts b/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_event_log.ts index df76929ca5d50..b25b1e59f03af 100644 --- a/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_event_log.ts +++ b/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_event_log.ts @@ -14,7 +14,7 @@ import type { AggregationsTermsAggregateBase, AggregationsStringTermsBucketKeys, AggregationsBuckets, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { ElasticsearchClient, Logger } from '@kbn/core/server'; import { NUM_ALERTING_RULE_TYPES, @@ -136,21 +136,19 @@ export async function getExecutionsPerDayCount({ const query = { index: eventLogIndex, size: 0, - body: { - query: getProviderAndActionFilterForTimeRange('execute'), - aggs: { - ...eventLogAggs, - by_rule_type_id: { - terms: { - field: 'rule.category', - size: NUM_ALERTING_RULE_TYPES, - }, - aggs: eventLogAggs, + query: getProviderAndActionFilterForTimeRange('execute'), + aggs: { + ...eventLogAggs, + by_rule_type_id: { + terms: { + field: 'rule.category', + size: NUM_ALERTING_RULE_TYPES, }, - by_execution_status: { - terms: { - field: 'event.outcome', - }, + aggs: eventLogAggs, + }, + by_execution_status: { + terms: { + field: 'event.outcome', }, }, }, @@ -229,14 +227,12 @@ export async function getExecutionTimeoutsPerDayCount({ const query = { index: eventLogIndex, size: 0, - body: { - query: getProviderAndActionFilterForTimeRange('execute-timeout'), - aggs: { - by_rule_type_id: { - terms: { - field: 'rule.category', - size: NUM_ALERTING_RULE_TYPES, - }, + query: getProviderAndActionFilterForTimeRange('execute-timeout'), + aggs: { + by_rule_type_id: { + terms: { + field: 'rule.category', + size: NUM_ALERTING_RULE_TYPES, }, }, }, diff --git a/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_kibana.ts b/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_kibana.ts index 756512815d901..509035c5808b1 100644 --- a/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_kibana.ts +++ b/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_kibana.ts @@ -10,7 +10,7 @@ import type { AggregationsCardinalityAggregate, AggregationsTermsAggregateBase, AggregationsStringTermsBucketKeys, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { ElasticsearchClient, Logger, ISavedObjectsRepository } from '@kbn/core/server'; import { @@ -83,18 +83,17 @@ export async function getTotalCountAggregations({ const query = { index: alertIndex, size: 0, - body: { - query: { - bool: { - // Aggregate over all rule saved objects - filter: [{ term: { type: 'alert' } }], - }, + query: { + bool: { + // Aggregate over all rule saved objects + filter: [{ term: { type: 'alert' } }], }, - runtime_mappings: { - rule_action_count: { - type: 'long', - script: { - source: ` + }, + runtime_mappings: { + rule_action_count: { + type: 'long', + script: { + source: ` def alert = params._source['alert']; if (alert != null) { def actions = alert.actions; @@ -104,13 +103,13 @@ export async function getTotalCountAggregations({ emit(0); } }`, - }, }, - // Convert schedule interval duration string from rule saved object to interval in seconds - rule_schedule_interval: { - type: 'long', - script: { - source: ` + }, + // Convert schedule interval duration string from rule saved object to interval in seconds + rule_schedule_interval: { + type: 'long', + script: { + source: ` int parsed = 0; if (doc['alert.schedule.interval'].size() > 0) { def interval = doc['alert.schedule.interval'].value; @@ -140,13 +139,13 @@ export async function getTotalCountAggregations({ } emit(parsed); `, - }, }, - // Convert throttle interval duration string from rule saved object to interval in seconds - rule_throttle_interval: { - type: 'long', - script: { - source: ` + }, + // Convert throttle interval duration string from rule saved object to interval in seconds + rule_throttle_interval: { + type: 'long', + script: { + source: ` int parsed = 0; if (doc['alert.throttle'].size() > 0) { def throttle = doc['alert.throttle'].value; @@ -176,12 +175,12 @@ export async function getTotalCountAggregations({ } emit(parsed); `, - }, }, - rule_with_tags: { - type: 'long', - script: { - source: ` + }, + rule_with_tags: { + type: 'long', + script: { + source: ` def rule = params._source['alert']; if (rule != null && rule.tags != null) { if (rule.tags.size() > 0) { @@ -190,12 +189,12 @@ export async function getTotalCountAggregations({ emit(0); } }`, - }, }, - rule_snoozed: { - type: 'long', - script: { - source: ` + }, + rule_snoozed: { + type: 'long', + script: { + source: ` def rule = params._source['alert']; if (rule != null && rule.snoozeSchedule != null) { if (rule.snoozeSchedule.size() > 0) { @@ -204,23 +203,23 @@ export async function getTotalCountAggregations({ emit(0); } }`, - }, }, - rule_muted: { - type: 'long', - script: { - source: ` + }, + rule_muted: { + type: 'long', + script: { + source: ` if (doc['alert.muteAll'].value == true) { emit(1); } else { emit(0); }`, - }, }, - rule_with_muted_alerts: { - type: 'long', - script: { - source: ` + }, + rule_with_muted_alerts: { + type: 'long', + script: { + source: ` def rule = params._source['alert']; if (rule != null && rule.mutedInstanceIds != null) { if (rule.mutedInstanceIds.size() > 0) { @@ -229,64 +228,63 @@ export async function getTotalCountAggregations({ emit(0); } }`, - }, }, }, - aggs: { - by_rule_type_id: { - terms: { - field: 'alert.alertTypeId', - size: NUM_ALERTING_RULE_TYPES, - }, + }, + aggs: { + by_rule_type_id: { + terms: { + field: 'alert.alertTypeId', + size: NUM_ALERTING_RULE_TYPES, }, - max_throttle_time: { max: { field: 'rule_throttle_interval' } }, - min_throttle_time: { min: { field: 'rule_throttle_interval' } }, - avg_throttle_time: { avg: { field: 'rule_throttle_interval' } }, - max_interval_time: { max: { field: 'rule_schedule_interval' } }, - min_interval_time: { min: { field: 'rule_schedule_interval' } }, - avg_interval_time: { avg: { field: 'rule_schedule_interval' } }, - max_actions_count: { max: { field: 'rule_action_count' } }, - min_actions_count: { min: { field: 'rule_action_count' } }, - avg_actions_count: { avg: { field: 'rule_action_count' } }, - by_execution_status: { - terms: { - field: 'alert.executionStatus.status', - }, + }, + max_throttle_time: { max: { field: 'rule_throttle_interval' } }, + min_throttle_time: { min: { field: 'rule_throttle_interval' } }, + avg_throttle_time: { avg: { field: 'rule_throttle_interval' } }, + max_interval_time: { max: { field: 'rule_schedule_interval' } }, + min_interval_time: { min: { field: 'rule_schedule_interval' } }, + avg_interval_time: { avg: { field: 'rule_schedule_interval' } }, + max_actions_count: { max: { field: 'rule_action_count' } }, + min_actions_count: { min: { field: 'rule_action_count' } }, + avg_actions_count: { avg: { field: 'rule_action_count' } }, + by_execution_status: { + terms: { + field: 'alert.executionStatus.status', }, - by_notify_when: { - terms: { - field: 'alert.notifyWhen', - }, + }, + by_notify_when: { + terms: { + field: 'alert.notifyWhen', }, - connector_types_by_consumers: { - terms: { - field: 'alert.consumer', - }, - aggs: { - actions: { - nested: { - path: 'alert.actions', - }, - aggs: { - connector_types: { - terms: { - field: 'alert.actions.actionTypeId', - }, + }, + connector_types_by_consumers: { + terms: { + field: 'alert.consumer', + }, + aggs: { + actions: { + nested: { + path: 'alert.actions', + }, + aggs: { + connector_types: { + terms: { + field: 'alert.actions.actionTypeId', }, }, }, }, }, - by_search_type: { - terms: { - field: 'alert.params.searchType', - }, + }, + by_search_type: { + terms: { + field: 'alert.params.searchType', }, - sum_rules_with_tags: { sum: { field: 'rule_with_tags' } }, - sum_rules_snoozed: { sum: { field: 'rule_snoozed' } }, - sum_rules_muted: { sum: { field: 'rule_muted' } }, - sum_rules_with_muted_alerts: { sum: { field: 'rule_with_muted_alerts' } }, }, + sum_rules_with_tags: { sum: { field: 'rule_with_tags' } }, + sum_rules_snoozed: { sum: { field: 'rule_snoozed' } }, + sum_rules_muted: { sum: { field: 'rule_muted' } }, + sum_rules_with_muted_alerts: { sum: { field: 'rule_with_muted_alerts' } }, }, }; @@ -439,25 +437,23 @@ export async function getTotalCountInUse({ const query = { index: alertIndex, size: 0, - body: { - query: { - bool: { - // Aggregate over only enabled rule saved objects - filter: [{ term: { type: 'alert' } }, { term: { 'alert.enabled': true } }], - }, + query: { + bool: { + // Aggregate over only enabled rule saved objects + filter: [{ term: { type: 'alert' } }, { term: { 'alert.enabled': true } }], }, - aggs: { - namespaces_count: { cardinality: { field: 'namespaces' } }, - by_rule_type_id: { - terms: { - field: 'alert.alertTypeId', - size: NUM_ALERTING_RULE_TYPES, - }, + }, + aggs: { + namespaces_count: { cardinality: { field: 'namespaces' } }, + by_rule_type_id: { + terms: { + field: 'alert.alertTypeId', + size: NUM_ALERTING_RULE_TYPES, }, - by_search_type: { - terms: { - field: 'alert.params.searchType', - }, + }, + by_search_type: { + terms: { + field: 'alert.params.searchType', }, }, }, diff --git a/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_task_manager.ts b/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_task_manager.ts index f3741a086bf9b..973e5d755dcd9 100644 --- a/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_task_manager.ts +++ b/x-pack/platform/plugins/shared/alerting/server/usage/lib/get_telemetry_from_task_manager.ts @@ -10,7 +10,7 @@ import type { AggregationsTermsAggregateBase, AggregationsStringTermsBucketKeys, AggregationsBuckets, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { ElasticsearchClient, Logger } from '@kbn/core/server'; import { replaceDotSymbols } from './replace_dots_with_underscores'; import { NUM_ALERTING_RULE_TYPES } from '../alerting_usage_collector'; @@ -42,58 +42,56 @@ export async function getFailedAndUnrecognizedTasksPerDay({ const query = { index: taskManagerIndex, size: 0, - body: { - query: { - bool: { - must: [ - { - bool: { - should: [ - { - term: { - 'task.status': 'unrecognized', - }, + query: { + bool: { + must: [ + { + bool: { + should: [ + { + term: { + 'task.status': 'unrecognized', }, - { - term: { - 'task.status': 'failed', - }, + }, + { + term: { + 'task.status': 'failed', }, - ], - }, - }, - { - wildcard: { - 'task.taskType': { - value: 'alerting:*', }, - }, + ], }, - { - range: { - 'task.runAt': { - gte: 'now-1d', - }, + }, + { + wildcard: { + 'task.taskType': { + value: 'alerting:*', }, }, - ], - }, - }, - aggs: { - by_status: { - terms: { - field: 'task.status', - size: 10, }, - aggs: { - by_task_type: { - terms: { - field: 'task.taskType', - // Use number of alerting rule types because we're filtering by 'alerting:' - size: NUM_ALERTING_RULE_TYPES, + { + range: { + 'task.runAt': { + gte: 'now-1d', }, }, }, + ], + }, + }, + aggs: { + by_status: { + terms: { + field: 'task.status', + size: 10, + }, + aggs: { + by_task_type: { + terms: { + field: 'task.taskType', + // Use number of alerting rule types because we're filtering by 'alerting:' + size: NUM_ALERTING_RULE_TYPES, + }, + }, }, }, }, diff --git a/x-pack/platform/plugins/shared/alerting/server/usage/lib/group_connectors_by_consumers.ts b/x-pack/platform/plugins/shared/alerting/server/usage/lib/group_connectors_by_consumers.ts index 3c29f31f0eb9f..21c7a9b4737d4 100644 --- a/x-pack/platform/plugins/shared/alerting/server/usage/lib/group_connectors_by_consumers.ts +++ b/x-pack/platform/plugins/shared/alerting/server/usage/lib/group_connectors_by_consumers.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { AggregationsBuckets } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { AggregationsBuckets } from '@elastic/elasticsearch/lib/api/types'; import { replaceDotSymbols } from './replace_dots_with_underscores'; export interface ConnectorsByConsumersBucket { diff --git a/x-pack/platform/plugins/shared/alerting/server/usage/lib/parse_simple_rule_type_bucket.ts b/x-pack/platform/plugins/shared/alerting/server/usage/lib/parse_simple_rule_type_bucket.ts index f3d3007061365..8af7fc6d5e15b 100644 --- a/x-pack/platform/plugins/shared/alerting/server/usage/lib/parse_simple_rule_type_bucket.ts +++ b/x-pack/platform/plugins/shared/alerting/server/usage/lib/parse_simple_rule_type_bucket.ts @@ -8,7 +8,7 @@ import { AggregationsBuckets, AggregationsStringTermsBucketKeys, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { replaceDotSymbols } from './replace_dots_with_underscores'; export function parseSimpleRuleTypeBucket( diff --git a/x-pack/platform/plugins/shared/cases/public/containers/types.ts b/x-pack/platform/plugins/shared/cases/public/containers/types.ts index d23d18c6e7896..ec98d24b73103 100644 --- a/x-pack/platform/plugins/shared/cases/public/containers/types.ts +++ b/x-pack/platform/plugins/shared/cases/public/containers/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; export * from '../../common/ui'; diff --git a/x-pack/platform/plugins/shared/cases/server/client/metrics/alerts/aggregations/hosts.ts b/x-pack/platform/plugins/shared/cases/server/client/metrics/alerts/aggregations/hosts.ts index b739abd848294..31c11c21b97a7 100644 --- a/x-pack/platform/plugins/shared/cases/server/client/metrics/alerts/aggregations/hosts.ts +++ b/x-pack/platform/plugins/shared/cases/server/client/metrics/alerts/aggregations/hosts.ts @@ -7,7 +7,7 @@ import { get } from 'lodash'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { SingleCaseMetricsResponse } from '../../../../../common/types/api'; import type { AggregationBuilder, AggregationResponse } from '../../types'; diff --git a/x-pack/platform/plugins/shared/cases/server/client/metrics/types.ts b/x-pack/platform/plugins/shared/cases/server/client/metrics/types.ts index dd832be3d93f0..c234fd4192df2 100644 --- a/x-pack/platform/plugins/shared/cases/server/client/metrics/types.ts +++ b/x-pack/platform/plugins/shared/cases/server/client/metrics/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { CasesMetricsFeatureField, SingleCaseMetricsFeatureField, diff --git a/x-pack/platform/plugins/shared/cases/server/services/attachments/index.ts b/x-pack/platform/plugins/shared/cases/server/services/attachments/index.ts index 165949b0e37d8..47091a867e7b0 100644 --- a/x-pack/platform/plugins/shared/cases/server/services/attachments/index.ts +++ b/x-pack/platform/plugins/shared/cases/server/services/attachments/index.ts @@ -13,7 +13,7 @@ import type { SavedObjectsUpdateResponse, } from '@kbn/core/server'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { fromKueryExpression } from '@kbn/es-query'; import { AttachmentAttributesRt, AttachmentType } from '../../../common/types/domain'; import { decodeOrThrow } from '../../common/runtime_types'; diff --git a/x-pack/platform/plugins/shared/cases/server/services/attachments/operations/get.ts b/x-pack/platform/plugins/shared/cases/server/services/attachments/operations/get.ts index da258afc5eeb9..7b3125ba02005 100644 --- a/x-pack/platform/plugins/shared/cases/server/services/attachments/operations/get.ts +++ b/x-pack/platform/plugins/shared/cases/server/services/attachments/operations/get.ts @@ -10,7 +10,7 @@ import type { SavedObjectsBulkResponse, SavedObjectsFindResponse, } from '@kbn/core/server'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { FILE_SO_TYPE } from '@kbn/files-plugin/common'; import { isSOError } from '../../../common/error'; import { decodeOrThrow } from '../../../common/runtime_types'; diff --git a/x-pack/platform/plugins/shared/cases/server/services/attachments/types.ts b/x-pack/platform/plugins/shared/cases/server/services/attachments/types.ts index c9c5de01e3a4a..3293410793b05 100644 --- a/x-pack/platform/plugins/shared/cases/server/services/attachments/types.ts +++ b/x-pack/platform/plugins/shared/cases/server/services/attachments/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { Logger, SavedObject, diff --git a/x-pack/platform/plugins/shared/cases/server/services/cases/index.ts b/x-pack/platform/plugins/shared/cases/server/services/cases/index.ts index 034e369b1c700..55e82e35eb13c 100644 --- a/x-pack/platform/plugins/shared/cases/server/services/cases/index.ts +++ b/x-pack/platform/plugins/shared/cases/server/services/cases/index.ts @@ -18,7 +18,7 @@ import type { SavedObjectsBulkDeleteOptions, } from '@kbn/core/server'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { nodeBuilder } from '@kbn/es-query'; import type { Case, CaseStatuses, User } from '../../../common/types/domain'; diff --git a/x-pack/platform/plugins/shared/cases/server/services/user_actions/index.ts b/x-pack/platform/plugins/shared/cases/server/services/user_actions/index.ts index 911f31c5c52f2..deb8bd640dbf1 100644 --- a/x-pack/platform/plugins/shared/cases/server/services/user_actions/index.ts +++ b/x-pack/platform/plugins/shared/cases/server/services/user_actions/index.ts @@ -11,7 +11,7 @@ import type { SavedObjectsRawDoc, } from '@kbn/core/server'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { KueryNode } from '@kbn/es-query'; import type { CaseUserActionDeprecatedResponse } from '../../../common/types/api'; import { UserActionTypes } from '../../../common/types/domain'; diff --git a/x-pack/platform/plugins/shared/event_log/server/es/cluster_client_adapter.ts b/x-pack/platform/plugins/shared/event_log/server/es/cluster_client_adapter.ts index 1eb0f482e1d0b..e366870c22858 100644 --- a/x-pack/platform/plugins/shared/event_log/server/es/cluster_client_adapter.ts +++ b/x-pack/platform/plugins/shared/event_log/server/es/cluster_client_adapter.ts @@ -11,7 +11,7 @@ import { reject, isUndefined, isNumber, pick, isEmpty, get } from 'lodash'; import type { PublicMethodsOf } from '@kbn/utility-types'; import { Logger, ElasticsearchClient } from '@kbn/core/server'; import util from 'util'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { fromKueryExpression, toElasticsearchQuery, KueryNode, nodeBuilder } from '@kbn/es-query'; import { IEvent, IValidatedEvent, SAVED_OBJECT_REL_PRIMARY } from '../types'; import { AggregateOptionsType, FindOptionsType, QueryOptionsType } from '../event_log_client'; @@ -399,7 +399,7 @@ export class ClusterClientAdapter { }); expect(scopedClusterClient.bulk.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ + Array [ + Array [ + Object { + "index": "index-value", + "operations": Array [ Object { - "body": Array [ - Object { - "index": Object { - "op_type": "create", - }, - }, - Object { - "jim": "bob", - }, - ], - "index": "index-value", - "refresh": false, + "index": Object { + "op_type": "create", + }, + }, + Object { + "jim": "bob", }, ], - ] + "refresh": false, + }, + ], + ] `); // full params @@ -247,30 +247,30 @@ describe('execute()', () => { const calls = scopedClusterClient.bulk.mock.calls; const timeValue = ( - ((calls[0][0] as estypes.BulkRequest)?.body as unknown[])[1] as Record + (calls[0][0] as estypes.BulkRequest)?.operations?.[1] as Record ).field_to_use_for_time; expect(timeValue).toBeInstanceOf(Date); - delete (((calls[0][0] as estypes.BulkRequest)?.body as unknown[])[1] as Record) + delete ((calls[0][0] as estypes.BulkRequest)?.operations?.[1] as Record) .field_to_use_for_time; expect(calls).toMatchInlineSnapshot(` + Array [ Array [ - Array [ - Object { - "body": Array [ - Object { - "index": Object { - "op_type": "create", - }, - }, - Object { - "jimbob": "jr", + Object { + "index": "index-value", + "operations": Array [ + Object { + "index": Object { + "op_type": "create", }, - ], - "index": "index-value", - "refresh": true, - }, - ], - ] + }, + Object { + "jimbob": "jr", + }, + ], + "refresh": true, + }, + ], + ] `); // minimal params @@ -301,7 +301,8 @@ describe('execute()', () => { Array [ Array [ Object { - "body": Array [ + "index": "index-value", + "operations": Array [ Object { "index": Object { "op_type": "create", @@ -311,7 +312,6 @@ describe('execute()', () => { "jim": "bob", }, ], - "index": "index-value", "refresh": false, }, ], @@ -342,32 +342,32 @@ describe('execute()', () => { }); expect(scopedClusterClient.bulk.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ + Array [ + Array [ + Object { + "index": "index-value", + "operations": Array [ Object { - "body": Array [ - Object { - "index": Object { - "op_type": "create", - }, - }, - Object { - "a": 1, - }, - Object { - "index": Object { - "op_type": "create", - }, - }, - Object { - "b": 2, - }, - ], - "index": "index-value", - "refresh": false, + "index": Object { + "op_type": "create", + }, + }, + Object { + "a": 1, + }, + Object { + "index": Object { + "op_type": "create", + }, + }, + Object { + "b": 2, }, ], - ] + "refresh": false, + }, + ], + ] `); }); diff --git a/x-pack/platform/plugins/shared/stack_connectors/server/connector_types/es_index/index.ts b/x-pack/platform/plugins/shared/stack_connectors/server/connector_types/es_index/index.ts index 915a66568c20e..b86ed0fcc22f6 100644 --- a/x-pack/platform/plugins/shared/stack_connectors/server/connector_types/es_index/index.ts +++ b/x-pack/platform/plugins/shared/stack_connectors/server/connector_types/es_index/index.ts @@ -25,10 +25,7 @@ import { ALERT_HISTORY_PREFIX, buildAlertHistoryDocument, } from '@kbn/actions-plugin/common'; -import { - BulkOperationType, - BulkResponseItem, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { BulkOperationType, BulkResponseItem } from '@elastic/elasticsearch/lib/api/types'; export type ESIndexConnectorType = ConnectorType< ConnectorTypeConfigType, @@ -108,20 +105,20 @@ async function executor( const { actionId, config, params, services, logger } = execOptions; const index = params.indexOverride || config.index; - const bulkBody = []; + const operations = []; for (const document of params.documents) { const timeField = config.executionTimeField == null ? '' : config.executionTimeField.trim(); if (timeField !== '') { document[timeField] = new Date(); } - bulkBody.push({ index: { op_type: 'create' } }); - bulkBody.push(document); + operations.push({ index: { op_type: 'create' } }); + operations.push(document); } const bulkParams = { index, - body: bulkBody, + operations, refresh: config.refresh, }; diff --git a/x-pack/platform/plugins/shared/task_manager/server/lib/bulk_operation_buffer.ts b/x-pack/platform/plugins/shared/task_manager/server/lib/bulk_operation_buffer.ts index 76a7fe338a7e5..4a2f0b96b2e3a 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/lib/bulk_operation_buffer.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/lib/bulk_operation_buffer.ts @@ -7,7 +7,7 @@ import { Logger } from '@kbn/core/server'; import { map } from 'lodash'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { Subject, race, from } from 'rxjs'; import { bufferWhen, filter, bufferCount, flatMap, mapTo, first } from 'rxjs'; import { SavedObjectError } from '@kbn/core-saved-objects-common'; diff --git a/x-pack/platform/plugins/shared/task_manager/server/metrics/task_metrics_collector.ts b/x-pack/platform/plugins/shared/task_manager/server/metrics/task_metrics_collector.ts index 75b8a8beec5e8..4b064d013d2ef 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/metrics/task_metrics_collector.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/metrics/task_metrics_collector.ts @@ -10,7 +10,7 @@ import { AggregationsStringTermsBucket, AggregationsStringTermsBucketKeys, AggregationsTermsAggregateBase, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { Observable, Subject } from 'rxjs'; import { TaskStore } from '../task_store'; import { diff --git a/x-pack/platform/plugins/shared/task_manager/server/monitoring/workload_statistics.test.ts b/x-pack/platform/plugins/shared/task_manager/server/monitoring/workload_statistics.test.ts index 0326e07de6f48..b4f4d4c8d3f18 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/monitoring/workload_statistics.test.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/monitoring/workload_statistics.test.ts @@ -21,7 +21,7 @@ import { times } from 'lodash'; import { taskStoreMock } from '../task_store.mock'; import { of, Subject } from 'rxjs'; import { sleep } from '../test_utils'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { TaskTypeDictionary } from '../task_type_dictionary'; type ResponseWithAggs = Omit, 'aggregations'> & { diff --git a/x-pack/platform/plugins/shared/task_manager/server/monitoring/workload_statistics.ts b/x-pack/platform/plugins/shared/task_manager/server/monitoring/workload_statistics.ts index 37f1291132547..46a372d4cf328 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/monitoring/workload_statistics.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/monitoring/workload_statistics.ts @@ -10,7 +10,7 @@ import { mergeMap, map, filter, switchMap, catchError } from 'rxjs'; import { Logger } from '@kbn/core/server'; import { JsonObject } from '@kbn/utility-types'; import { keyBy, mapValues } from 'lodash'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { AggregationResultOf } from '@kbn/es-types'; import { AggregatedStatProvider } from '../lib/runtime_statistics_aggregator'; import { parseIntervalAsSecond, asInterval, parseIntervalAsMillisecond } from '../lib/intervals'; diff --git a/x-pack/platform/plugins/shared/task_manager/server/plugin.ts b/x-pack/platform/plugins/shared/task_manager/server/plugin.ts index e8ed5aefbe6f9..d30df4eed331e 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/plugin.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/plugin.ts @@ -7,7 +7,7 @@ import { combineLatest, Observable, Subject, BehaviorSubject } from 'rxjs'; import { map, distinctUntilChanged } from 'rxjs'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { UsageCollectionSetup, UsageCollectionStart, diff --git a/x-pack/platform/plugins/shared/task_manager/server/queries/aggregate_task_overdue_percentiles_for_type.ts b/x-pack/platform/plugins/shared/task_manager/server/queries/aggregate_task_overdue_percentiles_for_type.ts index 67b28ce600e3a..dbeff5ea943a9 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/queries/aggregate_task_overdue_percentiles_for_type.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/queries/aggregate_task_overdue_percentiles_for_type.ts @@ -9,7 +9,7 @@ import type { AggregationsAggregationContainer, QueryDslQueryContainer, MappingRuntimeFields, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { IdleTaskWithExpiredRunAt, RunningOrClaimingTaskWithExpiredRetryAt, diff --git a/x-pack/platform/plugins/shared/task_manager/server/queries/mark_available_tasks_as_claimed.ts b/x-pack/platform/plugins/shared/task_manager/server/queries/mark_available_tasks_as_claimed.ts index b428cb0dd889d..9a75f5e9f10c8 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/queries/mark_available_tasks_as_claimed.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/queries/mark_available_tasks_as_claimed.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { TaskTypeDictionary } from '../task_type_dictionary'; import { TaskStatus, TaskPriority, ConcreteTaskInstance } from '../task'; import { diff --git a/x-pack/platform/plugins/shared/task_manager/server/queries/query_clauses.ts b/x-pack/platform/plugins/shared/task_manager/server/queries/query_clauses.ts index 140ae0659d329..9f28e0a8f7575 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/queries/query_clauses.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/queries/query_clauses.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; export interface MustCondition { bool: Pick; diff --git a/x-pack/platform/plugins/shared/task_manager/server/removed_tasks/mark_removed_tasks_as_unrecognized.test.ts b/x-pack/platform/plugins/shared/task_manager/server/removed_tasks/mark_removed_tasks_as_unrecognized.test.ts index 1485216a67f33..1d60c926d212b 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/removed_tasks/mark_removed_tasks_as_unrecognized.test.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/removed_tasks/mark_removed_tasks_as_unrecognized.test.ts @@ -8,7 +8,7 @@ import { mockLogger } from '../test_utils'; import { coreMock, elasticsearchServiceMock } from '@kbn/core/server/mocks'; import { SCHEDULE_INTERVAL, taskRunner } from './mark_removed_tasks_as_unrecognized'; -import { SearchHit } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SearchHit } from '@elastic/elasticsearch/lib/api/types'; const createTaskDoc = (id: string = '1'): SearchHit => ({ _index: '.kibana_task_manager_9.0.0_001', diff --git a/x-pack/platform/plugins/shared/task_manager/server/removed_tasks/mark_removed_tasks_as_unrecognized.ts b/x-pack/platform/plugins/shared/task_manager/server/removed_tasks/mark_removed_tasks_as_unrecognized.ts index a0b518849d909..b21ac92a73307 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/removed_tasks/mark_removed_tasks_as_unrecognized.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/removed_tasks/mark_removed_tasks_as_unrecognized.ts @@ -8,7 +8,7 @@ import { Logger } from '@kbn/logging'; import { CoreStart } from '@kbn/core-lifecycle-server'; import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; -import { SearchHit } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SearchHit } from '@elastic/elasticsearch/lib/api/types'; import { TaskScheduling } from '../task_scheduling'; import { TaskTypeDictionary } from '../task_type_dictionary'; import { ConcreteTaskInstance, TaskManagerStartContract } from '..'; diff --git a/x-pack/platform/plugins/shared/task_manager/server/routes/background_task_utilization.test.ts b/x-pack/platform/plugins/shared/task_manager/server/routes/background_task_utilization.test.ts index 322060b4f9b61..bb8585412382d 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/routes/background_task_utilization.test.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/routes/background_task_utilization.test.ts @@ -15,7 +15,7 @@ import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/us import { MonitoringStats } from '../monitoring'; import { configSchema, TaskManagerConfig } from '../config'; import { backgroundTaskUtilizationRoute } from './background_task_utilization'; -import { SecurityHasPrivilegesResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SecurityHasPrivilegesResponse } from '@elastic/elasticsearch/lib/api/types'; const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); diff --git a/x-pack/platform/plugins/shared/task_manager/server/saved_objects/index.ts b/x-pack/platform/plugins/shared/task_manager/server/saved_objects/index.ts index dc1cd97677767..bd82eacc3260c 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/saved_objects/index.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/saved_objects/index.ts @@ -6,7 +6,7 @@ */ import type { SavedObjectsServiceSetup } from '@kbn/core/server'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { backgroundTaskNodeMapping, taskMappings } from './mappings'; import { getMigrations } from './migrations'; import { TaskManagerConfig } from '../config'; diff --git a/x-pack/platform/plugins/shared/task_manager/server/task_store.test.ts b/x-pack/platform/plugins/shared/task_manager/server/task_store.test.ts index a195baeb893ac..7837d01b115cf 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/task_store.test.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/task_store.test.ts @@ -7,7 +7,7 @@ import { schema } from '@kbn/config-schema'; import { Client } from '@elastic/elasticsearch'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import _ from 'lodash'; import { first } from 'rxjs'; diff --git a/x-pack/platform/plugins/shared/task_manager/server/task_store.ts b/x-pack/platform/plugins/shared/task_manager/server/task_store.ts index 6c48f3bd7552d..ddaef89d1cdf1 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/task_store.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/task_store.ts @@ -14,7 +14,7 @@ import { Subject } from 'rxjs'; import { omit, defaults, get } from 'lodash'; import { SavedObjectError } from '@kbn/core-saved-objects-common'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { SavedObjectsBulkDeleteResponse, Logger } from '@kbn/core/server'; import { diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/common/data/lib/build_agg.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/common/data/lib/build_agg.ts index 0a5bc5cc97fe2..22d95c86a1ff1 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/common/data/lib/build_agg.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/common/data/lib/build_agg.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { AggregationsAggregationContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { AggregationsAggregationContainer } from '@elastic/elasticsearch/lib/api/types'; import { DateRangeInfo, getDateRangeInfo } from './date_range_info'; export interface BuildAggregationOpts { diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/common/data/lib/parse_aggregation_results.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/common/data/lib/parse_aggregation_results.ts index d1f65d0e7b360..0a7236d3867a6 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/common/data/lib/parse_aggregation_results.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/common/data/lib/parse_aggregation_results.ts @@ -10,7 +10,7 @@ import { SearchHit, SearchHitsMetadata, AggregationsSingleMetricAggregateBase, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import type { Group } from '@kbn/observability-alerting-rule-utils'; export const UngroupedGroupId = 'all documents'; diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/action_connector_api/load_execution_log_aggregations.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/action_connector_api/load_execution_log_aggregations.ts index 76a96fe300359..7d22ae8080cef 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/action_connector_api/load_execution_log_aggregations.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/action_connector_api/load_execution_log_aggregations.ts @@ -8,7 +8,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ import { HttpSetup } from '@kbn/core/public'; -import type { SortOrder } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { SortOrder } from '@elastic/elasticsearch/lib/api/types'; import { IExecutionLog, ExecutionLogSortFields, diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/rule_api/load_action_error_log.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/rule_api/load_action_error_log.ts index 7bfef44335a4c..3cd0f0cd56a35 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/rule_api/load_action_error_log.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/rule_api/load_action_error_log.ts @@ -6,7 +6,7 @@ */ import { HttpSetup } from '@kbn/core/public'; -import type { SortOrder } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { SortOrder } from '@elastic/elasticsearch/lib/api/types'; import { IExecutionErrorsResult, ActionErrorLogSortFields } from '@kbn/alerting-plugin/common'; import { INTERNAL_BASE_ALERTING_API_PATH } from '../../constants'; import { getFilter } from './get_filter'; diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/rule_api/load_execution_log_aggregations.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/rule_api/load_execution_log_aggregations.ts index 334b4aea135a2..ffd01a0adcecc 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/rule_api/load_execution_log_aggregations.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/lib/rule_api/load_execution_log_aggregations.ts @@ -8,7 +8,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ import { HttpSetup } from '@kbn/core/public'; -import type { SortOrder } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { SortOrder } from '@elastic/elasticsearch/lib/api/types'; import { IExecutionLog, ExecutionLogSortFields, diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/alerts_table_state.tsx b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/alerts_table_state.tsx index 93bb4f18dfe9a..e569b15b681ff 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/alerts_table_state.tsx +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/alerts_table_state.tsx @@ -19,7 +19,7 @@ import { EuiCopy, EuiDataGridControlColumn, } from '@elastic/eui'; -import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/types'; import { ALERT_CASE_IDS, ALERT_MAINTENANCE_WINDOW_IDS } from '@kbn/rule-data-utils'; import type { RuleRegistrySearchRequestPagination } from '@kbn/rule-registry-plugin/common'; import type { BrowserFields } from '@kbn/alerting-types'; @@ -27,7 +27,7 @@ import { Storage } from '@kbn/kibana-utils-plugin/public'; import type { QueryDslQueryContainer, SortCombinations, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +} from '@elastic/elasticsearch/lib/api/types'; import { QueryClientProvider } from '@tanstack/react-query'; import { useSearchAlertsQuery } from '@kbn/alerts-ui-shared/src/common/hooks/use_search_alerts_query'; import { DEFAULT_ALERTS_PAGE_SIZE } from '@kbn/alerts-ui-shared/src/common/constants'; diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/configuration.tsx b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/configuration.tsx index 59e160cb77289..ba6b1d9cf62e5 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/configuration.tsx +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/configuration.tsx @@ -19,7 +19,7 @@ import { ALERT_STATUS, TIMESTAMP, } from '@kbn/rule-data-utils'; -import { SortCombinations } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SortCombinations } from '@elastic/elasticsearch/lib/api/types'; import { FieldFormatsRegistry } from '@kbn/field-formats-plugin/common'; import { i18n } from '@kbn/i18n'; import { FEATURE_LABEL } from '../translations'; diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/constants.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/constants.ts index aee55831e833a..9075475768ef1 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/constants.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/constants.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { SortCombinations } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { SortCombinations } from '@elastic/elasticsearch/lib/api/types'; export const DefaultSort: SortCombinations[] = [ { diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_actions.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_actions.ts index 1f35d02f8d72f..e3e1666b74164 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_actions.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_actions.ts @@ -5,7 +5,7 @@ * 2.0. */ import { useCallback, useContext, useEffect, useMemo } from 'react'; -import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import { ALERT_CASE_IDS, isSiemRuleType } from '@kbn/rule-data-utils'; import { AlertsTableContext } from '../contexts/alerts_table_context'; diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_untrack_alerts_by_query.tsx b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_untrack_alerts_by_query.tsx index 88c878aa47a66..558d4d5a4a8e2 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_untrack_alerts_by_query.tsx +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_untrack_alerts_by_query.tsx @@ -7,7 +7,7 @@ import { i18n } from '@kbn/i18n'; import { useMutation } from '@tanstack/react-query'; -import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import { INTERNAL_BASE_ALERTING_API_PATH } from '@kbn/alerting-plugin/common'; import { AlertsQueryContext } from '@kbn/alerts-ui-shared/src/common/contexts/alerts_query_context'; import { useKibana } from '../../../../common'; diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_sorting.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_sorting.ts index 78eee5cf9657c..328c1078c8bab 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_sorting.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_sorting.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { SortCombinations } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { SortCombinations } from '@elastic/elasticsearch/lib/api/types'; import type { EuiDataGridSorting } from '@elastic/eui'; import { useCallback, useMemo, useState } from 'react'; diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/field_browser/mock.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/field_browser/mock.ts index 59d9c33838250..321b0848cf9f8 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/field_browser/mock.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/field_browser/mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/types'; import { BrowserFields } from '@kbn/rule-registry-plugin/common'; const DEFAULT_INDEX_PATTERN = [ diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/types.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/public/types.ts index 0d7f3fea23477..b854e5beaa939 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/types.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/types.ts @@ -5,10 +5,7 @@ * 2.0. */ -import { - QueryDslQueryContainer, - SortCombinations, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { QueryDslQueryContainer, SortCombinations } from '@elastic/elasticsearch/lib/api/types'; import type { EuiDataGridCellPopoverElementProps, EuiDataGridCellProps, diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_query.test.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_query.test.ts index efc802dc73d3c..63902ff9bd295 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_query.test.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_query.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import * as estypes from '@elastic/elasticsearch/lib/api/types'; import { loggingSystemMock } from '@kbn/core/server/mocks'; import { Logger } from '@kbn/core/server'; import { TimeSeriesQuery, timeSeriesQuery, getResultFromEs } from './time_series_query'; diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_query.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_query.ts index a07c15f11ad0a..85e54cd061926 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_query.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_query.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { Logger } from '@kbn/core/server'; import type { ElasticsearchClient } from '@kbn/core/server'; import { getEsErrorMessage } from '@kbn/alerting-plugin/server'; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.test.ts index 393cfd5c7b498..029179043957d 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.test.ts @@ -181,14 +181,12 @@ const assertIndexTemplate = (namespace: string) => { expect(createOrUpdateIndexTemplate).toHaveBeenCalledWith({ logger, esClient, - template: { + template: expect.objectContaining({ name: `.risk-score.risk-score-${namespace}-index-template`, - body: expect.objectContaining({ - data_stream: { hidden: true }, - index_patterns: [`risk-score.risk-score-${namespace}`], - composed_of: [`.risk-score-mappings-${namespace}`], - }), - }, + data_stream: { hidden: true }, + index_patterns: [`risk-score.risk-score-${namespace}`], + composed_of: [`.risk-score-mappings-${namespace}`], + }), }); }; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.ts index 2542e33c92be6..69e2290af1476 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.ts @@ -169,23 +169,21 @@ export class RiskScoreDataClient { esClient, template: { name: indexPatterns.template, - body: { - data_stream: { hidden: true }, - index_patterns: [indexPatterns.alias], - composed_of: [nameSpaceAwareMappingsComponentName(namespace)], - template: { - lifecycle: {}, - settings: { - 'index.mapping.total_fields.limit': totalFieldsLimit, - 'index.default_pipeline': getIngestPipelineName(namespace), - }, - mappings: { - dynamic: false, - _meta: indexMetadata, - }, + data_stream: { hidden: true }, + index_patterns: [indexPatterns.alias], + composed_of: [nameSpaceAwareMappingsComponentName(namespace)], + template: { + lifecycle: {}, + settings: { + 'index.mapping.total_fields.limit': totalFieldsLimit, + 'index.default_pipeline': getIngestPipelineName(namespace), + }, + mappings: { + dynamic: false, + _meta: indexMetadata, }, - _meta: indexMetadata, }, + _meta: indexMetadata, }, }); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/backfill/delete.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/backfill/delete.ts index 9a2f0777c6403..3d3f2329288a6 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/backfill/delete.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/backfill/delete.ts @@ -8,7 +8,7 @@ import expect from '@kbn/expect'; import moment from 'moment'; import { asyncForEach } from '@kbn/std'; -import { GetResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { GetResponse } from '@elastic/elasticsearch/lib/api/types'; import { UserAtSpaceScenarios } from '../../../../scenarios'; import { getTestRuleData, diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group4/tests/alerting/alerts.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group4/tests/alerting/alerts.ts index c3cc9f410b203..17f424d4e287f 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group4/tests/alerting/alerts.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group4/tests/alerting/alerts.ts @@ -8,7 +8,7 @@ import expect from '@kbn/expect'; import { expect as expectExpect } from 'expect'; import { omit, padStart } from 'lodash'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { IValidatedEvent, nanosToMillis } from '@kbn/event-log-plugin/server'; import { TaskRunning, TaskRunningStage } from '@kbn/task-manager-plugin/server/task_running'; import { ConcreteTaskInstance } from '@kbn/task-manager-plugin/server'; diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/execute_unsecured_action.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/execute_unsecured_action.ts index 508dad042d8c5..91000c6df7d17 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/execute_unsecured_action.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/execute_unsecured_action.ts @@ -7,7 +7,7 @@ import getPort from 'get-port'; import expect from '@kbn/expect'; -import type { SearchTotalHits } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { SearchTotalHits } from '@elastic/elasticsearch/lib/api/types'; import { getWebhookServer } from '@kbn/actions-simulators-plugin/server/plugin'; import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { ObjectRemover } from '../../../common/lib'; diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/schedule_unsecured_action.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/schedule_unsecured_action.ts index f740c82bcbd70..7074cc3c0b6e5 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/schedule_unsecured_action.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/schedule_unsecured_action.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import type { SearchTotalHits } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { SearchTotalHits } from '@elastic/elasticsearch/lib/api/types'; import { Spaces } from '../../scenarios'; import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { getUrlPrefix, ObjectRemover } from '../../../common/lib'; diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/alerts_base.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/alerts_base.ts index d1883b0be924a..806849f87a90b 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/alerts_base.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/alerts_base.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { omit } from 'lodash'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { Response as SupertestResponse } from 'supertest'; import { RecoveredActionGroup } from '@kbn/alerting-plugin/common'; import { TaskRunning, TaskRunningStage } from '@kbn/task-manager-plugin/server/task_running'; diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alert_severity.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alert_severity.ts index 533bd593e3588..dd9c28fc75737 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alert_severity.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alert_severity.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import type { Alert } from '@kbn/alerts-as-data-utils'; -import { SearchHit } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SearchHit } from '@elastic/elasticsearch/lib/api/types'; import { ALERT_ACTION_GROUP, ALERT_SEVERITY_IMPROVING, diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data.ts index 8833800f8215f..760ed4d857daf 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { SearchHit } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SearchHit } from '@elastic/elasticsearch/lib/api/types'; import { IValidatedEvent } from '@kbn/event-log-plugin/server'; import { setTimeout as setTimeoutAsync } from 'timers/promises'; import type { Alert } from '@kbn/alerts-as-data-utils'; diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_alert_delay.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_alert_delay.ts index 59068ee945ea2..67f3570aa4089 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_alert_delay.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_alert_delay.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { get } from 'lodash'; -import { SearchHit } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SearchHit } from '@elastic/elasticsearch/lib/api/types'; import { IValidatedEvent } from '@kbn/event-log-plugin/server'; import type { Alert } from '@kbn/alerts-as-data-utils'; import { diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_conflicts.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_conflicts.ts index 4866f8581f0bf..ea2f5537a0cd8 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_conflicts.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_conflicts.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { Client } from '@elastic/elasticsearch'; -import { SearchHit } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SearchHit } from '@elastic/elasticsearch/lib/api/types'; import type { Alert } from '@kbn/alerts-as-data-utils'; import { ESTestIndexTool } from '@kbn/alerting-api-integration-helpers'; import { basename } from 'node:path'; diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_flapping.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_flapping.ts index 9bab20d763fcb..7e095f578fdf7 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_flapping.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data_flapping.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { SearchHit } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SearchHit } from '@elastic/elasticsearch/lib/api/types'; import type { Alert } from '@kbn/alerts-as-data-utils'; import { RuleNotifyWhen } from '@kbn/alerting-plugin/common'; import { setTimeout as setTimeoutAsync } from 'timers/promises'; diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/migrations.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/migrations.ts index 2cb5a616320eb..5e8db619d34a6 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/migrations.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/migrations.ts @@ -6,7 +6,7 @@ */ import expect from 'expect'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { RawRule, RawRuleAction } from '@kbn/alerting-plugin/server/types'; import { FILEBEAT_7X_INDICATOR_PATH } from '@kbn/alerting-plugin/server/saved_objects/migrations'; import type { SavedObjectReference } from '@kbn/core/server'; diff --git a/x-pack/test/cases_api_integration/common/lib/alerts.ts b/x-pack/test/cases_api_integration/common/lib/alerts.ts index 8df074b0d3474..48f6540b60b81 100644 --- a/x-pack/test/cases_api_integration/common/lib/alerts.ts +++ b/x-pack/test/cases_api_integration/common/lib/alerts.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import type SuperTest from 'supertest'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { ToolingLog } from '@kbn/tooling-log'; import { DETECTION_ENGINE_QUERY_SIGNALS_URL } from '@kbn/security-solution-plugin/common/constants'; import { DetectionAlert } from '@kbn/security-solution-plugin/common/api/detection_engine'; diff --git a/x-pack/test/cases_api_integration/common/lib/api/index.ts b/x-pack/test/cases_api_integration/common/lib/api/index.ts index f96ac4a0d282a..81f2514697689 100644 --- a/x-pack/test/cases_api_integration/common/lib/api/index.ts +++ b/x-pack/test/cases_api_integration/common/lib/api/index.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { TransportResult } from '@elastic/elasticsearch'; import type { Client } from '@elastic/elasticsearch'; import { GetResponse } from '@elastic/elasticsearch/lib/api/types'; diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/migrations.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/migrations.ts index b53da1b363bcb..61ac2377601df 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/migrations.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/migrations.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { TransportResult } from '@elastic/elasticsearch'; import { ConcreteTaskInstance, diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts index 34ef9c2481bc1..508923815d762 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts @@ -8,7 +8,7 @@ import moment from 'moment'; import { random } from 'lodash'; import expect from '@kbn/expect'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { taskMappings as TaskManagerMapping } from '@kbn/task-manager-plugin/server/saved_objects/mappings'; import { ConcreteTaskInstance, BulkUpdateTaskResult } from '@kbn/task-manager-plugin/server'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_partitions.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_partitions.ts index 57e7fc107a7b4..fedfd259859e7 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_partitions.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_partitions.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { ConcreteTaskInstance } from '@kbn/task-manager-plugin/server'; import { taskMappings as TaskManagerMapping } from '@kbn/task-manager-plugin/server/saved_objects/mappings'; import { asyncForEach } from '@kbn/std'; diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_priority.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_priority.ts index f8fc3f63987b9..3e20cec5fab93 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_priority.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_priority.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { ConcreteTaskInstance } from '@kbn/task-manager-plugin/server'; import { taskMappings as TaskManagerMapping } from '@kbn/task-manager-plugin/server/saved_objects/mappings'; import { asyncForEach } from '@kbn/std'; diff --git a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/migrations.ts b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/migrations.ts index 31854652cbc67..6964e1a5a2ebc 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/migrations.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/migrations.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import type { TransportResult } from '@elastic/elasticsearch'; import { ConcreteTaskInstance, diff --git a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts index 33c72ffd1de95..b05b617e6fb76 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts @@ -8,7 +8,7 @@ import moment from 'moment'; import { random } from 'lodash'; import expect from '@kbn/expect'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { taskMappings as TaskManagerMapping } from '@kbn/task-manager-plugin/server/saved_objects/mappings'; import { ConcreteTaskInstance, BulkUpdateTaskResult } from '@kbn/task-manager-plugin/server'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_priority.ts b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_priority.ts index f8fc3f63987b9..3e20cec5fab93 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_priority.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_priority.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { ConcreteTaskInstance } from '@kbn/task-manager-plugin/server'; import { taskMappings as TaskManagerMapping } from '@kbn/task-manager-plugin/server/saved_objects/mappings'; import { asyncForEach } from '@kbn/std'; From 6b9d90ef5961ffe6446585ce3a9abeabbe617aae Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Tue, 21 Jan 2025 15:41:10 +0100 Subject: [PATCH 037/148] Use client logger in `ContentInsightsClient` (#207206) ## Summary fix https://github.com/elastic/kibana-team/issues/1412 (see context, just for cleanup) --- .../content_insights_public/src/client.ts | 13 +++++++++---- .../content_insights_public/tsconfig.json | 1 + .../plugins/shared/dashboard/jest_setup.ts | 2 ++ .../public/dashboard_api/load_dashboard_api.ts | 3 ++- .../hooks/use_dashboard_listing_table.tsx | 3 ++- .../plugins/shared/dashboard/public/plugin.tsx | 5 ++++- .../shared/dashboard/public/services/logger.ts | 16 ++++++++++++++++ .../shared/dashboard/public/services/mocks.ts | 5 +++++ 8 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 src/platform/plugins/shared/dashboard/public/services/logger.ts diff --git a/src/platform/packages/shared/content-management/content_insights/content_insights_public/src/client.ts b/src/platform/packages/shared/content-management/content_insights/content_insights_public/src/client.ts index a46b01c01ac99..46fe68cece353 100644 --- a/src/platform/packages/shared/content-management/content_insights/content_insights_public/src/client.ts +++ b/src/platform/packages/shared/content-management/content_insights/content_insights_public/src/client.ts @@ -7,6 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import type { Logger } from '@kbn/logging'; import type { HttpStart } from '@kbn/core-http-browser'; import type { ContentInsightsStats, @@ -27,17 +28,21 @@ export interface ContentInsightsClientPublic { * Client for the Content Management Insights service. */ export class ContentInsightsClient implements ContentInsightsClientPublic { + private logger: Logger; constructor( - private readonly deps: { http: HttpStart }, + private readonly deps: { http: HttpStart; logger: Logger }, private readonly config: { domainId: string } - ) {} + ) { + this.logger = deps.logger.get('content_insights_client'); + } track(id: string, eventType: ContentInsightsEventTypes) { this.deps.http .post(`/internal/content_management/insights/${this.config.domainId}/${id}/${eventType}`) .catch((e) => { - // eslint-disable-next-line no-console - console.warn(`Could not track ${eventType} event for ${id}`, e); + this.logger.warn(`Could not track ${eventType} event for ${id}. Error: ${e?.message}`, { + error: e, + }); }); } diff --git a/src/platform/packages/shared/content-management/content_insights/content_insights_public/tsconfig.json b/src/platform/packages/shared/content-management/content_insights/content_insights_public/tsconfig.json index f93cc610ca877..b2953a0439776 100644 --- a/src/platform/packages/shared/content-management/content_insights/content_insights_public/tsconfig.json +++ b/src/platform/packages/shared/content-management/content_insights/content_insights_public/tsconfig.json @@ -29,5 +29,6 @@ "@kbn/content-management-content-insights-server", "@kbn/content-management-table-list-view-common", "@kbn/charts-theme", + "@kbn/logging", ] } diff --git a/src/platform/plugins/shared/dashboard/jest_setup.ts b/src/platform/plugins/shared/dashboard/jest_setup.ts index 1b0de7854d3ac..a86dc47ab043d 100644 --- a/src/platform/plugins/shared/dashboard/jest_setup.ts +++ b/src/platform/plugins/shared/dashboard/jest_setup.ts @@ -19,8 +19,10 @@ import { mockDashboardContentManagementCache, mockDashboardContentManagementService, setStubKibanaServices, + setStubLogger, } from './public/services/mocks'; +setStubLogger(); // Start the kibana services with stubs setStubKibanaServices(); diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts index 0bd2da734ba8d..eb110bfdd56f4 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts @@ -14,6 +14,7 @@ import { DashboardCreationOptions, DashboardState } from './types'; import { getDashboardApi } from './get_dashboard_api'; import { startQueryPerformanceTracking } from '../dashboard_container/embeddable/create/performance/query_performance_tracking'; import { coreServices } from '../services/kibana_services'; +import { logger } from '../services/logger'; import { PANELS_CONTROL_GROUP_KEY, getDashboardBackupService, @@ -123,7 +124,7 @@ export async function loadDashboardApi({ // however, there is an edge case that we now count a new view when a user is editing a dashboard and is returning from an editor by canceling // TODO: this should be revisited by making embeddable transfer support canceling logic https://github.com/elastic/kibana/issues/190485 const contentInsightsClient = new ContentInsightsClient( - { http: coreServices.http }, + { http: coreServices.http, logger }, { domainId: 'dashboard' } ); contentInsightsClient.track(savedObjectId, 'viewed'); diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.tsx index d7b72263bb93f..3422cd23c67c1 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.tsx @@ -26,6 +26,7 @@ import { getDashboardBackupService } from '../../services/dashboard_backup_servi import { getDashboardContentManagementService } from '../../services/dashboard_content_management_service'; import { getDashboardRecentlyAccessedService } from '../../services/dashboard_recently_accessed_service'; import { coreServices } from '../../services/kibana_services'; +import { logger } from '../../services/logger'; import { getDashboardCapabilities } from '../../utils/get_dashboard_capabilities'; import { dashboardListingErrorStrings, @@ -341,7 +342,7 @@ export const useDashboardListingTable = ({ ); const contentInsightsClient = useMemo( - () => new ContentInsightsClient({ http: coreServices.http }, { domainId: 'dashboard' }), + () => new ContentInsightsClient({ http: coreServices.http, logger }, { domainId: 'dashboard' }), [] ); diff --git a/src/platform/plugins/shared/dashboard/public/plugin.tsx b/src/platform/plugins/shared/dashboard/public/plugin.tsx index 2755c443ca083..caa8eec5d770f 100644 --- a/src/platform/plugins/shared/dashboard/public/plugin.tsx +++ b/src/platform/plugins/shared/dashboard/public/plugin.tsx @@ -79,6 +79,7 @@ import { } from './dashboard_container/panel_placement'; import type { FindDashboardsService } from './services/dashboard_content_management_service/types'; import { setKibanaServices, untilPluginStartServicesReady } from './services/kibana_services'; +import { setLogger } from './services/logger'; import { registerActions } from './dashboard_actions/register_actions'; export interface DashboardFeatureFlagConfig { @@ -156,7 +157,9 @@ export class DashboardPlugin implements Plugin { - constructor(private initializerContext: PluginInitializerContext) {} + constructor(private initializerContext: PluginInitializerContext) { + setLogger(initializerContext.logger.get('dashboard')); + } private appStateUpdater = new BehaviorSubject(() => ({})); private stopUrlTracking: (() => void) | undefined = undefined; diff --git a/src/platform/plugins/shared/dashboard/public/services/logger.ts b/src/platform/plugins/shared/dashboard/public/services/logger.ts new file mode 100644 index 0000000000000..46bdfcab5000f --- /dev/null +++ b/src/platform/plugins/shared/dashboard/public/services/logger.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { Logger } from '@kbn/logging'; + +export let logger: Logger; + +export const setLogger = (_logger: Logger) => { + logger = _logger; +}; diff --git a/src/platform/plugins/shared/dashboard/public/services/mocks.ts b/src/platform/plugins/shared/dashboard/public/services/mocks.ts index c39c665ed55da..57ed1a4d0ce61 100644 --- a/src/platform/plugins/shared/dashboard/public/services/mocks.ts +++ b/src/platform/plugins/shared/dashboard/public/services/mocks.ts @@ -32,6 +32,7 @@ import { urlForwardingPluginMock } from '@kbn/url-forwarding-plugin/public/mocks import { visualizationsPluginMock } from '@kbn/visualizations-plugin/public/mocks'; import { setKibanaServices } from './kibana_services'; +import { setLogger } from './logger'; import { DashboardAttributes } from '../../server/content_management'; import { DashboardCapabilities } from '../../common'; import { LoadDashboardReturn } from './dashboard_content_management_service/types'; @@ -76,6 +77,10 @@ export const setStubKibanaServices = () => { }); }; +export const setStubLogger = () => { + setLogger(coreMock.createCoreContext().logger); +}; + export const mockDashboardContentManagementService = { loadDashboardState: jest.fn().mockImplementation(() => Promise.resolve({ From 9077414852f86a70aba5259e9f62d12a53a63090 Mon Sep 17 00:00:00 2001 From: Sergi Massaneda Date: Tue, 21 Jan 2025 15:50:53 +0100 Subject: [PATCH 038/148] [Security Solution] Fix old siem feature override (#207333) ## Summary Adds the feature override for the old `siem` feature as well, we changed that to the new one here https://github.com/elastic/kibana/pull/201780/files#diff-5aba630e58630c087c90368aa97296afb736f62579a23285cef901dc1c3921edR27 Related failure: https://github.com/elastic/kibana/issues/207285 The problem happened because MKI tests are using the outdated roles definition with the old `feature_siem` which was lacking the feature override in the serverless.security.yml Co-authored-by: Elastic Machine --- config/serverless.security.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/config/serverless.security.yml b/config/serverless.security.yml index 79fe63a8c9d5c..ab0157c0183fa 100644 --- a/config/serverless.security.yml +++ b/config/serverless.security.yml @@ -50,6 +50,33 @@ xpack.features.overrides: - feature: "maps" privileges: [ "read" ] + ### Security's feature privileges are fine-tuned to grant access to Discover, Dashboard, Maps, and Visualize apps. + siem: + privileges: + ### Security's `All` feature privilege should implicitly grant `All` access to Discover, Dashboard, Maps, and + ### Visualize features. + all.composedOf: + - feature: "discover" + privileges: [ "all" ] + - feature: "dashboard" + privileges: [ "all" ] + - feature: "visualize" + privileges: [ "all" ] + - feature: "maps" + privileges: [ "all" ] + # Security's `Read` feature privilege should implicitly grant `Read` access to Discover, Dashboard, Maps, and + # Visualize features. Additionally, it should implicitly grant privilege to create short URLs in Discover, + ### Dashboard, and Visualize apps. + read.composedOf: + - feature: "discover" + privileges: [ "read" ] + - feature: "dashboard" + privileges: [ "read" ] + - feature: "visualize" + privileges: [ "read" ] + - feature: "maps" + privileges: [ "read" ] + ## Cloud settings xpack.cloud.serverless.project_type: security From 36332b1bd014c5f09af0cfedcf1f8905f781c9b0 Mon Sep 17 00:00:00 2001 From: Jill Guyonnet Date: Tue, 21 Jan 2025 15:53:11 +0100 Subject: [PATCH 039/148] [Fleet] Fix Jest dev config (#207211) ## Summary Followup to https://github.com/elastic/kibana/pull/205798. There was a typo in the root Jest config for running unit tests locally. Also fixing reference in README. ### To test `yarn jest --config x-pack/platform/plugins/shared/fleet/jest.config.dev.js` should run Fleet unit tests correctly. --- x-pack/platform/plugins/shared/fleet/README.md | 9 +++++++-- x-pack/platform/plugins/shared/fleet/jest.config.dev.js | 8 ++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/x-pack/platform/plugins/shared/fleet/README.md b/x-pack/platform/plugins/shared/fleet/README.md index f20d22625e776..94a28952885d4 100644 --- a/x-pack/platform/plugins/shared/fleet/README.md +++ b/x-pack/platform/plugins/shared/fleet/README.md @@ -130,13 +130,18 @@ Note: if you need to do simultaneous Kibana and Fleet Server development, refer Kibana primarily uses Jest for unit testing. Each plugin or package defines a `jest.config.js` that extends a preset provided by the `@kbn/test` package. Unless you intend to run all unit tests within the project, you should provide the Jest configuration for Fleet. The following command runs all Fleet unit tests: ```sh -yarn jest --config x-pack/platform/plugins/shared/fleet/jest.config.js +yarn jest --config x-pack/platform/plugins/shared/fleet/jest.config.dev.js ``` You can also run a specific test by passing the filepath as an argument, e.g.: ```sh -yarn jest --config x-pack/platform/plugins/shared/fleet/jest.config.js x-pack/platform/plugins/shared/fleet/common/services/validate_package_policy.test.ts +yarn jest --config x-pack/platform/plugins/shared/fleet/jest.config.dev.js x-pack/platform/plugins/shared/fleet/common/services/validate_package_policy.test.ts +``` + +Or alternatively: +```sh +yarn test:jest x-pack/platform/plugins/shared/fleet/common/services/validate_package_policy.test.ts ``` #### API integration tests (stateful) diff --git a/x-pack/platform/plugins/shared/fleet/jest.config.dev.js b/x-pack/platform/plugins/shared/fleet/jest.config.dev.js index ff985be3a5d6e..80f972de854be 100644 --- a/x-pack/platform/plugins/shared/fleet/jest.config.dev.js +++ b/x-pack/platform/plugins/shared/fleet/jest.config.dev.js @@ -6,12 +6,12 @@ */ module.exports = { - preset: '@kbn/test/jest', + preset: '@kbn/test', rootDir: '../../../../..', roots: ['/x-pack/platform/plugins/shared/fleet'], projects: [ - '/x-pack/platform/plugins/shared/fleet/common/*/jest.config.js', - '/x-pack/platform/plugins/shared/fleet/server/*/jest.config.js', - '/x-pack/platform/plugins/shared/fleet/public/*/jest.config.js', + '/x-pack/platform/plugins/shared/fleet/common/jest.config.js', + '/x-pack/platform/plugins/shared/fleet/server/jest.config.js', + '/x-pack/platform/plugins/shared/fleet/public/jest.config.js', ], }; From b44ccfcede6300412b0ec6ddcc95939a40625260 Mon Sep 17 00:00:00 2001 From: Luke Gmys <11671118+lgestc@users.noreply.github.com> Date: Tue, 21 Jan 2025 15:53:27 +0100 Subject: [PATCH 040/148] [Case Observables][Similar Cases] Add value label to similarities in response & the view (#206934) ## Summary This PR improves similar value rendering by wrapping them in badges and adding in the observable type label to the api response & the view. ![Screenshot 2025-01-16 at 14 07 20](https://github.com/user-attachments/assets/ae4424a6-5ccb-465c-b601-89f3f756b37c) ### Testing: Add two observables in distinct cases, with same value and type. They should show up in the Similar Cases tab just like on the screenshot below. --------- Co-authored-by: Antonio --- .../cases/common/types/domain/case/v1.ts | 1 + .../components/similar_cases/table.test.tsx | 10 ++- .../use_similar_cases_columns.tsx | 69 +++++++++++++++++-- .../shared/cases/public/containers/mock.ts | 13 ++++ .../cases/server/client/cases/similar.ts | 12 ++-- .../server/client/observable_types.test.ts | 27 +++++--- .../cases/server/client/observable_types.ts | 29 +++++--- .../shared/cases/server/client/validators.ts | 4 +- 8 files changed, 132 insertions(+), 33 deletions(-) diff --git a/x-pack/platform/plugins/shared/cases/common/types/domain/case/v1.ts b/x-pack/platform/plugins/shared/cases/common/types/domain/case/v1.ts index 14051228452ed..afda0cd14291e 100644 --- a/x-pack/platform/plugins/shared/cases/common/types/domain/case/v1.ts +++ b/x-pack/platform/plugins/shared/cases/common/types/domain/case/v1.ts @@ -162,6 +162,7 @@ export const RelatedCaseRt = rt.strict({ export const SimilarityRt = rt.strict({ typeKey: rt.string, + typeLabel: rt.string, value: rt.string, }); diff --git a/x-pack/platform/plugins/shared/cases/public/components/similar_cases/table.test.tsx b/x-pack/platform/plugins/shared/cases/public/components/similar_cases/table.test.tsx index 2d3de8b54ae93..99a406d482954 100644 --- a/x-pack/platform/plugins/shared/cases/public/components/similar_cases/table.test.tsx +++ b/x-pack/platform/plugins/shared/cases/public/components/similar_cases/table.test.tsx @@ -8,12 +8,12 @@ import React from 'react'; import { type AppMockRenderer, createAppMockRenderer } from '../../common/mock'; import { SimilarCasesTable, type SimilarCasesTableProps } from './table'; -import { mockCase, mockObservables } from '../../containers/mock'; +import { mockCase, mockSimilarObservables } from '../../containers/mock'; describe('SimilarCasesTable', () => { let appMock: AppMockRenderer; const props: SimilarCasesTableProps = { - cases: [{ ...mockCase, similarities: { observables: mockObservables } }], + cases: [{ ...mockCase, similarities: { observables: mockSimilarObservables } }], isLoading: false, onChange: jest.fn(), pagination: { pageIndex: 0, totalItemCount: 1 }, @@ -30,6 +30,12 @@ describe('SimilarCasesTable', () => { expect(result.getByTestId('similar-cases-table')).toBeInTheDocument(); }); + it('renders similarities correctly', async () => { + const result = appMock.render(); + + expect(await result.findByTestId('similar-cases-table-column-similarities')).toBeTruthy(); + }); + it('renders loading indicator when loading', async () => { const result = appMock.render(); expect(result.queryByTestId('similar-cases-table')).not.toBeInTheDocument(); diff --git a/x-pack/platform/plugins/shared/cases/public/components/similar_cases/use_similar_cases_columns.tsx b/x-pack/platform/plugins/shared/cases/public/components/similar_cases/use_similar_cases_columns.tsx index fe6075ca06cb9..20c4b6f61d719 100644 --- a/x-pack/platform/plugins/shared/cases/public/components/similar_cases/use_similar_cases_columns.tsx +++ b/x-pack/platform/plugins/shared/cases/public/components/similar_cases/use_similar_cases_columns.tsx @@ -47,13 +47,14 @@ export interface UseSimilarCasesColumnsReturnValue { export const useSimilarCasesColumns = (): UseSimilarCasesColumnsReturnValue => { const casesColumnsConfig = useCasesColumnsConfiguration(false); + const columns: SimilarCasesColumns[] = useMemo( () => [ { field: casesColumnsConfig.title.field, name: casesColumnsConfig.title.name, sortable: false, - render: (title: string, theCase: SimilarCaseUI) => { + render: (_title: string, theCase: SimilarCaseUI) => { if (theCase.id != null && theCase.title != null) { const caseDetailsLinkComponent = ( @@ -171,16 +172,74 @@ export const useSimilarCasesColumns = (): UseSimilarCasesColumnsReturnValue => { field: SIMILARITIES_FIELD, name: i18n.SIMILARITY_REASON, sortable: false, - render: (similarities: SimilarCaseUI['similarities'], theCase: SimilarCaseUI) => { - if (theCase.id != null && theCase.title != null) { - return similarities.observables.map((similarity) => similarity.value).join(', '); + render: (similarities: SimilarCaseUI['similarities']) => { + const similarObservableValues = similarities.observables.map( + (similarity) => `${similarity.typeLabel}:${similarity.value}` + ); + + if (similarObservableValues.length > 0) { + const clampedBadges = ( + + {similarObservableValues.map((similarValue: string) => ( + + {similarValue} + + ))} + + ); + + const unclampedBadges = ( + + {similarObservableValues.map((similarValue: string) => ( + + {similarValue} + + ))} + + ); + + return ( + + {clampedBadges} + + ); } return getEmptyCellValue(); }, width: '20%', }, ], - [casesColumnsConfig] + [ + casesColumnsConfig.category.field, + casesColumnsConfig.category.name, + casesColumnsConfig.severity.field, + casesColumnsConfig.severity.name, + casesColumnsConfig.status.field, + casesColumnsConfig.status.name, + casesColumnsConfig.tags.field, + casesColumnsConfig.tags.name, + casesColumnsConfig.title.field, + casesColumnsConfig.title.name, + ] ); return { columns, rowHeader: casesColumnsConfig.title.field }; diff --git a/x-pack/platform/plugins/shared/cases/public/containers/mock.ts b/x-pack/platform/plugins/shared/cases/public/containers/mock.ts index d54e6c0a5bf74..b6ecc5e3ca36e 100644 --- a/x-pack/platform/plugins/shared/cases/public/containers/mock.ts +++ b/x-pack/platform/plugins/shared/cases/public/containers/mock.ts @@ -1324,3 +1324,16 @@ export const mockObservables: ObservableUI[] = [ updatedAt: '2024-12-11', }, ]; + +export const mockSimilarObservables = [ + { + value: '127.0.0.1', + typeKey: OBSERVABLE_TYPE_IPV4.key, + typeLabel: OBSERVABLE_TYPE_IPV4.label, + }, + { + value: '10.0.0.1', + typeKey: OBSERVABLE_TYPE_IPV4.key, + typeLabel: OBSERVABLE_TYPE_IPV4.label, + }, +]; diff --git a/x-pack/platform/plugins/shared/cases/server/client/cases/similar.ts b/x-pack/platform/plugins/shared/cases/server/client/cases/similar.ts index daca8d1e6b573..08911cd6bf3df 100644 --- a/x-pack/platform/plugins/shared/cases/server/client/cases/similar.ts +++ b/x-pack/platform/plugins/shared/cases/server/client/cases/similar.ts @@ -7,6 +7,7 @@ import { intersection } from 'lodash'; import Boom from '@hapi/boom'; +import type { ObservableType } from '../../../common/types/domain/observable/v1'; import { OWNER_FIELD } from '../../../common/constants'; import type { CasesSimilarResponse, SimilarCasesSearchRequest } from '../../../common/types/api'; import { SimilarCasesSearchRequestRt, CasesSimilarResponseRt } from '../../../common/types/api'; @@ -19,7 +20,7 @@ import { Operations } from '../../authorization'; import { buildFilter, buildObservablesFieldsFilter, combineFilters } from '../utils'; import { combineFilterWithAuthorizationFilter } from '../../authorization/utils'; import type { CaseSavedObjectTransformed } from '../../common/types/case'; -import { getAvailableObservableTypesSet } from '../observable_types'; +import { getAvailableObservableTypesMap } from '../observable_types'; interface Similarity { typeKey: string; @@ -29,7 +30,7 @@ interface Similarity { const getSimilarities = ( a: CaseSavedObjectTransformed, b: CaseSavedObjectTransformed, - availableObservableTypes: Set + availableObservableTypes: Map ): Similarity[] => { const stringify = (observable: { typeKey: string; value: string }) => [observable.typeKey, observable.value].join(','); @@ -46,6 +47,7 @@ const getSimilarities = ( return { typeKey, value, + typeLabel: availableObservableTypes.get(typeKey)?.label, }; }) .filter((observable) => availableObservableTypes.has(observable.typeKey)); @@ -78,7 +80,7 @@ export const similar = async ( const paramArgs = decodeWithExcessOrThrow(SimilarCasesSearchRequestRt)(params); const retrievedCase = await caseService.getCase({ id: caseId }); - const availableObservableTypesSet = await getAvailableObservableTypesSet( + const availableObservableTypesMap = await getAvailableObservableTypesMap( casesClient, retrievedCase.attributes.owner ); @@ -95,7 +97,7 @@ export const similar = async ( const similarCasesFilter = buildObservablesFieldsFilter( retrievedCase.attributes.observables.reduce((observableMap, observable) => { // NOTE: skip non-existent observable types - if (!availableObservableTypesSet.has(observable.typeKey)) { + if (!availableObservableTypesMap.has(observable.typeKey)) { return observableMap; } @@ -144,7 +146,7 @@ export const similar = async ( cases: cases.saved_objects.map((so) => ({ ...flattenCaseSavedObject({ savedObject: so }), similarities: { - observables: getSimilarities(retrievedCase, so, availableObservableTypesSet), + observables: getSimilarities(retrievedCase, so, availableObservableTypesMap), }, })), page: cases.page, diff --git a/x-pack/platform/plugins/shared/cases/server/client/observable_types.test.ts b/x-pack/platform/plugins/shared/cases/server/client/observable_types.test.ts index d5ba5d21cbe29..bbf47d76ea73f 100644 --- a/x-pack/platform/plugins/shared/cases/server/client/observable_types.test.ts +++ b/x-pack/platform/plugins/shared/cases/server/client/observable_types.test.ts @@ -6,18 +6,23 @@ */ import type { Configurations } from '../../common/types/domain/configure/v1'; -import { OBSERVABLE_TYPES_BUILTIN_KEYS } from '../../common/constants'; +import { OBSERVABLE_TYPES_BUILTIN } from '../../common/constants'; import { createCasesClientMock } from './mocks'; -import { getAvailableObservableTypesSet } from './observable_types'; +import { getAvailableObservableTypesMap } from './observable_types'; +import type { ObservableType } from '../../common/types/domain'; const mockCasesClient = createCasesClientMock(); -describe('getAvailableObservableTypesSet', () => { +const arrayToMap = (arr: ObservableType[]): Map => { + return new Map(arr.map((item) => [item.key, item])); +}; + +describe('getAvailableObservableTypesMap', () => { beforeEach(() => { jest.clearAllMocks(); }); - it('should return a set of available observable types', async () => { + it('should return a map of available observable types', async () => { const mockObservableTypes = [ { key: 'type1', label: 'test 1' }, { key: 'type2', label: 'test 2' }, @@ -29,9 +34,9 @@ describe('getAvailableObservableTypesSet', () => { }, ] as unknown as Configurations); - const result = await getAvailableObservableTypesSet(mockCasesClient, 'mock-owner'); + const result = await getAvailableObservableTypesMap(mockCasesClient, 'mock-owner'); - expect(result).toEqual(new Set(['type1', 'type2', ...OBSERVABLE_TYPES_BUILTIN_KEYS])); + expect(result).toEqual(arrayToMap([...OBSERVABLE_TYPES_BUILTIN, ...mockObservableTypes])); }); it('should return only built-in observable types if no types are configured', async () => { @@ -41,18 +46,18 @@ describe('getAvailableObservableTypesSet', () => { }, ] as unknown as Configurations); - const result = await getAvailableObservableTypesSet(mockCasesClient, 'mock-owner'); + const result = await getAvailableObservableTypesMap(mockCasesClient, 'mock-owner'); - expect(result).toEqual(new Set(OBSERVABLE_TYPES_BUILTIN_KEYS)); + expect(result).toEqual(arrayToMap(OBSERVABLE_TYPES_BUILTIN)); }); - it('should handle errors and return an empty set', async () => { + it('should handle errors and return an empty map', async () => { jest .mocked(mockCasesClient.configure.get) .mockRejectedValue(new Error('Failed to fetch configuration')); - const result = await getAvailableObservableTypesSet(mockCasesClient, 'mock-owner'); + const result = await getAvailableObservableTypesMap(mockCasesClient, 'mock-owner'); - expect(result).toEqual(new Set()); + expect(result).toEqual(new Map()); }); }); diff --git a/x-pack/platform/plugins/shared/cases/server/client/observable_types.ts b/x-pack/platform/plugins/shared/cases/server/client/observable_types.ts index a6183fc6833b5..426378afb490c 100644 --- a/x-pack/platform/plugins/shared/cases/server/client/observable_types.ts +++ b/x-pack/platform/plugins/shared/cases/server/client/observable_types.ts @@ -5,22 +5,35 @@ * 2.0. */ +import type { ObservableType } from '../../common/types/domain'; import { OBSERVABLE_TYPES_BUILTIN } from '../../common/constants'; import type { CasesClient } from './client'; -export const getAvailableObservableTypesSet = async (casesClient: CasesClient, owner: string) => { +export const getAvailableObservableTypes = async (casesClient: CasesClient, owner: string) => { + const configurations = await casesClient.configure.get({ + owner, + }); + const observableTypes = configurations?.[0]?.observableTypes ?? []; + + return [...observableTypes, ...OBSERVABLE_TYPES_BUILTIN]; +}; + +export const getAvailableObservableTypesMap = async ( + casesClient: CasesClient, + owner: string +): Promise> => { try { - const configurations = await casesClient.configure.get({ - owner, - }); - const observableTypes = configurations?.[0]?.observableTypes ?? []; + const observableTypes = await getAvailableObservableTypes(casesClient, owner); - const availableObservableTypesSet = new Set( - [...observableTypes, ...OBSERVABLE_TYPES_BUILTIN].map(({ key }) => key) + const availableObservableTypesSet = new Map( + [...observableTypes, ...OBSERVABLE_TYPES_BUILTIN].map((observableType) => [ + observableType.key, + observableType, + ]) ); return availableObservableTypesSet; } catch (error) { - return new Set(); + return new Map(); } }; diff --git a/x-pack/platform/plugins/shared/cases/server/client/validators.ts b/x-pack/platform/plugins/shared/cases/server/client/validators.ts index 23f26d2321e78..6e309600fcb17 100644 --- a/x-pack/platform/plugins/shared/cases/server/client/validators.ts +++ b/x-pack/platform/plugins/shared/cases/server/client/validators.ts @@ -8,7 +8,7 @@ import Boom from '@hapi/boom'; import { OBSERVABLE_TYPES_BUILTIN } from '../../common/constants'; import { type CasesClient } from './client'; -import { getAvailableObservableTypesSet } from './observable_types'; +import { getAvailableObservableTypesMap } from './observable_types'; /** * Throws an error if the request has custom fields with duplicated keys. @@ -122,7 +122,7 @@ export const validateObservableTypeKeyExists = async ( observableTypeKey: string; } ) => { - const observableTypesSet = await getAvailableObservableTypesSet(casesClient, caseOwner); + const observableTypesSet = await getAvailableObservableTypesMap(casesClient, caseOwner); if (!observableTypesSet.has(observableTypeKey)) { throw Boom.badRequest(`Invalid observable type, key does not exist: ${observableTypeKey}`); } From adb6cded6ab778b59378f5be78a8ed563470b5aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20S=C3=A1nchez?= Date: Tue, 21 Jan 2025 15:56:03 +0100 Subject: [PATCH 041/148] [Security Solution] [EDR Workflows] Adds upgrade notes for management deprecated apis (#206903) ## Summary It adds upgrade notes and create docs link for Endpoint management deprecated apis in 9.0. This pr is for main (9.0) and 8.x (8.18) and will follow up with this one on 8.x branch: https://github.com/elastic/kibana/pull/206904 in order to add these notes to the Upgrade Assistant for these deprecated api's The Api routes were already removed in this pr (only in main): https://github.com/elastic/kibana/pull/199598 --------- Co-authored-by: natasha-moore-elastic <137783811+natasha-moore-elastic@users.noreply.github.com> Co-authored-by: Elastic Machine --- docs/upgrade-notes.asciidoc | 27 +++++++++++++++++++ .../shared/kbn-doc-links/src/get_doc_links.ts | 1 + .../shared/kbn-doc-links/src/types.ts | 1 + 3 files changed, 29 insertions(+) diff --git a/docs/upgrade-notes.asciidoc b/docs/upgrade-notes.asciidoc index 31ae28821e907..17ab878508341 100644 --- a/docs/upgrade-notes.asciidoc +++ b/docs/upgrade-notes.asciidoc @@ -48,6 +48,33 @@ For Elastic Security solution release information, refer to {security-guide}/rel [float] === Breaking changes +[discrete] +[[breaking-199598]] +.Remove deprecated endpoint management endpoints (9.0.0) +[%collapsible] +==== +*Details* + +-- +* `POST /api/endpoint/isolate` has been replaced by `POST /api/endpoint/action/isolate` +* `POST /api/endpoint/unisolate` has been replaced by `POST /api/endpoint/action/unisolate` +* `GET /api/endpoint/policy/summaries` has been deprecated without replacement. Will be removed in v9.0.0 +* `POST /api/endpoint/suggestions/{suggestion_type}` has been deprecated without replacement. Will be removed in v9.0.0 +* `GET /api/endpoint/action_log/{agent_id}` has been deprecated without replacement. Will be removed in v9.0.0 +* `GET /api/endpoint/metadata/transforms` has been deprecated without replacement. Will be removed in v9.0.0 +-- + +*Impact* + +Deprecated endpoints will fail with a 404 status code starting from version 9.0.0 + +*Action* + +-- +* Remove references to `GET /api/endpoint/policy/summaries` endpoint. +* Remove references to `POST /api/endpoint/suggestions/{suggestion_type}` endpoint. +* Remove references to `GET /api/endpoint/action_log/{agent_id}` endpoint. +* Remove references to `GET /api/endpoint/metadata/transforms` endpoint. +* Replace references to deprecated endpoints with the replacements listed in the breaking change details. +-- +==== [discrete] [[breaking-201550]] diff --git a/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts b/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts index 1a56dc0020b6b..cdde09834da34 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts @@ -448,6 +448,7 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D detectionEngineOverview: `${SECURITY_SOLUTION_DOCS}detection-engine-overview.html`, aiAssistant: `${SECURITY_SOLUTION_DOCS}security-assistant.html`, signalsMigrationApi: `${SECURITY_SOLUTION_DOCS}signals-migration-api.html`, + legacyEndpointManagementApiDeprecations: `${KIBANA_DOCS}breaking-changes-summary.html#breaking-199598`, }, query: { eql: `${ELASTICSEARCH_DOCS}eql.html`, diff --git a/src/platform/packages/shared/kbn-doc-links/src/types.ts b/src/platform/packages/shared/kbn-doc-links/src/types.ts index c22a9e9edd1e0..c0aa9084367d6 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/types.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/types.ts @@ -314,6 +314,7 @@ export interface DocLinks { }; readonly detectionEngineOverview: string; readonly signalsMigrationApi: string; + readonly legacyEndpointManagementApiDeprecations: string; }; readonly query: { readonly eql: string; From db6a1b0bee730b06cfcf527231df2f6ab46f2563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Tue, 21 Jan 2025 15:57:44 +0100 Subject: [PATCH 042/148] [ES `body` removal] `@elastic/security-generative-ai` (#204859) --- .../server/ai_assistant_data_clients/index.test.ts | 14 +++++--------- .../knowledge_base/index.ts | 2 +- .../server/ai_assistant_service/index.test.ts | 2 +- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts index 007e25e9af467..23e6e5e681d53 100644 --- a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts @@ -80,12 +80,10 @@ describe('AIAssistantDataClient', () => { }); const reader = await assistantConversationsDataClient.getReader(); const query = { query: { bool: { filter: { range: { '@timestamp': { gte: 0 } } } } } }; - await reader.search({ - body: query, - }); + await reader.search(query); expect(clusterClient.search).toHaveBeenCalledWith({ - body: query, + ...query, ignore_unavailable: true, index: '.kibana-elastic-ai-assistant-conversations-default', seq_no_primary_term: true, @@ -102,11 +100,9 @@ describe('AIAssistantDataClient', () => { const reader = await assistantConversationsDataClient.getReader(); const query = { query: { bool: { filter: { range: { '@timestamp': { gte: 0 } } } } } }; - await expect( - reader.search({ - body: query, - }) - ).rejects.toThrowErrorMatchingInlineSnapshot(`"something went wrong!"`); + await expect(reader.search(query)).rejects.toThrowErrorMatchingInlineSnapshot( + `"something went wrong!"` + ); expect(logger.error).toHaveBeenCalledWith( `Error performing search in AIAssistantDataClient - something went wrong!` diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts index 89a2b834bf906..854c83ac4f5a9 100644 --- a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts @@ -9,6 +9,7 @@ import { MlTrainedModelDeploymentNodesStats, MlTrainedModelStats, SearchTotalHits, + QueryDslQueryContainer, } from '@elastic/elasticsearch/lib/api/types'; import type { MlPluginSetup } from '@kbn/ml-plugin/server'; import type { KibanaRequest } from '@kbn/core-http-server'; @@ -23,7 +24,6 @@ import { Metadata, } from '@kbn/elastic-assistant-common'; import pRetry from 'p-retry'; -import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { StructuredTool } from '@langchain/core/tools'; import { AnalyticsServiceSetup, AuditLogger, ElasticsearchClient } from '@kbn/core/server'; import { IndexPatternsFetcher } from '@kbn/data-views-plugin/server'; diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts index 32a1a30fec255..b94a46e81a937 100644 --- a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts @@ -6,7 +6,7 @@ */ import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; -import { IndicesGetDataStreamResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { IndicesGetDataStreamResponse } from '@elastic/elasticsearch/lib/api/types'; import { errors as EsErrors } from '@elastic/elasticsearch'; import { ReplaySubject, Subject } from 'rxjs'; import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; From 089a91c8287da8fc789e2144d778e7daddba44d1 Mon Sep 17 00:00:00 2001 From: Jatin Kathuria Date: Tue, 21 Jan 2025 16:02:56 +0100 Subject: [PATCH 043/148] [Security Solution ] Fixes Timeline `Unsaved changes` badge color as per EUI recs (#207351) ## Summary Handles - https://github.com/elastic/kibana/issues/205733 ||Before|After| |---|---|---| |Light theme| diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts index f291c5e399819..a11ba6f8c5d8c 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts @@ -202,6 +202,13 @@ export const RISK_ENGINE_NEXT_RUN_TIME = (timeInMinutes: string) => values: { timeInMinutes }, }); +export const RISK_ENGINE_STATUS_SWITCH_LABEL = i18n.translate( + 'xpack.securitySolution.riskScore.riskEngineStatus', + { + defaultMessage: 'Risk engine status', + } +); + export const RUN_RISK_SCORE_ENGINE = i18n.translate('xpack.securitySolution.riskScore.runEngine', { defaultMessage: 'Run Engine', }); From 3498d509ef2cf079e222bbd4aa6a5512adf4f608 Mon Sep 17 00:00:00 2001 From: Sergi Romeu Date: Tue, 21 Jan 2025 17:09:42 +0100 Subject: [PATCH 051/148] [Profiling] Migrate Profiling Cypress tests to `on_merge` from `on_merge_unsupported_ftrs` (#206727) ## Summary Closes https://github.com/elastic/kibana/issues/206664 This PR moves Profiling Cypress tests to be run on the main pipeline instead of the unsupported one. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .buildkite/ftr_oblt_stateful_configs.yml | 5 +- .buildkite/pipelines/on_merge.yml | 16 ++++ .../pipelines/on_merge_unsupported_ftrs.yml | 19 ----- .../pull_request/profiling_cypress.yml | 2 +- .../steps/functional/profiling_cypress.sh | 12 ++- .github/CODEOWNERS | 3 + .../plugins/apm/dev_docs/testing.md | 10 ++- .../plugins/apm/ftr_e2e/package.json | 1 + .../plugins/apm/scripts/test/e2e.js | 13 ++- .../observability/plugins/profiling/README.md | 17 ++-- .../plugins/profiling/e2e/README.md | 24 ++---- .../plugins/profiling/e2e/cypress.config.ts | 18 ++-- .../plugins/profiling/e2e/cypress/.gitignore | 3 + .../profiling/e2e/cypress/support/commands.ts | 13 ++- .../profiling/e2e/cypress/support/e2e.ts | 1 - .../plugins/profiling/e2e/ftr_config_open.ts | 26 ------ .../profiling/e2e/ftr_config_runner.ts | 35 -------- .../profiling/e2e/ftr_provider_context.d.ts | 10 --- .../plugins/profiling/e2e/package.json | 15 ++++ .../profiling/e2e/reporter_config.json | 10 +++ .../plugins/profiling/e2e/tsconfig.json | 4 - .../plugins/profiling/scripts/test/e2e.js | 82 +++---------------- .../profiling_cypress/cli_config.ts} | 12 +-- .../profiling_data_anonymized.json | 0 .../profiling_cypress}/ftr_kibana.yml | 0 .../profiling_cypress}/load_profiling_data.ts | 0 .../profiling_cypress/runner.ts} | 72 +++++----------- .../setup_profiling_resources.ts | 0 28 files changed, 139 insertions(+), 284 deletions(-) create mode 100644 x-pack/solutions/observability/plugins/profiling/e2e/cypress/.gitignore delete mode 100644 x-pack/solutions/observability/plugins/profiling/e2e/ftr_config_open.ts delete mode 100644 x-pack/solutions/observability/plugins/profiling/e2e/ftr_config_runner.ts delete mode 100644 x-pack/solutions/observability/plugins/profiling/e2e/ftr_provider_context.d.ts create mode 100644 x-pack/solutions/observability/plugins/profiling/e2e/package.json create mode 100644 x-pack/solutions/observability/plugins/profiling/e2e/reporter_config.json rename x-pack/{solutions/observability/plugins/profiling/e2e/ftr_config.ts => test/profiling_cypress/cli_config.ts} (80%) rename x-pack/{solutions/observability/plugins/profiling/e2e => test/profiling_cypress}/es_archivers/profiling_data_anonymized.json (100%) rename x-pack/{solutions/observability/plugins/profiling/e2e => test/profiling_cypress}/ftr_kibana.yml (100%) rename x-pack/{solutions/observability/plugins/profiling/e2e => test/profiling_cypress}/load_profiling_data.ts (100%) rename x-pack/{solutions/observability/plugins/profiling/e2e/cypress_test_runner.ts => test/profiling_cypress/runner.ts} (58%) rename x-pack/{solutions/observability/plugins/profiling/e2e => test/profiling_cypress}/setup_profiling_resources.ts (100%) diff --git a/.buildkite/ftr_oblt_stateful_configs.yml b/.buildkite/ftr_oblt_stateful_configs.yml index d162eccf0aa1f..729c5505915ab 100644 --- a/.buildkite/ftr_oblt_stateful_configs.yml +++ b/.buildkite/ftr_oblt_stateful_configs.yml @@ -6,10 +6,7 @@ disabled: - x-pack/solutions/observability/plugins/observability_onboarding/e2e/ftr_config.ts - x-pack/solutions/observability/plugins/inventory/e2e/ftr_config_run.ts - x-pack/solutions/observability/plugins/inventory/e2e/ftr_config.ts - - x-pack/solutions/observability/plugins/profiling/e2e/ftr_config_open.ts - - x-pack/solutions/observability/plugins/profiling/e2e/ftr_config_runner.ts - - x-pack/solutions/observability/plugins/profiling/e2e/ftr_config.ts - + - x-pack/test/profiling_cypress/cli_config.ts #FTR configs - x-pack/solutions/observability/plugins/uptime/e2e/config.ts diff --git a/.buildkite/pipelines/on_merge.yml b/.buildkite/pipelines/on_merge.yml index c52f3ac6687a9..04a025d99b503 100644 --- a/.buildkite/pipelines/on_merge.yml +++ b/.buildkite/pipelines/on_merge.yml @@ -479,6 +479,22 @@ steps: - exit_status: '-1' limit: 1 + - command: .buildkite/scripts/steps/functional/profiling_cypress.sh + label: 'Profiling Cypress Tests' + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-prod + provider: gcp + machineType: n2-standard-4 + preemptible: true + depends_on: build + timeout_in_minutes: 120 + parallelism: 3 + retry: + automatic: + - exit_status: '-1' + limit: 1 + - command: .buildkite/scripts/steps/functional/apm_cypress.sh label: 'APM Cypress Tests' agents: diff --git a/.buildkite/pipelines/on_merge_unsupported_ftrs.yml b/.buildkite/pipelines/on_merge_unsupported_ftrs.yml index 78b3d6b44200c..42ab2e9271e19 100644 --- a/.buildkite/pipelines/on_merge_unsupported_ftrs.yml +++ b/.buildkite/pipelines/on_merge_unsupported_ftrs.yml @@ -28,25 +28,6 @@ steps: - exit_status: '-1' limit: 3 - - command: .buildkite/scripts/steps/functional/profiling_cypress.sh - label: 'Profiling Cypress Tests' - agents: - image: family/kibana-ubuntu-2004 - imageProject: elastic-images-prod - provider: gcp - machineType: n2-standard-4 - preemptible: true - depends_on: build - env: - PING_SLACK_TEAM: "@obs-ux-infra_services-team" - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - command: .buildkite/scripts/steps/functional/synthetics_plugin.sh label: 'Synthetics @elastic/synthetics Tests' agents: diff --git a/.buildkite/pipelines/pull_request/profiling_cypress.yml b/.buildkite/pipelines/pull_request/profiling_cypress.yml index 8ed98a4fbc736..3f77f8811d8c0 100644 --- a/.buildkite/pipelines/pull_request/profiling_cypress.yml +++ b/.buildkite/pipelines/pull_request/profiling_cypress.yml @@ -13,7 +13,7 @@ steps: - check_types - check_oas_snapshot timeout_in_minutes: 120 - parallelism: 2 + parallelism: 3 retry: automatic: - exit_status: '-1' diff --git a/.buildkite/scripts/steps/functional/profiling_cypress.sh b/.buildkite/scripts/steps/functional/profiling_cypress.sh index 318d45d0b125d..cf93715f8cc3a 100644 --- a/.buildkite/scripts/steps/functional/profiling_cypress.sh +++ b/.buildkite/scripts/steps/functional/profiling_cypress.sh @@ -2,17 +2,15 @@ set -euo pipefail -source .buildkite/scripts/common/util.sh +source .buildkite/scripts/steps/functional/common.sh -.buildkite/scripts/bootstrap.sh -.buildkite/scripts/download_build_artifacts.sh -.buildkite/scripts/copy_es_snapshot_cache.sh +export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} export JOB=kibana-profiling-cypress echo "--- Profiling Cypress Tests" -cd "$XPACK_DIR" +cd "$XPACK_DIR/solutions/observability/plugins/profiling/e2e" -NODE_OPTIONS=--openssl-legacy-provider node solutions/observability/plugins/profiling/scripts/test/e2e.js \ - --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ \ No newline at end of file +set +e +yarn cypress:run; status=$?; yarn junit:merge || :; exit $status diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 468680be6105b..e4dc30f08c53c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2586,6 +2586,9 @@ x-pack/solutions/security/plugins/security_solution/server/lib/security_integrat # Changes to translation files should not ping code reviewers x-pack/platform/plugins/private/translations/translations +# Profiling cypress tests +x-pack/test/profiling_cypress @elastic/obs-ux-infra_services-team + # Profiling api integration testing x-pack/test/profiling_api_integration @elastic/obs-ux-infra_services-team diff --git a/x-pack/solutions/observability/plugins/apm/dev_docs/testing.md b/x-pack/solutions/observability/plugins/apm/dev_docs/testing.md index c1c83768fd745..ce252f0926be2 100644 --- a/x-pack/solutions/observability/plugins/apm/dev_docs/testing.md +++ b/x-pack/solutions/observability/plugins/apm/dev_docs/testing.md @@ -141,7 +141,7 @@ Tests run on buildkite PR pipeline are parallelized (8 parallel jobs) and are or ```yml ... depends_on: build - parallelism: 8 + parallelism: 3 ... ``` @@ -150,7 +150,7 @@ Tests run on buildkite PR pipeline are parallelized (8 parallel jobs) and are or #### Start Cypress dashboard ``` -node x-pack/solutions/observability/plugins/apm/scripts/test/e2e --headed +node x-pack/solutions/observability/plugins/apm/scripts/test/e2e --open ``` #### Run tests @@ -159,6 +159,12 @@ node x-pack/solutions/observability/plugins/apm/scripts/test/e2e --headed node x-pack/solutions/observability/plugins/apm/scripts/test/e2e ``` +#### Run tests in headed mode + +``` +node x-pack/solutions/observability/plugins/apm/scripts/test/e2e --headed +``` + ### A11y checks Accessibility tests are added on the e2e with `checkA11y()`, they will run together with cypress. diff --git a/x-pack/solutions/observability/plugins/apm/ftr_e2e/package.json b/x-pack/solutions/observability/plugins/apm/ftr_e2e/package.json index 1bad8ad8eeb82..6b8749fc1e5be 100644 --- a/x-pack/solutions/observability/plugins/apm/ftr_e2e/package.json +++ b/x-pack/solutions/observability/plugins/apm/ftr_e2e/package.json @@ -8,6 +8,7 @@ "cypress": "NODE_OPTIONS=--openssl-legacy-provider node ../../../../security/plugins/security_solution/scripts/start_cypress_parallel --config-file ../observability/plugins/apm/ftr_e2e/cypress.config.ts --ftr-config-file ../../../../../test/apm_cypress/cli_config", "cypress:open": "yarn cypress open", "cypress:run": "yarn cypress run", + "cypress:run:headed": "yarn cypress run --headed", "junit:merge": "../../../../../../node_modules/.bin/mochawesome-merge ../../../../../../target/kibana-apm/cypress/results/mochawesome*.json > ../../../../../../target/kibana-apm/cypress/results/output.json && ../../../../../../node_modules/.bin/marge ../../../../../../target/kibana-apm/cypress/results/output.json --reportDir ../../../../../../target/kibana-apm/cypress/results && yarn junit:transform && mkdir -p ../../../../../../target/junit && cp ../../../../../../target/kibana-apm/cypress/results/*.xml ../../../../../../target/junit/", "junit:transform": "node ../../../../security/plugins/security_solution/scripts/junit_transformer --pathPattern '../../../../../../target/kibana-apm/cypress/results/*.xml' --rootDirectory ../../../../../../ --reportName 'APM Cypress' --writeInPlace" } diff --git a/x-pack/solutions/observability/plugins/apm/scripts/test/e2e.js b/x-pack/solutions/observability/plugins/apm/scripts/test/e2e.js index 12708ea449218..cc951f694d3b7 100644 --- a/x-pack/solutions/observability/plugins/apm/scripts/test/e2e.js +++ b/x-pack/solutions/observability/plugins/apm/scripts/test/e2e.js @@ -17,15 +17,22 @@ const { argv } = yargs(process.argv.slice(2)) type: 'boolean', description: 'Runs Cypress in headed mode', }) + .option('open', { + default: false, + type: 'boolean', + description: 'Opens Cypress dashboard', + }) .help(); const e2eDir = path.join(__dirname, '../../ftr_e2e'); function runTests() { - const mode = argv.headed ? 'open' : 'run'; - console.log(`Running e2e tests: "yarn cypress:${mode}"`); + const mode = argv.open ? 'open' : 'run'; + const isHeaded = mode === 'run' && argv.headed ? ':headed' : ''; + + console.log(`Running e2e tests: "yarn cypress:${mode}${isHeaded}"`); - return childProcess.spawnSync('yarn', [`cypress:${mode}`], { + return childProcess.spawnSync('yarn', [`cypress:${mode}${isHeaded}`], { cwd: e2eDir, encoding: 'utf8', stdio: 'inherit', diff --git a/x-pack/solutions/observability/plugins/profiling/README.md b/x-pack/solutions/observability/plugins/profiling/README.md index b41613c8e3e87..e81faaf4a1ca1 100644 --- a/x-pack/solutions/observability/plugins/profiling/README.md +++ b/x-pack/solutions/observability/plugins/profiling/README.md @@ -51,28 +51,23 @@ The E2E tests are located in [`x-pack/solutions/observability/plugins/profiling/ Universal Profiling uses [FTR](../../../../packages/kbn-test/README.mdx) (functional test runner) and [Cypress](https://www.cypress.io/) to run the e2e tests. The tests are located at `kibana/x-pack/solutions/observability/plugins/profiling/e2e/cypress/e2e`. -### Start test server - -``` -node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e --server -``` - -### Open cypress dashboard +### Start with Cypress Dashboard ``` node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e --open ``` -### Run tests in terminal +### Run tests +Runs all tests in the terminal ``` -node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e --runner +node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e ``` -### Run like CI +### Run tests in headed mode ``` -node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e +node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e --headed ``` ## Other resources diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/README.md b/x-pack/solutions/observability/plugins/profiling/e2e/README.md index ab0e33ed71d7c..dfc1639db6bca 100644 --- a/x-pack/solutions/observability/plugins/profiling/e2e/README.md +++ b/x-pack/solutions/observability/plugins/profiling/e2e/README.md @@ -11,41 +11,35 @@ Tests run on buildkite PR pipeline are parallelized (4 parallel jobs) and are or ```yml ... depends_on: build - parallelism: 4 + parallelism: 3 ... ``` ## Running it locally -### Start test server +### Start with Cypress Dashboard ``` -node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e --server +node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e --open ``` ### Run tests Runs all tests in the terminal ``` -node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e --runner +node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e ``` -### Open cypress dashboard -Opens cypress dashboard, there it's possible to select what test you want to run. +### Run tests in headed mode ``` -node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e --open +node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e --headed ``` + ### Arguments | Option | Description | | ------------ | ----------------------------------------------- | -| --server | Only start ES and Kibana | -| --runner | Only run tests | -| --spec | Specify the specs to run | -| --times | Repeat the test n number of times | -| --bail | stop tests after the first failure | +| --open | Opens Cypress dashboard | +| --headed | Runs tests in headed mode | -``` -node x-pack/solutions/observability/plugins/profiling/scripts/test/e2e.js --runner --spec cypress/e2e/profiling.cy.ts --times 2 -``` diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/cypress.config.ts b/x-pack/solutions/observability/plugins/profiling/e2e/cypress.config.ts index afbad0bac67d0..c66dcc5cd01e3 100644 --- a/x-pack/solutions/observability/plugins/profiling/e2e/cypress.config.ts +++ b/x-pack/solutions/observability/plugins/profiling/e2e/cypress.config.ts @@ -8,25 +8,27 @@ import { defineCypressConfig } from '@kbn/cypress-config'; export default defineCypressConfig({ + reporter: '../../../../../../node_modules/cypress-multi-reporters', + reporterOptions: { + configFile: './reporter_config.json', + }, fileServerFolder: './cypress', fixturesFolder: './cypress/fixtures', screenshotsFolder: './cypress/screenshots', videosFolder: './cypress/videos', - requestTimeout: 10000, - responseTimeout: 40000, - defaultCommandTimeout: 30000, + defaultCommandTimeout: 60000, execTimeout: 120000, pageLoadTimeout: 120000, viewportHeight: 1800, viewportWidth: 1440, video: false, - screenshotOnRunFailure: false, - retries: { - runMode: 1, - }, + screenshotOnRunFailure: true, e2e: { baseUrl: 'http://localhost:5601', supportFile: './cypress/support/e2e.ts', - specPattern: './cypress/e2e/**/*.cy.{js,jsx,ts,tsx}', + specPattern: './cypress/e2e/**/*.cy.ts', + experimentalMemoryManagement: true, + numTestsKeptInMemory: 3, + experimentalRunAllSpecs: true, }, }); diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/cypress/.gitignore b/x-pack/solutions/observability/plugins/profiling/e2e/cypress/.gitignore new file mode 100644 index 0000000000000..d501d1d6d3262 --- /dev/null +++ b/x-pack/solutions/observability/plugins/profiling/e2e/cypress/.gitignore @@ -0,0 +1,3 @@ +/videos/* +/screenshots/* +/downloads/* diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/cypress/support/commands.ts b/x-pack/solutions/observability/plugins/profiling/e2e/cypress/support/commands.ts index ada8681d308d8..64fe0dfcb697e 100644 --- a/x-pack/solutions/observability/plugins/profiling/e2e/cypress/support/commands.ts +++ b/x-pack/solutions/observability/plugins/profiling/e2e/cypress/support/commands.ts @@ -59,14 +59,13 @@ Cypress.Commands.add( 'addKqlFilter', ({ key, value, dataTestSubj = 'profilingUnifiedSearchBar', waitForSuggestion = true }) => { cy.getByTestSubj(dataTestSubj).type(key); - cy.contains(key); - cy.getByTestSubj(`autocompleteSuggestion-field-${key}-`).click(); - // Do not close quotes here as it will not display the suggestion box - cy.getByTestSubj(dataTestSubj).type(`: "${value}`); + + cy.getByTestSubj(`autocompleteSuggestion-field-${key}-`).should('be.visible'); + cy.getByTestSubj(dataTestSubj).type(` : ${value}`); if (waitForSuggestion) { - cy.getByTestSubj( - Cypress.$.escapeSelector(`autocompleteSuggestion-value-"${value}"-`) - ).click(); + cy.getByTestSubj(`autocompleteSuggestion-value-\\"${value}\\"-`) + .should('be.visible') + .click({ force: true }); } cy.getByTestSubj(dataTestSubj).type('{enter}'); } diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/cypress/support/e2e.ts b/x-pack/solutions/observability/plugins/profiling/e2e/cypress/support/e2e.ts index 93daa0bc7ed2a..5f5d1eb3b3614 100644 --- a/x-pack/solutions/observability/plugins/profiling/e2e/cypress/support/e2e.ts +++ b/x-pack/solutions/observability/plugins/profiling/e2e/cypress/support/e2e.ts @@ -10,4 +10,3 @@ Cypress.on('uncaught:exception', (err, runnable) => { }); import './commands'; -// import './output_command_timings'; diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/ftr_config_open.ts b/x-pack/solutions/observability/plugins/profiling/e2e/ftr_config_open.ts deleted file mode 100644 index b3c061c031ca4..0000000000000 --- a/x-pack/solutions/observability/plugins/profiling/e2e/ftr_config_open.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { FtrConfigProviderContext } from '@kbn/test'; -import cypress from 'cypress'; -import type { FtrProviderContext } from './ftr_provider_context'; -import { cypressTestRunner } from './cypress_test_runner'; - -async function ftrConfigOpen({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('./ftr_config.ts')); - return { - ...kibanaConfig.getAll(), - testRunner, - }; -} - -export async function testRunner(ftrProviderContext: FtrProviderContext) { - await cypressTestRunner({ ftrProviderContext, cypressExecution: cypress.open }); -} - -// eslint-disable-next-line import/no-default-export -export default ftrConfigOpen; diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/ftr_config_runner.ts b/x-pack/solutions/observability/plugins/profiling/e2e/ftr_config_runner.ts deleted file mode 100644 index 38c69667213cf..0000000000000 --- a/x-pack/solutions/observability/plugins/profiling/e2e/ftr_config_runner.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { FtrConfigProviderContext } from '@kbn/test'; -import cypress from 'cypress'; -import { cypressTestRunner } from './cypress_test_runner'; -import type { FtrProviderContext } from './ftr_provider_context'; - -async function ftrConfigRun({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('./ftr_config.ts')); - - return { - ...kibanaConfig.getAll(), - testRunner, - }; -} - -async function testRunner(ftrProviderContext: FtrProviderContext) { - const result = await cypressTestRunner({ ftrProviderContext, cypressExecution: cypress.run }); - - if ( - result && - ((result as CypressCommandLine.CypressFailedRunResult)?.status === 'failed' || - (result as CypressCommandLine.CypressRunResult)?.totalFailed) - ) { - process.exitCode = 1; - } -} - -// eslint-disable-next-line import/no-default-export -export default ftrConfigRun; diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/ftr_provider_context.d.ts b/x-pack/solutions/observability/plugins/profiling/e2e/ftr_provider_context.d.ts deleted file mode 100644 index 30a5f1fe518da..0000000000000 --- a/x-pack/solutions/observability/plugins/profiling/e2e/ftr_provider_context.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { GenericFtrProviderContext } from '@kbn/test'; - -export type FtrProviderContext = GenericFtrProviderContext<{}, {}>; diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/package.json b/x-pack/solutions/observability/plugins/profiling/e2e/package.json new file mode 100644 index 0000000000000..2bc70d1057d20 --- /dev/null +++ b/x-pack/solutions/observability/plugins/profiling/e2e/package.json @@ -0,0 +1,15 @@ +{ + "author": "Elastic", + "name": "@kbn/profiling-ftr-e2e", + "version": "1.0.0", + "private": true, + "license": "Elastic License 2.0", + "scripts": { + "cypress": "NODE_OPTIONS=--openssl-legacy-provider node ../../../../security/plugins/security_solution/scripts/start_cypress_parallel --config-file ../observability/plugins/profiling/e2e/cypress.config.ts --ftr-config-file ../../../../../test/profiling_cypress/cli_config", + "cypress:open": "yarn cypress open", + "cypress:run": "yarn cypress run", + "cypress:run:headed": "yarn cypress run --headed", + "junit:merge": "../../../../../../node_modules/.bin/mochawesome-merge ../../../../../../target/kibana-profiling/cypress/results/mochawesome*.json > ../../../../../../target/kibana-profiling/cypress/results/output.json && ../../../../../../node_modules/.bin/marge ../../../../../../target/kibana-profiling/cypress/results/output.json --reportDir ../../../../../../target/kibana-profiling/cypress/results && yarn junit:transform && mkdir -p ../../../../../../target/junit && cp ../../../../../../target/kibana-profiling/cypress/results/*.xml ../../../../../../target/junit/", + "junit:transform": "node ../../../../security/plugins/security_solution/scripts/junit_transformer --pathPattern '../../../../../../target/kibana-profiling/cypress/results/*.xml' --rootDirectory ../../../../../../ --reportName 'Profiling Cypress' --writeInPlace" + } +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/reporter_config.json b/x-pack/solutions/observability/plugins/profiling/e2e/reporter_config.json new file mode 100644 index 0000000000000..6ca73aa805e0b --- /dev/null +++ b/x-pack/solutions/observability/plugins/profiling/e2e/reporter_config.json @@ -0,0 +1,10 @@ +{ + "reporterEnabled": "mochawesome, mocha-junit-reporter", + "reporterOptions": { + "html": false, + "json": true, + "mochaFile": "../../../../../../target/kibana-profiling/cypress/results/TEST-profiling-cypress-[hash].xml", + "overwrite": false, + "reportDir": "../../../../../../target/kibana-profiling/cypress/results" + } +} diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/tsconfig.json b/x-pack/solutions/observability/plugins/profiling/e2e/tsconfig.json index c87e2192fa985..db3456abbd422 100644 --- a/x-pack/solutions/observability/plugins/profiling/e2e/tsconfig.json +++ b/x-pack/solutions/observability/plugins/profiling/e2e/tsconfig.json @@ -9,11 +9,7 @@ }, "kbn_references": [ { "path": "../../../../test/tsconfig.json" }, - "@kbn/test", - "@kbn/dev-utils", "@kbn/cypress-config", "@kbn/observability-plugin", - "@kbn/ftr-common-functional-services", - "@kbn/ftr-common-functional-ui-services" ] } diff --git a/x-pack/solutions/observability/plugins/profiling/scripts/test/e2e.js b/x-pack/solutions/observability/plugins/profiling/scripts/test/e2e.js index fd2da7b56fb68..0302e0736da74 100644 --- a/x-pack/solutions/observability/plugins/profiling/scripts/test/e2e.js +++ b/x-pack/solutions/observability/plugins/profiling/scripts/test/e2e.js @@ -6,104 +6,42 @@ */ /* eslint-disable no-console */ -const { times } = require('lodash'); const path = require('path'); const yargs = require('yargs'); const childProcess = require('child_process'); -const { REPO_ROOT } = require('@kbn/repo-info'); const { argv } = yargs(process.argv.slice(2)) .parserConfiguration({ 'unknown-options-as-args': true }) - .option('kibana-install-dir', { - default: '', - type: 'string', - description: 'Path to the Kibana install directory', - }) - .option('server', { + .option('headed', { default: false, type: 'boolean', - description: 'Start Elasticsearch and Kibana', - }) - .option('runner', { - default: false, - type: 'boolean', - description: - 'Run all tests (an instance of Elasticsearch and kibana are needs to be available)', + description: 'Runs Cypress in headed mode', }) .option('open', { default: false, type: 'boolean', - description: - 'Open cypress dashboard (an instance of Elasticsearch and kibana are needs to be available)', - }) - .option('times', { - type: 'number', - description: 'Repeat the test n number of times', - }) - .option('bail', { - default: false, - type: 'boolean', - description: 'stop tests after the first failure', + description: 'Opens Cypress dashboard', }) .help(); const e2eDir = path.join(__dirname, '../../e2e'); -let ftrScript = 'functional_tests.js'; -if (argv.server) { - ftrScript = 'functional_tests_server.js'; -} else if (argv.runner || argv.open) { - ftrScript = 'functional_test_runner.js'; -} - -const cypressCliArgs = yargs(argv._).parserConfiguration({ - 'boolean-negation': false, -}).argv; - -if (cypressCliArgs.grep) { - throw new Error('--grep is not supported. Please use --spec instead'); -} - -const ftrConfig = argv.open ? './ftr_config_open.ts' : './ftr_config_runner.ts'; -const spawnArgs = [ - `${REPO_ROOT}/scripts/${ftrScript}`, - `--config=${ftrConfig}`, - `--kibana-install-dir=${argv.kibanaInstallDir}`, - ...(argv.bail ? [`--bail`] : []), -]; - function runTests() { - console.log(`Running e2e tests: "node ${spawnArgs.join(' ')}"`); + const mode = argv.open ? 'open' : 'run'; + const isHeaded = mode === 'run' && argv.headed ? ':headed' : ''; + + console.log(`Running e2e tests: "yarn cypress:${mode}${isHeaded}"`); - return childProcess.spawnSync('node', spawnArgs, { + return childProcess.spawnSync('yarn', [`cypress:${mode}${isHeaded}`], { cwd: e2eDir, - env: { - ...process.env, - CYPRESS_CLI_ARGS: JSON.stringify(cypressCliArgs), - NODE_OPTIONS: '--openssl-legacy-provider', - }, encoding: 'utf8', stdio: 'inherit', }); } -const runCounter = { succeeded: 0, failed: 0, remaining: argv.times }; let exitStatus = 0; -times(argv.times ?? 1, () => { - const child = runTests(); - if (child.status === 0) { - runCounter.succeeded++; - } else { - exitStatus = child.status; - runCounter.failed++; - } - - runCounter.remaining--; - - if (argv.times > 1) { - console.log(runCounter); - } -}); +const child = runTests(); +exitStatus = child.status; process.exitCode = exitStatus; console.log(`Quitting with exit code ${exitStatus}`); diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/ftr_config.ts b/x-pack/test/profiling_cypress/cli_config.ts similarity index 80% rename from x-pack/solutions/observability/plugins/profiling/e2e/ftr_config.ts rename to x-pack/test/profiling_cypress/cli_config.ts index 93af91f4792cb..c1341a04ad222 100644 --- a/x-pack/solutions/observability/plugins/profiling/e2e/ftr_config.ts +++ b/x-pack/test/profiling_cypress/cli_config.ts @@ -7,9 +7,8 @@ import type { FtrConfigProviderContext } from '@kbn/test'; import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { commonFunctionalServices } from '@kbn/ftr-common-functional-services'; -import { commonFunctionalUIServices } from '@kbn/ftr-common-functional-ui-services'; import path from 'path'; +import { cypressTestRunner } from './runner'; const kibanaYamlFilePath = path.join(__dirname, './ftr_kibana.yml'); @@ -18,17 +17,12 @@ async function ftrConfig({ readConfigFile }: FtrConfigProviderContext) { require.resolve('@kbn/test-suites-src/common/config') ); const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('@kbn/test-suites-xpack/functional/config.base') + require.resolve('../functional/config.base.js') ); return { ...kibanaCommonTestsConfig.getAll(), - services: { - ...commonFunctionalServices, - ...commonFunctionalUIServices, - }, - esTestCluster: { ...xpackFunctionalTestsConfig.get('esTestCluster'), serverArgs: [ @@ -51,8 +45,8 @@ async function ftrConfig({ readConfigFile }: FtrConfigProviderContext) { `--config=${kibanaYamlFilePath}`, ], }, + testRunner: cypressTestRunner, }; } -// eslint-disable-next-line import/no-default-export export default ftrConfig; diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/es_archivers/profiling_data_anonymized.json b/x-pack/test/profiling_cypress/es_archivers/profiling_data_anonymized.json similarity index 100% rename from x-pack/solutions/observability/plugins/profiling/e2e/es_archivers/profiling_data_anonymized.json rename to x-pack/test/profiling_cypress/es_archivers/profiling_data_anonymized.json diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/ftr_kibana.yml b/x-pack/test/profiling_cypress/ftr_kibana.yml similarity index 100% rename from x-pack/solutions/observability/plugins/profiling/e2e/ftr_kibana.yml rename to x-pack/test/profiling_cypress/ftr_kibana.yml diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/load_profiling_data.ts b/x-pack/test/profiling_cypress/load_profiling_data.ts similarity index 100% rename from x-pack/solutions/observability/plugins/profiling/e2e/load_profiling_data.ts rename to x-pack/test/profiling_cypress/load_profiling_data.ts diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/cypress_test_runner.ts b/x-pack/test/profiling_cypress/runner.ts similarity index 58% rename from x-pack/solutions/observability/plugins/profiling/e2e/cypress_test_runner.ts rename to x-pack/test/profiling_cypress/runner.ts index d458f65df494f..bb8d1ad1af48a 100644 --- a/x-pack/solutions/observability/plugins/profiling/e2e/cypress_test_runner.ts +++ b/x-pack/test/profiling_cypress/runner.ts @@ -6,10 +6,8 @@ */ import axios from 'axios'; -import type cypress from 'cypress'; -import path from 'path'; import Url from 'url'; -import type { FtrProviderContext } from './ftr_provider_context'; +import type { FtrProviderContext } from '../common/ftr_provider_context'; import { loadProfilingData } from './load_profiling_data'; import { setupProfilingResources } from './setup_profiling_resources'; @@ -17,13 +15,8 @@ const DEFAULT_HEADERS = { 'kbn-xsrf': true, 'x-elastic-internal-origin': 'Kibana', }; -export async function cypressTestRunner({ - ftrProviderContext: { getService }, - cypressExecution, -}: { - ftrProviderContext: FtrProviderContext; - cypressExecution: typeof cypress.run | typeof cypress.open; -}) { + +export async function cypressTestRunner({ getService }: FtrProviderContext) { const config = getService('config'); const username = config.get('servers.elasticsearch.username'); @@ -53,12 +46,12 @@ export async function cypressTestRunner({ { headers: DEFAULT_HEADERS } ); - // Only runs the setup once. This is useful when runing the tests with --times args + // Only runs the setup once. This is useful when running the tests with --times args if (!profilingResources.data.has_setup) { await setupProfilingResources({ kibanaUrlWithAuth }); } - // Only loads profiling data once. This is useful when runing the tests with --times args + // Only loads profiling data once. This is useful when running the tests with --times args if (!profilingResources.data.has_data) { await loadProfilingData({ esNode, esRequestTimeout }); } @@ -69,42 +62,21 @@ export async function cypressTestRunner({ port: config.get('servers.kibana.port'), }); - const cypressProjectPath = path.join(__dirname); - const { open, ...cypressCliArgs } = getCypressCliArgs(); - - const res = await cypressExecution({ - ...cypressCliArgs, - project: cypressProjectPath, - config: { - e2e: { - baseUrl: kibanaUrlWithoutAuth, - }, - }, - env: { - KIBANA_URL: kibanaUrlWithoutAuth, - ES_NODE: esNode, - ES_REQUEST_TIMEOUT: esRequestTimeout, - TEST_CLOUD: process.env.TEST_CLOUD, - }, - }); - - return res; -} - -function getCypressCliArgs(): Record { - if (!process.env.CYPRESS_CLI_ARGS) { - return {}; - } - - const { $0, _, ...cypressCliArgs } = JSON.parse(process.env.CYPRESS_CLI_ARGS) as Record< - string, - unknown - >; - - const spec = - typeof cypressCliArgs.spec === 'string' && !cypressCliArgs.spec.includes('**') - ? `**/${cypressCliArgs.spec}*` - : cypressCliArgs.spec; - - return { ...cypressCliArgs, spec }; + return { + KIBANA_URL: kibanaUrlWithoutAuth, + ES_NODE: esNode, + ES_REQUEST_TIMEOUT: esRequestTimeout, + TEST_CLOUD: process.env.TEST_CLOUD, + baseUrl: Url.format({ + protocol: config.get('servers.kibana.protocol'), + hostname: config.get('servers.kibana.hostname'), + port: config.get('servers.kibana.port'), + }), + protocol: config.get('servers.kibana.protocol'), + hostname: config.get('servers.kibana.hostname'), + configport: config.get('servers.kibana.port'), + ELASTICSEARCH_URL: Url.format(config.get('servers.elasticsearch')), + ELASTICSEARCH_USERNAME: config.get('servers.kibana.username'), + ELASTICSEARCH_PASSWORD: config.get('servers.kibana.password'), + }; } diff --git a/x-pack/solutions/observability/plugins/profiling/e2e/setup_profiling_resources.ts b/x-pack/test/profiling_cypress/setup_profiling_resources.ts similarity index 100% rename from x-pack/solutions/observability/plugins/profiling/e2e/setup_profiling_resources.ts rename to x-pack/test/profiling_cypress/setup_profiling_resources.ts From ff85b0fbff9ba73a8b09516382be7281e5f80e0e Mon Sep 17 00:00:00 2001 From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Date: Tue, 21 Jan 2025 17:22:08 +0100 Subject: [PATCH 052/148] [Fleet] added modal to manage auto upgrade agents (#206955) ## Summary Related to https://github.com/elastic/ingest-dev/issues/4721 Added Agent policy action `Manage auto-upgrade agents` to edit `required_versions` config of agent policy on the UI. Also added it to the Agent policy details header to open the modal. To test: - enable FF in `kibana.dev.yml` - `xpack.fleet.enableExperimental: ['enableAutomaticAgentUpgrades']` - navigate to an Agent policy, click Actions and click `Manage auto-upgrade agents` image Added validation on the UI (same as in the API) to prevent duplicate versions, more than 100 percentages, empty percentage. Added a callout to show how many agents are impacted by the update. image image Added `Auto-upgrade agents` with a `Manage` link to Agent policy details header image Moved the percentage helptext to a tooltip: image ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../fleet/common/services/agent_utils.ts | 25 ++ .../shared/fleet/common/services/index.ts | 2 +- .../fleet/cypress/e2e/agent_policy.cy.ts | 5 +- .../shared/fleet/cypress/tasks/common.ts | 5 + .../shared/fleet/cypress/tasks/navigation.ts | 4 +- .../fleet/layouts/default/default.tsx | 4 + .../agent_policy/components/actions_menu.tsx | 39 +- .../components/auto_upgrade_agents_tour.tsx | 68 ++++ .../components/header/right_content.tsx | 356 +++++++++++------- .../index.tsx | 290 ++++++++++++++ .../shared/fleet/public/constants/index.ts | 1 + .../public/hooks/use_request/agent_policy.ts | 12 + .../fleet/public/hooks/use_request/agents.ts | 15 + .../agent_policies/required_versions.test.ts | 19 +- .../agent_policies/required_versions.ts | 23 +- 15 files changed, 697 insertions(+), 171 deletions(-) create mode 100644 x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/auto_upgrade_agents_tour.tsx create mode 100644 x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/components/manage_auto_upgrade_agents_modal/index.tsx diff --git a/x-pack/platform/plugins/shared/fleet/common/services/agent_utils.ts b/x-pack/platform/plugins/shared/fleet/common/services/agent_utils.ts index c0e935543fc39..b2622aa6df9ac 100644 --- a/x-pack/platform/plugins/shared/fleet/common/services/agent_utils.ts +++ b/x-pack/platform/plugins/shared/fleet/common/services/agent_utils.ts @@ -4,6 +4,9 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import semverValid from 'semver/functions/valid'; + +import type { AgentTargetVersion } from '../types'; export function removeSOAttributes(kuery: string): string { return kuery.replace(/attributes\./g, '').replace(/fleet-agents\./g, ''); @@ -20,3 +23,25 @@ export function getSortConfig( : []; return [{ [sortField]: { order: sortOrder } }, ...secondarySort]; } + +export function checkTargetVersionsValidity( + requiredVersions: AgentTargetVersion[] +): string | undefined { + const versions = requiredVersions.map((v) => v.version); + const uniqueVersions = new Set(versions); + if (versions.length !== uniqueVersions.size) { + return `duplicate versions not allowed`; + } + if (requiredVersions.some((item) => !item.percentage)) { + return `percentage is required`; + } + for (const version of versions) { + if (!semverValid(version)) { + return `invalid semver version ${version}`; + } + } + const sumOfPercentages = requiredVersions.reduce((acc, v) => acc + v.percentage, 0); + if (sumOfPercentages > 100) { + return `sum of percentages cannot exceed 100`; + } +} diff --git a/x-pack/platform/plugins/shared/fleet/common/services/index.ts b/x-pack/platform/plugins/shared/fleet/common/services/index.ts index 7061d6d3028d8..ce82633174fb3 100644 --- a/x-pack/platform/plugins/shared/fleet/common/services/index.ts +++ b/x-pack/platform/plugins/shared/fleet/common/services/index.ts @@ -92,4 +92,4 @@ export { isAgentVersionLessThanFleetServer, } from './check_fleet_server_versions'; -export { removeSOAttributes, getSortConfig } from './agent_utils'; +export { removeSOAttributes, getSortConfig, checkTargetVersionsValidity } from './agent_utils'; diff --git a/x-pack/platform/plugins/shared/fleet/cypress/e2e/agent_policy.cy.ts b/x-pack/platform/plugins/shared/fleet/cypress/e2e/agent_policy.cy.ts index 9c0f9ef134b56..6422f3307e93d 100644 --- a/x-pack/platform/plugins/shared/fleet/cypress/e2e/agent_policy.cy.ts +++ b/x-pack/platform/plugins/shared/fleet/cypress/e2e/agent_policy.cy.ts @@ -7,6 +7,7 @@ import { setupFleetServer } from '../tasks/fleet_server'; import { AGENT_FLYOUT, AGENT_POLICY_DETAILS_PAGE } from '../screens/fleet'; import { login } from '../tasks/login'; +import { visit } from '../tasks/common'; describe('Edit agent policy', () => { beforeEach(() => { @@ -37,7 +38,7 @@ describe('Edit agent policy', () => { }); it('should edit agent policy', () => { - cy.visit('/app/fleet/policies/policy-1/settings'); + visit('/app/fleet/policies/policy-1/settings'); cy.get('[placeholder="Optional description"').clear().type('desc'); cy.intercept('/api/fleet/agent_policies/policy-1', { @@ -135,7 +136,7 @@ describe('Edit agent policy', () => { }, }); - cy.visit('/app/fleet/policies/policy-1'); + visit('/app/fleet/policies/policy-1'); cy.getBySel(AGENT_POLICY_DETAILS_PAGE.ADD_AGENT_LINK).click(); cy.getBySel(AGENT_FLYOUT.KUBERNETES_PLATFORM_TYPE).click(); diff --git a/x-pack/platform/plugins/shared/fleet/cypress/tasks/common.ts b/x-pack/platform/plugins/shared/fleet/cypress/tasks/common.ts index 2bf201b11a498..6fead86fe952f 100644 --- a/x-pack/platform/plugins/shared/fleet/cypress/tasks/common.ts +++ b/x-pack/platform/plugins/shared/fleet/cypress/tasks/common.ts @@ -80,6 +80,10 @@ const disableNewFeaturesTours = (window: Window) => { }); }; +const disableFleetTours = (window: Window) => { + window.localStorage.setItem('fleet.autoUpgradeAgentsTour', JSON.stringify({ active: false })); +}; + export const waitForPageToBeLoaded = () => { cy.get(LOADING_INDICATOR_HIDDEN).should('exist'); cy.get(LOADING_INDICATOR).should('not.exist'); @@ -115,6 +119,7 @@ export const visit = (url: string, options: Partial = {}, options.onBeforeLoad?.(win); disableNewFeaturesTours(win); + disableFleetTours(win); }, onLoad: (win) => { options.onLoad?.(win); diff --git a/x-pack/platform/plugins/shared/fleet/cypress/tasks/navigation.ts b/x-pack/platform/plugins/shared/fleet/cypress/tasks/navigation.ts index 741a2cf761e8c..71edf361b351e 100644 --- a/x-pack/platform/plugins/shared/fleet/cypress/tasks/navigation.ts +++ b/x-pack/platform/plugins/shared/fleet/cypress/tasks/navigation.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { visit } from './common'; + export const INTEGRATIONS = 'app/integrations#/'; export const FLEET = 'app/fleet/'; export const LOGIN_API_ENDPOINT = '/internal/security/login'; @@ -16,5 +18,5 @@ export const hostDetailsUrl = (hostName: string) => `/app/security/hosts/${hostName}/authentications`; export const navigateTo = (page: string) => { - cy.visit(page); + visit(page); }; diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/layouts/default/default.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/layouts/default/default.tsx index b6cac5e88c36e..4798318c9d971 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/layouts/default/default.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/layouts/default/default.tsx @@ -14,6 +14,8 @@ import type { Section } from '../../sections'; import { useLink, useConfig, useAuthz, useStartServices } from '../../hooks'; import { WithHeaderLayout } from '../../../../layouts'; +import { AutoUpgradeAgentsTour } from '../../sections/agent_policy/components/auto_upgrade_agents_tour'; + import { DefaultPageTitle } from './default_page_title'; interface Props { @@ -56,6 +58,7 @@ export const DefaultLayout: React.FunctionComponent = ({ isSelected: section === 'agent_policies', href: getHref('policies_list'), 'data-test-subj': 'fleet-agent-policies-tab', + id: 'fleet-agent-policies-tab', }, { name: ( @@ -141,6 +144,7 @@ export const DefaultLayout: React.FunctionComponent = ({ } rightColumn={rightColumn} tabs={tabs}> {children} + ); }; diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx index 961170976194f..942e051c511a7 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx @@ -10,7 +10,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiContextMenuItem, EuiPortal } from '@elastic/eui'; import type { AgentPolicy } from '../../../types'; -import { useAuthz } from '../../../hooks'; +import { useAgentPolicyRefresh, useAuthz } from '../../../hooks'; import { AgentEnrollmentFlyout, ContextMenuActions, @@ -22,6 +22,8 @@ import { policyHasFleetServer } from '../../../services'; import { AgentUpgradeAgentModal } from '../../agents/components'; +import { ManageAutoUpgradeAgentsModal } from '../../agents/components/manage_auto_upgrade_agents_modal'; + import { AgentPolicyYamlFlyout } from './agent_policy_yaml_flyout'; import { AgentPolicyCopyProvider } from './agent_policy_copy_provider'; import { AgentPolicyDeleteProvider } from './agent_policy_delete_provider'; @@ -49,6 +51,9 @@ export const AgentPolicyActionMenu = memo<{ const [isUninstallCommandFlyoutOpen, setIsUninstallCommandFlyoutOpen] = useState(false); const [isUpgradeAgentsModalOpen, setIsUpgradeAgentsModalOpen] = useState(false); + const [isManageAutoUpgradeAgentsModalOpen, setIsManageAutoUpgradeAgentsModalOpen] = + useState(false); + const refreshAgentPolicy = useAgentPolicyRefresh(); const isFleetServerPolicy = useMemo( () => @@ -98,6 +103,23 @@ export const AgentPolicyActionMenu = memo<{ ); + const manageAutoUpgradeAgentsItem = ( + { + setIsContextMenuOpen(false); + setIsManageAutoUpgradeAgentsModalOpen(!isManageAutoUpgradeAgentsModalOpen); + }} + key="manageAutoUpgradeAgents" + > + + + ); + const deletePolicyItem = ( , viewPolicyItem, + manageAutoUpgradeAgentsItem, copyPolicyItem, deletePolicyItem, ]; @@ -273,6 +296,20 @@ export const AgentPolicyActionMenu = memo<{ /> )} + {isManageAutoUpgradeAgentsModalOpen && ( + + { + setIsManageAutoUpgradeAgentsModalOpen(false); + if (refreshPolicy) { + refreshAgentPolicy(); + } + }} + /> + + )} {isUninstallCommandFlyoutOpen && ( = ({ anchor }) => { + const { storage, uiSettings } = useStartServices(); + + const [tourState, setTourState] = useState({ isOpen: true }); + + const isTourHidden = + uiSettings.get('hideAnnouncements', false) || + ( + storage.get(TOUR_STORAGE_KEYS.AUTO_UPGRADE_AGENTS) as + | TOUR_STORAGE_CONFIG['AUTO_UPGRADE_AGENTS'] + | undefined + )?.active === false; + + const setTourAsHidden = () => { + storage.set(TOUR_STORAGE_KEYS.AUTO_UPGRADE_AGENTS, { + active: false, + } as TOUR_STORAGE_CONFIG['AUTO_UPGRADE_AGENTS']); + }; + + const onFinish = () => { + setTourState({ isOpen: false }); + setTourAsHidden(); + }; + + return ( + <> + + + + } + isStepOpen={!isTourHidden && tourState.isOpen} + onFinish={onFinish} + minWidth={360} + maxWidth={360} + step={1} + stepsTotal={1} + title={ + + } + anchorPosition="downLeft" + anchor={anchor} + /> + + ); +}; diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/right_content.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/right_content.tsx index 6603698a80186..47d78462dc288 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/right_content.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/right_content.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useMemo } from 'react'; +import React, { useMemo, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedDate, FormattedMessage } from '@kbn/i18n-react'; import styled from 'styled-components'; @@ -20,14 +20,18 @@ import { EuiLink, EuiToolTip, EuiIconTip, + EuiPortal, + EuiNotificationBadge, } from '@elastic/eui'; -import { useAuthz, useLink } from '../../../../../hooks'; +import { useAgentPolicyRefresh, useAuthz, useLink } from '../../../../../hooks'; import type { AgentPolicy } from '../../../../../types'; import { AgentPolicyActionMenu, LinkedAgentCount } from '../../../components'; import { AddAgentHelpPopover } from '../../../../../components'; import { FLEET_SERVER_PACKAGE } from '../../../../../../../../common/constants'; import { getRootIntegrations } from '../../../../../../../../common/services'; +import { ManageAutoUpgradeAgentsModal } from '../../../../agents/components/manage_auto_upgrade_agents_modal'; +import { AutoUpgradeAgentsTour } from '../../../components/auto_upgrade_agents_tour'; export interface HeaderRightContentProps { isLoading: boolean; @@ -55,6 +59,9 @@ export const HeaderRightContent: React.FunctionComponent(false); + const refreshAgentPolicy = useAgentPolicyRefresh(); const isFleetServerPolicy = useMemo( () => @@ -84,154 +91,215 @@ export const HeaderRightContent: React.FunctionComponent - {isLoading || !agentPolicy - ? null - : [ - { - label: i18n.translate('xpack.fleet.policyDetails.summary.revision', { - defaultMessage: 'Revision', - }), - content: agentPolicy.revision ?? 0, - }, - { isDivider: true }, - { - label: i18n.translate('xpack.fleet.policyDetails.summary.integrations', { - defaultMessage: 'Integrations', - }), - content: ( - - ), - }, - { isDivider: true }, - ...(authz.fleet.readAgents && !agentPolicy?.supports_agentless - ? [ - { - label: i18n.translate('xpack.fleet.policyDetails.summary.usedBy', { - defaultMessage: 'Agents', - }), - content: - !agentPolicy.agents && isFleetServerPolicy && authz.fleet.addFleetServers ? ( - { - setIsAddAgentHelpPopoverOpen(false); - }} - /> - ) : !agentPolicy.agents && !isFleetServerPolicy && authz.fleet.addAgents ? ( - { - setIsAddAgentHelpPopoverOpen(false); - }} - /> - ) : ( - + <> + + {isLoading || !agentPolicy + ? null + : [ + { + label: i18n.translate('xpack.fleet.policyDetails.summary.revision', { + defaultMessage: 'Revision', + }), + content: agentPolicy.revision ?? 0, + }, + { isDivider: true }, + { + label: i18n.translate('xpack.fleet.policyDetails.summary.integrations', { + defaultMessage: 'Integrations', + }), + content: ( + + ), + }, + { isDivider: true }, + ...(authz.fleet.readAgents && !agentPolicy?.supports_agentless + ? [ + { + label: i18n.translate('xpack.fleet.policyDetails.summary.usedBy', { + defaultMessage: 'Agents', + }), + content: + !agentPolicy.agents && + isFleetServerPolicy && + authz.fleet.addFleetServers ? ( + { + setIsAddAgentHelpPopoverOpen(false); + }} + /> + ) : !agentPolicy.agents && !isFleetServerPolicy && authz.fleet.addAgents ? ( + { + setIsAddAgentHelpPopoverOpen(false); + }} + /> + ) : ( + + + + + + + + + + + } + > + + + + {getRootIntegrations(agentPolicy.package_policies || []).length > 0 && + (agentPolicy.unprivileged_agents || 0) > 0 && ( + + + } + /> + + )} + + ), + }, + { isDivider: true }, + ] + : []), + { + label: i18n.translate('xpack.fleet.policyDetails.summary.lastUpdated', { + defaultMessage: 'Last updated on', + }), + content: + (agentPolicy && ( + + )) || + '', + }, + { isDivider: true }, + ...(authz.fleet.allAgentPolicies + ? [ + { + label: i18n.translate('xpack.fleet.policyDetails.summary.autoUpgrade', { + defaultMessage: 'Auto-upgrade agents', + }), + content: ( + - - - - - - - - - } + { + setIsManageAutoUpgradeAgentsModalOpen( + !isManageAutoUpgradeAgentsModalOpen + ); + }} > - - + + + + + {agentPolicy.required_versions?.length || 0} + - {getRootIntegrations(agentPolicy.package_policies || []).length > 0 && - (agentPolicy.unprivileged_agents || 0) > 0 && ( - - - } - /> - - )} ), - }, - { isDivider: true }, - ] - : []), - { - label: i18n.translate('xpack.fleet.policyDetails.summary.lastUpdated', { - defaultMessage: 'Last updated on', - }), - content: - (agentPolicy && ( - { + history.push(getPath('policy_details', { policyId: newAgentPolicy.id })); + }} + onCancelEnrollment={onCancelEnrollment} /> - )) || - '', - }, - { isDivider: true }, - { - content: agentPolicy && ( - { - history.push(getPath('policy_details', { policyId: newAgentPolicy.id })); - }} - onCancelEnrollment={onCancelEnrollment} - /> - ), - }, - ].map((item, index) => ( - - {item.isDivider ?? false ? ( - - ) : item.label ? ( - - - {item.label} - - - {item.content} - - - ) : ( - item.content - )} - - ))} - + ), + }, + ].map((item, index) => ( + + {item.isDivider ?? false ? ( + + ) : item.label ? ( + + + {item.label} + + + {item.content} + + + ) : ( + item.content + )} + + ))} + + {isManageAutoUpgradeAgentsModalOpen && ( + + { + setIsManageAutoUpgradeAgentsModalOpen(false); + if (refreshPolicy) { + refreshAgentPolicy(); + } + }} + /> + + )} + + ); }; diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/components/manage_auto_upgrade_agents_modal/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/components/manage_auto_upgrade_agents_modal/index.tsx new file mode 100644 index 0000000000000..0a52b268e6a63 --- /dev/null +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/components/manage_auto_upgrade_agents_modal/index.tsx @@ -0,0 +1,290 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { + EuiButton, + EuiButtonEmpty, + EuiCallOut, + EuiConfirmModal, + EuiFieldNumber, + EuiFlexGroup, + EuiFlexItem, + EuiForm, + EuiFormRow, + EuiIconTip, + EuiSpacer, + EuiSuperSelect, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import type { AgentTargetVersion } from '../../../../../../../common/types'; + +import type { AgentPolicy } from '../../../../../../../common'; +import { useGetAgentsAvailableVersionsQuery, useStartServices } from '../../../../../../hooks'; +import { checkTargetVersionsValidity } from '../../../../../../../common/services'; +import { sendUpdateAgentPolicyForRq } from '../../../../../../hooks/use_request/agent_policy'; + +export interface ManageAutoUpgradeAgentsModalProps { + onClose: (refreshPolicy: boolean) => void; + agentPolicy: AgentPolicy; + agentCount: number; +} + +export const ManageAutoUpgradeAgentsModal: React.FunctionComponent< + ManageAutoUpgradeAgentsModalProps +> = ({ onClose, agentPolicy, agentCount }) => { + const [isLoading, setIsLoading] = useState(false); + const { notifications } = useStartServices(); + const [targetVersions, setTargetVersions] = useState(agentPolicy.required_versions || []); + const { data: agentsAvailableVersions } = useGetAgentsAvailableVersionsQuery({ + enabled: true, + }); + const latestVersion = agentsAvailableVersions?.items[0]; + const [errors, setErrors] = useState([]); + + const submitUpdateAgentPolicy = async () => { + setIsLoading(true); + let isSuccess = false; + try { + await sendUpdateAgentPolicyForRq(agentPolicy.id, { + name: agentPolicy.name, + namespace: agentPolicy.namespace, + required_versions: targetVersions, + }); + notifications.toasts.addSuccess( + i18n.translate('xpack.fleet.manageAutoUpgradeAgents.successNotificationTitle', { + defaultMessage: "Successfully updated ''{name}'' auto-upgrade agents settings", + values: { name: agentPolicy.name }, + }) + ); + isSuccess = true; + } catch (e) { + notifications.toasts.addDanger( + i18n.translate('xpack.fleet.manageAutoUpgradeAgents.errorNotificationTitle', { + defaultMessage: 'Unable to update agent policy', + }) + ); + } + setIsLoading(false); + onClose(isSuccess); + }; + + async function onSubmit() { + await submitUpdateAgentPolicy(); + } + + async function updateTargetVersions(newVersions: AgentTargetVersion[]) { + const error = checkTargetVersionsValidity(newVersions); + setErrors(error ? [error] : []); + + setTargetVersions(newVersions); + } + + return ( + + } + onCancel={() => onClose(false)} + onConfirm={onSubmit} + confirmButtonDisabled={isLoading || errors.length > 0} + cancelButtonText={ + + } + confirmButtonText={ + + } + style={{ width: 1000 }} + > + + + {agentCount > 0 ? ( + <> + + + + ) : null} + + + + 0} error={errors} component="form"> + {targetVersions.map((requiredVersion, index) => ( + <> + { + updateTargetVersions(targetVersions.filter((_, i) => i !== index)); + }} + onUpdate={(version: string, percentage: number) => { + updateTargetVersions( + targetVersions.map((targetVersion, i) => + i === index ? { version, percentage } : targetVersion + ) + ); + }} + /> + + + ))} + + + + + { + updateTargetVersions([ + ...targetVersions, + { + version: latestVersion || '', + percentage: targetVersions.length === 0 ? 100 : 1, + }, + ]); + }} + iconType="plusInCircle" + > + + + + + + + ); +}; + +const TargetVersionsRow: React.FunctionComponent<{ + agentsAvailableVersions: string[]; + requiredVersion: AgentTargetVersion; + onRemove: () => void; + onUpdate: (version: string, percentage: number) => void; +}> = ({ agentsAvailableVersions, requiredVersion, onRemove, onUpdate }) => { + const options = agentsAvailableVersions.map((version) => ({ + value: version, + inputDisplay: version, + })); + + const [version, setVersion] = useState(requiredVersion.version); + + const onVersionChange = (value: string) => { + setVersion(value); + }; + + const [percentage, setPercentage] = useState(requiredVersion.percentage); + + const onPercentageChange = (value: number) => { + setPercentage(value); + }; + + return ( + + + + + + } + /> + + } + > + { + onVersionChange(value); + onUpdate(value, percentage); + }} + /> + + + + + + + } + /> + + } + > + { + const newValue = parseInt(e.target.value, 10); + onPercentageChange(newValue); + onUpdate(version, newValue); + }} + min={0} + step={1} + max={100} + required + /> + + + + + + + + + + + ); +}; diff --git a/x-pack/platform/plugins/shared/fleet/public/constants/index.ts b/x-pack/platform/plugins/shared/fleet/public/constants/index.ts index 059bae6ea7bff..0f4481cc4be96 100644 --- a/x-pack/platform/plugins/shared/fleet/public/constants/index.ts +++ b/x-pack/platform/plugins/shared/fleet/public/constants/index.ts @@ -55,6 +55,7 @@ export const TOUR_STORAGE_KEYS = { INACTIVE_AGENTS: 'fleet.inactiveAgentsTour', GRANULAR_PRIVILEGES: 'fleet.granularPrivileges', AGENT_EXPORT_CSV: 'fleet.agentExportCSVTour', + AUTO_UPGRADE_AGENTS: 'fleet.autoUpgradeAgentsTour', }; export interface TourConfig { diff --git a/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts index e130eae49c6eb..3bf3468370685 100644 --- a/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts @@ -156,6 +156,18 @@ export const sendUpdateAgentPolicy = ( }); }; +export const sendUpdateAgentPolicyForRq = ( + agentPolicyId: string, + body: UpdateAgentPolicyRequest['body'] +) => { + return sendRequestForRq({ + path: agentPolicyRouteService.getUpdatePath(agentPolicyId), + method: 'put', + body: JSON.stringify(body), + version: API_VERSIONS.public.v1, + }); +}; + export const sendCopyAgentPolicy = ( agentPolicyId: string, body: CopyAgentPolicyRequest['body'] diff --git a/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agents.ts b/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agents.ts index 98e71732c34c8..b893d723be691 100644 --- a/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agents.ts +++ b/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agents.ts @@ -351,6 +351,21 @@ export function sendGetAgentsAvailableVersions() { }); } +export function useGetAgentsAvailableVersionsQuery(options: Partial<{ enabled: boolean }> = {}) { + return useQuery( + ['available_versions'], + () => + sendRequestForRq({ + method: 'get', + path: agentRouteService.getAvailableVersionsPath(), + version: API_VERSIONS.public.v1, + }), + { + enabled: options.enabled, + } + ); +} + export function sendGetAgentStatusRuntimeField() { return sendRequestForRq({ method: 'get', diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/required_versions.test.ts b/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/required_versions.test.ts index 1a97169c69729..35c413be4fafa 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/required_versions.test.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/required_versions.test.ts @@ -40,7 +40,7 @@ describe('validateRequiredVersions', () => { ]); }).toThrow( new AgentPolicyInvalidError( - `Policy "test policy" failed validation: duplicate versions not allowed in required_versions` + `Policy "test policy" failed required_versions validation: duplicate versions not allowed` ) ); }); @@ -53,7 +53,7 @@ describe('validateRequiredVersions', () => { ]); }).toThrow( new AgentPolicyInvalidError( - `Policy "test policy" failed validation: invalid semver version 9.0.0invalid in required_versions` + `Policy "test policy" failed required_versions validation: invalid semver version 9.0.0invalid` ) ); }); @@ -66,7 +66,20 @@ describe('validateRequiredVersions', () => { ]); }).toThrow( new AgentPolicyInvalidError( - `Policy "test policy" failed validation: sum of required_versions percentages cannot exceed 100` + `Policy "test policy" failed required_versions validation: sum of percentages cannot exceed 100` + ) + ); + }); + + it('should throw error if percentage is 0 or undefined', () => { + expect(() => { + validateRequiredVersions('test policy', [ + { version: '9.0.0', percentage: 100 }, + { version: '9.1.0', percentage: 0 }, + ]); + }).toThrow( + new AgentPolicyInvalidError( + `Policy "test policy" failed required_versions validation: percentage is required` ) ); }); diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/required_versions.ts b/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/required_versions.ts index 1b12c9b5c4307..f2b93c77e3a04 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/required_versions.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agent_policies/required_versions.ts @@ -5,12 +5,11 @@ * 2.0. */ -import semverValid from 'semver/functions/valid'; - import type { AgentTargetVersion } from '../../../common/types'; import { AgentPolicyInvalidError } from '../../errors'; import { appContextService } from '..'; +import { checkTargetVersionsValidity } from '../../../common/services/agent_utils'; export function validateRequiredVersions( name: string, @@ -24,24 +23,10 @@ export function validateRequiredVersions( `Policy "${name}" failed validation: required_versions are not allowed when automatic upgrades feature is disabled` ); } - const versions = requiredVersions.map((v) => v.version); - const uniqueVersions = new Set(versions); - if (versions.length !== uniqueVersions.size) { - throw new AgentPolicyInvalidError( - `Policy "${name}" failed validation: duplicate versions not allowed in required_versions` - ); - } - versions.forEach((version) => { - if (!semverValid(version)) { - throw new AgentPolicyInvalidError( - `Policy "${name}" failed validation: invalid semver version ${version} in required_versions` - ); - } - }); - const sumOfPercentages = requiredVersions.reduce((acc, v) => acc + v.percentage, 0); - if (sumOfPercentages > 100) { + const error = checkTargetVersionsValidity(requiredVersions); + if (error) { throw new AgentPolicyInvalidError( - `Policy "${name}" failed validation: sum of required_versions percentages cannot exceed 100` + `Policy "${name}" failed required_versions validation: ${error}` ); } } From bd5e8ca3209886d5d67e5c78eaf9f3a55b6df55a Mon Sep 17 00:00:00 2001 From: jennypavlova Date: Tue, 21 Jan 2025 17:29:05 +0100 Subject: [PATCH 053/148] [Inventory v2] Fix issue with logs only views (#207305) Closes https://github.com/elastic/kibana/issues/206967 ## Summary After some changes related to V2 migration of getting the entities, there was an issue with the new data coming from the endpoint - the `data_stream.type` is a string instead of an array in case of a single data stream so this PR adds a fix to support that (and a test) ## Bug fixes - Service overview page loads for a logs-only data stream - After adding the fix, I saw another error related to the `useTheme` and changed it to use the `euiTheme` similar to the other changes related to the Borealis team upgrade ## Testing To test the scenario with services and hosts coming from logs (without APM / metrics) I added a new scenario in synthtrace so to test then we should: - Run the new scenario: `node scripts/synthtrace logs_only` (if possible on a clean ES) - Enable `observability:entityCentricExperience` in Stack Management > Advanced Setting - Go to Inventory and click on a service - The logs-only views should be available - Go to Inventory and click on a host - The logs-only views should be available https://github.com/user-attachments/assets/cfd5fd40-ac44-4807-9a29-f3ee3015d814 - Test one of the scenarios with mix of APM/metrics/logs - Run `node scripts/synthtrace infra_hosts_with_apm_hosts` - Enable `observability:entityCentricExperience` in Stack Management > Advanced Setting - Go to Inventory and click on a service from APM - The APM views (service/traces) should be available - Go to Inventory and click on a host - The asset details view should be available and show metrics https://github.com/user-attachments/assets/894c7c1a-aaa1-42cb-9dcb-05c9a5ca8177 - Infrastructure (Inventory/Hosts, etc) and Applications (Service Inventory/Traces, etc) should load the data for this scenario and not for the logs only (also for an oblt cluster connection) https://github.com/user-attachments/assets/4d092cc6-a8ad-4022-b980-b443be09acc9 --- .../src/scenarios/logs_only.ts | 79 +++++++++++++++++++ .../entities/utils/merge_entities.test.ts | 23 ++++++ .../routes/entities/utils/merge_entities.ts | 9 ++- .../components/add_data_panel/index.tsx | 11 ++- 4 files changed, 113 insertions(+), 9 deletions(-) create mode 100644 packages/kbn-apm-synthtrace/src/scenarios/logs_only.ts diff --git a/packages/kbn-apm-synthtrace/src/scenarios/logs_only.ts b/packages/kbn-apm-synthtrace/src/scenarios/logs_only.ts new file mode 100644 index 0000000000000..3c8838544d704 --- /dev/null +++ b/packages/kbn-apm-synthtrace/src/scenarios/logs_only.ts @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { LogDocument, log, generateShortId, generateLongId } from '@kbn/apm-synthtrace-client'; +import { Scenario } from '../cli/scenario'; +import { withClient } from '../lib/utils/with_client'; +import { parseLogsScenarioOpts } from './helpers/logs_scenario_opts_parser'; +import { IndexTemplateName } from '../lib/logs/custom_logsdb_index_templates'; +import { getCluster, getCloudRegion, getCloudProvider } from './helpers/logs_mock_data'; + +const MESSAGE_LOG_LEVELS = [ + { message: 'A simple log', level: 'info' }, + { message: 'Yet another debug log', level: 'debug' }, + { message: 'Error with certificate: "ca_trusted_fingerprint"', level: 'error' }, +]; + +const scenario: Scenario = async (runOptions) => { + const { isLogsDb } = parseLogsScenarioOpts(runOptions.scenarioOpts); + + return { + bootstrap: async ({ logsEsClient }) => { + if (isLogsDb) await logsEsClient.createIndexTemplate(IndexTemplateName.LogsDb); + }, + generate: ({ range, clients: { logsEsClient } }) => { + const { logger } = runOptions; + + const SERVICE_NAMES = Array(3) + .fill(null) + .map((_, idx) => `synth-service-logs-${idx}`); + + const logs = range + .interval('1m') + .rate(1) + .generator((timestamp) => { + return Array(20) + .fill(0) + .map(() => { + const index = Math.floor(Math.random() * 3); + const { clusterId, clusterName } = getCluster(index); + const cloudRegion = getCloudRegion(index); + return log + .create({ isLogsDb }) + .message(MESSAGE_LOG_LEVELS[index].message) + .logLevel(MESSAGE_LOG_LEVELS[index].level) + .service(SERVICE_NAMES[index]) + .defaults({ + 'trace.id': generateShortId(), + 'agent.name': 'synth-agent', + 'orchestrator.cluster.name': clusterName, + 'orchestrator.cluster.id': clusterId, + 'orchestrator.resource.id': generateShortId(), + 'cloud.provider': getCloudProvider(), + 'cloud.region': cloudRegion, + 'cloud.availability_zone': `${cloudRegion}a`, + 'cloud.project.id': generateShortId(), + 'cloud.instance.id': generateShortId(), + 'log.file.path': `/logs/${generateLongId()}/error.txt`, + }) + .timestamp(timestamp); + }); + }); + + return [ + withClient( + logsEsClient, + logger.perf('generating_logs', () => logs) + ), + ]; + }, + }; +}; + +export default scenario; diff --git a/x-pack/solutions/observability/plugins/apm/server/routes/entities/utils/merge_entities.test.ts b/x-pack/solutions/observability/plugins/apm/server/routes/entities/utils/merge_entities.test.ts index 867c8b10a8739..84fa43911f496 100644 --- a/x-pack/solutions/observability/plugins/apm/server/routes/entities/utils/merge_entities.test.ts +++ b/x-pack/solutions/observability/plugins/apm/server/routes/entities/utils/merge_entities.test.ts @@ -302,4 +302,27 @@ describe('mergeEntities', () => { }, ]); }); + it('has a single data stream type and no environment', () => { + const entities: EntityLatestServiceRaw[] = [ + { + 'data_stream.type': 'logs', + 'agent.name': ['nodejs', 'nodejs'], + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', + }, + ]; + const result = mergeEntities({ entities }); + expect(result).toEqual([ + { + agentName: 'nodejs' as AgentName, + dataStreamTypes: ['logs'], + environments: [], + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', + serviceName: 'service-1', + }, + ]); + }); }); diff --git a/x-pack/solutions/observability/plugins/apm/server/routes/entities/utils/merge_entities.ts b/x-pack/solutions/observability/plugins/apm/server/routes/entities/utils/merge_entities.ts index 383b07606de0a..bb1741116f173 100644 --- a/x-pack/solutions/observability/plugins/apm/server/routes/entities/utils/merge_entities.ts +++ b/x-pack/solutions/observability/plugins/apm/server/routes/entities/utils/merge_entities.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { compact, uniq } from 'lodash'; +import { castArray, compact, uniq } from 'lodash'; import type { EntityDataStreamType } from '@kbn/observability-shared-plugin/common'; import type { EntityLatestServiceRaw } from '../types'; import type { AgentName } from '../../../../typings/es_schemas/ui/fields/agent'; @@ -49,7 +49,7 @@ function mergeFunc(entity: EntityLatestServiceRaw, existingEntity?: MergedServic if (!existingEntity) { return { ...commonEntityFields, - dataStreamTypes: uniq(entity['data_stream.type']), + dataStreamTypes: uniq(castArray(entity['data_stream.type'])), environments: uniq( compact( Array.isArray(entity['service.environment']) @@ -62,7 +62,10 @@ function mergeFunc(entity: EntityLatestServiceRaw, existingEntity?: MergedServic return { ...commonEntityFields, dataStreamTypes: uniq( - compact([...(existingEntity?.dataStreamTypes ?? []), ...entity['data_stream.type']]) + compact([ + ...(existingEntity?.dataStreamTypes ?? []), + ...castArray(entity['data_stream.type']), + ]) ), environments: uniq(compact([...existingEntity?.environments, entity['service.environment']])), }; diff --git a/x-pack/solutions/observability/plugins/observability_shared/public/components/add_data_panel/index.tsx b/x-pack/solutions/observability/plugins/observability_shared/public/components/add_data_panel/index.tsx index f047fdb6b33d3..6cafcafaf44a2 100644 --- a/x-pack/solutions/observability/plugins/observability_shared/public/components/add_data_panel/index.tsx +++ b/x-pack/solutions/observability/plugins/observability_shared/public/components/add_data_panel/index.tsx @@ -8,6 +8,7 @@ /* eslint-disable @elastic/eui/href-or-on-click */ import { + COLOR_MODES_STANDARD, EuiButton, EuiButtonIcon, EuiFlexGroup, @@ -22,7 +23,6 @@ import { } from '@elastic/eui'; import React from 'react'; import { i18n } from '@kbn/i18n'; -import { useTheme } from '../../hooks/use_theme'; interface AddDataPanelContent { title: string; @@ -78,11 +78,10 @@ export function AddDataPanel({ onAddData, 'data-test-subj': dataTestSubj, }: AddDataPanelProps) { - const { euiTheme } = useEuiTheme(); - const theme = useTheme(); - const imgSrc = `${content.img?.baseFolderPath}/${theme.darkMode ? 'dark' : 'light'}/${ - content.img?.name - }`; + const { euiTheme, colorMode } = useEuiTheme(); + const imgSrc = `${content.img?.baseFolderPath}/${ + colorMode === COLOR_MODES_STANDARD.dark ? 'dark' : 'light' + }/${content.img?.name}`; return ( <> From d6ca7b95474fb3fc96e4f11ef28d2065d662cbbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20G=C3=BCrkan=20YALAMAN?= Date: Tue, 21 Jan 2025 17:31:25 +0100 Subject: [PATCH 054/148] [Synonyms UI] Search synonyms delete modal (#207075) Screenshot 2025-01-17 at 14 27 09 Screenshot 2025-01-17 at 14 27 14 ## Summary Adds delete modal to synonyms UI table. ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Identify risks Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss. Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging. - [ ] [See some risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) - [ ] ... --------- Co-authored-by: Liam Thompson <32779855+leemthompo@users.noreply.github.com> Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../search_synonyms/common/api_routes.ts | 1 + .../delete_synonyms_set_modal.test.tsx | 105 ++++++++++++++++++ .../delete_synonyms_set_modal.tsx | 69 ++++++++++++ .../components/synonym_sets/synonym_sets.tsx | 42 +++++++ .../hooks/use_delete_synonyms_set.test.tsx | 69 ++++++++++++ .../public/hooks/use_delete_synonyms_set.ts | 56 ++++++++++ .../server/lib/delete_synonyms_set.test.ts | 37 ++++++ .../server/lib/delete_synonyms_set.ts | 12 ++ .../plugins/search_synonyms/server/routes.ts | 39 +++++++ 9 files changed, 430 insertions(+) create mode 100644 x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/delete_synonyms_set_modal.test.tsx create mode 100644 x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/delete_synonyms_set_modal.tsx create mode 100644 x-pack/solutions/search/plugins/search_synonyms/public/hooks/use_delete_synonyms_set.test.tsx create mode 100644 x-pack/solutions/search/plugins/search_synonyms/public/hooks/use_delete_synonyms_set.ts create mode 100644 x-pack/solutions/search/plugins/search_synonyms/server/lib/delete_synonyms_set.test.ts create mode 100644 x-pack/solutions/search/plugins/search_synonyms/server/lib/delete_synonyms_set.ts diff --git a/x-pack/solutions/search/plugins/search_synonyms/common/api_routes.ts b/x-pack/solutions/search/plugins/search_synonyms/common/api_routes.ts index 00f459da50ac9..096aca8cbb2b2 100644 --- a/x-pack/solutions/search/plugins/search_synonyms/common/api_routes.ts +++ b/x-pack/solutions/search/plugins/search_synonyms/common/api_routes.ts @@ -7,4 +7,5 @@ export enum APIRoutes { SYNONYM_SETS = '/internal/search_synonyms/synonyms', + SYNONYM_SET_ID = '/internal/search_synonyms/synonyms/{synonymsSetId}', } diff --git a/x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/delete_synonyms_set_modal.test.tsx b/x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/delete_synonyms_set_modal.test.tsx new file mode 100644 index 0000000000000..a36b0d2d2f1ab --- /dev/null +++ b/x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/delete_synonyms_set_modal.test.tsx @@ -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 React from 'react'; + +import { DeleteSynonymsSetModal } from './delete_synonyms_set_modal'; +import { act, fireEvent, render, screen } from '@testing-library/react'; +import { useDeleteSynonymsSet } from '../../hooks/use_delete_synonyms_set'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; + +jest.mock('../../hooks/use_delete_synonyms_set', () => ({ + useDeleteSynonymsSet: jest.fn(() => ({ + mutate: jest.fn(), + })), +})); + +describe('DeleteSynonymsSetModal', () => { + const queryClient = new QueryClient(); + const Wrapper = ({ children }: { children?: React.ReactNode }) => ( + {children} + ); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should not use mutation when cancel is pressed', () => { + const onClose = jest.fn(); + const mutate = jest.fn(); + (useDeleteSynonymsSet as unknown as jest.Mock).mockReturnValue({ + mutate, + }); + render( + + + + ); + + act(() => { + fireEvent.click(screen.getByText('Cancel')); + }); + + expect(onClose).toHaveBeenCalled(); + expect(useDeleteSynonymsSet).toHaveBeenCalled(); + expect(mutate).not.toHaveBeenCalled(); + }); + + it('should delete the synonyms set when delete is pressed', () => { + const onClose = jest.fn(); + const mutate = jest.fn(); + + (useDeleteSynonymsSet as unknown as jest.Mock).mockReturnValue({ + mutate, + }); + + render( + + + + ); + + act(() => { + fireEvent.click(screen.getByText('Delete')); + }); + + expect(useDeleteSynonymsSet).toHaveBeenCalled(); + expect(onClose).not.toHaveBeenCalled(); + expect(mutate).toHaveBeenCalledWith({ synonymsSetId: '123' }); + }); + + it('should show error message if synonyms set is attached to an index', () => { + const onClose = jest.fn(); + const mutate = jest.fn(); + + (useDeleteSynonymsSet as unknown as jest.Mock).mockReturnValue({ + mutate, + }); + + render( + + + + ); + + act(() => { + fireEvent.click(screen.getByText('Delete')); + }); + + expect(useDeleteSynonymsSet).toHaveBeenCalled(); + expect(onClose).not.toHaveBeenCalled(); + expect(mutate).toHaveBeenCalledWith({ synonymsSetId: '123' }); + + act(() => { + (useDeleteSynonymsSet as unknown as jest.Mock).mock.calls[0][1]( + 'Synonyms set is attached to an index' + ); + }); + + expect(screen.getByText('Synonyms set is attached to an index')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/delete_synonyms_set_modal.tsx b/x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/delete_synonyms_set_modal.tsx new file mode 100644 index 0000000000000..c1c776f1d513d --- /dev/null +++ b/x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/delete_synonyms_set_modal.tsx @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; + +import { EuiCodeBlock, EuiConfirmModal } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { useDeleteSynonymsSet } from '../../hooks/use_delete_synonyms_set'; + +export interface DeleteSynonymsSetModalProps { + synonymsSetId: string; + closeDeleteModal: () => void; +} + +export const DeleteSynonymsSetModal = ({ + closeDeleteModal, + synonymsSetId, +}: DeleteSynonymsSetModalProps) => { + const [error, setError] = useState(null); + const [isLoading, setIsLoading] = useState(false); + const onSuccess = () => { + setIsLoading(false); + closeDeleteModal(); + }; + + const onError = (errorMessage: string) => { + setIsLoading(false); + setError(errorMessage); + }; + const { mutate: deleteEndpoint } = useDeleteSynonymsSet(onSuccess, onError); + const deleteOperation = () => { + setIsLoading(true); + deleteEndpoint({ synonymsSetId }); + }; + return ( + + {i18n.translate('xpack.searchSynonyms.deleteSynonymsSetModal.body', { + defaultMessage: + 'Deleting a synonym set currently in use will cause failures in the ingest and query attempts targeting the related semantic text fields.', + })} + {error && ( + + {error} + + )} + + ); +}; diff --git a/x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/synonym_sets.tsx b/x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/synonym_sets.tsx index 66e33f81f9da5..acce732d9f763 100644 --- a/x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/synonym_sets.tsx +++ b/x-pack/solutions/search/plugins/search_synonyms/public/components/synonym_sets/synonym_sets.tsx @@ -11,12 +11,14 @@ import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; import { DEFAULT_PAGE_VALUE, paginationToPage } from '../../../common/pagination'; import { useFetchSynonymsSets } from '../../hooks/use_fetch_synonyms_sets'; +import { DeleteSynonymsSetModal } from './delete_synonyms_set_modal'; export const SynonymSets = () => { const [pageIndex, setPageIndex] = useState(0); const [pageSize, setPageSize] = useState(DEFAULT_PAGE_VALUE.size); const { from } = paginationToPage({ pageIndex, pageSize, totalItemCount: 0 }); const { data: synonyms } = useFetchSynonymsSets({ from, size: pageSize }); + const [synonymsSetToDelete, setSynonymsSetToDelete] = React.useState(null); if (!synonyms) { return null; @@ -46,9 +48,49 @@ export const SynonymSets = () => {
{ruleCount}
), }, + { + actions: [ + { + name: i18n.translate('xpack.searchSynonyms.synonymsSetTable.actions.delete', { + defaultMessage: 'Delete', + }), + description: (synonymsSet: SynonymsGetSynonymsSetsSynonymsSetItem) => + i18n.translate('xpack.searchSynonyms.synonymsSetTable.actions.deleteDescription', { + defaultMessage: 'Delete synonyms set with {name}', + values: { name: synonymsSet.synonyms_set }, + }), + icon: 'trash', + color: 'danger', + type: 'icon', + onClick: (synonymsSet: SynonymsGetSynonymsSetsSynonymsSetItem) => { + setSynonymsSetToDelete(synonymsSet.synonyms_set); + }, + }, + { + name: i18n.translate('xpack.searchSynonyms.synonymsSetTable.actions.edit', { + defaultMessage: 'Edit', + }), + description: (synonymsSet: SynonymsGetSynonymsSetsSynonymsSetItem) => + i18n.translate('xpack.searchSynonyms.synonymsSetTable.actions.editDescription', { + defaultMessage: 'Edit synonyms set {name}', + values: { name: synonymsSet.synonyms_set }, + }), + icon: 'pencil', + color: 'text', + type: 'icon', + onClick: () => {}, + }, + ], + }, ]; return (
+ {synonymsSetToDelete && ( + setSynonymsSetToDelete(null)} + /> + )} { + beforeEach(() => { + mockUseKibana.mockReturnValue({ + services: { + http: { + delete: mockDelete, + }, + notifications: { + toasts: { + addSuccess: mockAddSuccess, + addError: mockAddError, + }, + }, + }, + }); + mockDelete.mockResolvedValue({}); + }); + + const wrapper = ({ children }: { children: React.ReactNode }) => { + const queryClient = new QueryClient(); + return {children}; + }; + + it('should delete the synonyms set if no index is attached', async () => { + const { result } = renderHook(() => useDeleteSynonymsSet(), { wrapper }); + + result.current.mutate({ synonymsSetId: '123' }); + await waitFor(() => + expect(mockDelete).toHaveBeenCalledWith('/internal/search_synonyms/synonyms/123') + ); + }); + + it('should show an error message if synonyms set is attached to an index', async () => { + const error = { + body: { message: 'Synonyms set is attached to an index and cannot be deleted' }, + }; + mockDelete.mockRejectedValue(error); + const { result } = renderHook(() => useDeleteSynonymsSet(), { wrapper }); + + result.current.mutate({ synonymsSetId: '123' }); + await waitFor(() => + expect(mockAddError).toHaveBeenCalledWith(new Error(error.body.message), { + title: 'Error deleting synonyms set', + toastMessage: error.body.message, + }) + ); + }); +}); diff --git a/x-pack/solutions/search/plugins/search_synonyms/public/hooks/use_delete_synonyms_set.ts b/x-pack/solutions/search/plugins/search_synonyms/public/hooks/use_delete_synonyms_set.ts new file mode 100644 index 0000000000000..f29da4ea5fb82 --- /dev/null +++ b/x-pack/solutions/search/plugins/search_synonyms/public/hooks/use_delete_synonyms_set.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMutation, useQueryClient } from '@tanstack/react-query'; +import { i18n } from '@kbn/i18n'; +import { KibanaServerError } from '@kbn/kibana-utils-plugin/common'; +import { useKibana } from './use_kibana'; + +interface MutationArgs { + synonymsSetId: string; +} + +export const useDeleteSynonymsSet = (onSuccess?: () => void, onError?: (error: string) => void) => { + const queryClient = useQueryClient(); + const { + services: { http, notifications }, + } = useKibana(); + + return useMutation( + async ({ synonymsSetId }: MutationArgs) => { + return await http.delete<{ acknowledged: boolean }>( + `/internal/search_synonyms/synonyms/${synonymsSetId}` + ); + }, + { + onSuccess: (_, { synonymsSetId }) => { + queryClient.invalidateQueries(['synonyms-sets-fetch']); + notifications?.toasts?.addSuccess({ + title: i18n.translate('xpack.searchSynonyms.deleteSynonymsSetSuccess', { + defaultMessage: 'Synonyms set {synonymsSetId} deleted', + values: { synonymsSetId }, + }), + }); + if (onSuccess) { + onSuccess(); + } + }, + onError: (error: { body: KibanaServerError }) => { + if (onError) { + onError(error.body.message); + } else { + notifications?.toasts?.addError(new Error(error.body.message), { + title: i18n.translate('xpack.searchSynonyms.deleteSynonymsSetError', { + defaultMessage: 'Error deleting synonyms set', + }), + toastMessage: error.body.message, + }); + } + }, + } + ); +}; diff --git a/x-pack/solutions/search/plugins/search_synonyms/server/lib/delete_synonyms_set.test.ts b/x-pack/solutions/search/plugins/search_synonyms/server/lib/delete_synonyms_set.test.ts new file mode 100644 index 0000000000000..80883c8082f9d --- /dev/null +++ b/x-pack/solutions/search/plugins/search_synonyms/server/lib/delete_synonyms_set.test.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ElasticsearchClient } from '@kbn/core/server'; +import { deleteSynonymsSet } from './delete_synonyms_set'; + +describe('delete synonyms sets lib function', () => { + const mockClient = { + synonyms: { + deleteSynonym: jest.fn(), + }, + }; + + const client = () => mockClient as unknown as ElasticsearchClient; + it('should delete synonym set when it is not attached to anything', async () => { + mockClient.synonyms.deleteSynonym.mockResolvedValue({ acknowledged: true }); + const response = await deleteSynonymsSet(client(), 'my-synonyms-set'); + expect(mockClient.synonyms.deleteSynonym).toHaveBeenCalledWith({ id: 'my-synonyms-set' }); + expect(response).toEqual({ acknowledged: true }); + }); + + it('should throw if synonym set is attached to an index', async () => { + mockClient.synonyms.deleteSynonym.mockRejectedValue( + new Error( + 'synonyms set [my-synonyms-set] cannot be deleted as it is used in the following indices: index-1, index-2' + ) + ); + expect(mockClient.synonyms.deleteSynonym).toHaveBeenCalledWith({ id: 'my-synonyms-set' }); + await expect(deleteSynonymsSet(client(), 'my-synonyms-set')).rejects.toThrowError( + 'synonyms set [my-synonyms-set] cannot be deleted as it is used in the following indices: index-1, index-2' + ); + }); +}); diff --git a/x-pack/solutions/search/plugins/search_synonyms/server/lib/delete_synonyms_set.ts b/x-pack/solutions/search/plugins/search_synonyms/server/lib/delete_synonyms_set.ts new file mode 100644 index 0000000000000..b79a4360caf20 --- /dev/null +++ b/x-pack/solutions/search/plugins/search_synonyms/server/lib/delete_synonyms_set.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ElasticsearchClient } from '@kbn/core/server'; + +export const deleteSynonymsSet = async (client: ElasticsearchClient, synonymsSetId: string) => { + return await client.synonyms.deleteSynonym({ id: synonymsSetId }); +}; diff --git a/x-pack/solutions/search/plugins/search_synonyms/server/routes.ts b/x-pack/solutions/search/plugins/search_synonyms/server/routes.ts index 4bcbb90f76b0a..a175f05cc874a 100644 --- a/x-pack/solutions/search/plugins/search_synonyms/server/routes.ts +++ b/x-pack/solutions/search/plugins/search_synonyms/server/routes.ts @@ -12,6 +12,7 @@ import { APIRoutes } from '../common/api_routes'; import { errorHandler } from './utils/error_handler'; import { fetchSynonymSets } from './lib/fetch_synonym_sets'; import { DEFAULT_PAGE_VALUE } from '../common/pagination'; +import { deleteSynonymsSet } from './lib/delete_synonyms_set'; export function defineRoutes({ logger, router }: { logger: Logger; router: IRouter }) { router.get( @@ -62,4 +63,42 @@ export function defineRoutes({ logger, router }: { logger: Logger; router: IRout }); }) ); + + router.delete( + { + path: APIRoutes.SYNONYM_SET_ID, + options: { + access: 'internal', + tags: ['synonyms:write', 'synonyms:read'], + }, + security: { + authz: { + requiredPrivileges: ['synonyms:write', 'synonyms:read'], + }, + }, + validate: { + params: schema.object({ + synonymsSetId: schema.string(), + }), + }, + }, + errorHandler(logger)(async (context, request, response) => { + const core = await context.core; + const { + client: { asCurrentUser }, + } = core.elasticsearch; + const user = core.security.authc.getCurrentUser(); + if (!user) { + return response.customError({ + statusCode: 502, + body: 'Could not retrieve current user, security plugin is not ready', + }); + } + const synonymsSetId = request.params.synonymsSetId; + const result = await deleteSynonymsSet(asCurrentUser, synonymsSetId); + return response.ok({ + body: result, + }); + }) + ); } From 027d5bcfee9d1faf7c9a40cb6217bd102a66e5e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20Gonz=C3=A1lez?= Date: Tue, 21 Jan 2025 17:51:33 +0100 Subject: [PATCH 055/148] [Search] Web Crawler search results consistency (#207049) ## Summary This PR returns in the top Global search only 1 element when searching for "crawler..." taking users to the Web Crawlers section and using the Web Crawler icon: ![CleanShot 2025-01-20 at 15 06 49](https://github.com/user-attachments/assets/2e1317a1-faa9-402e-97f6-a7d4449a9ae6) When searching for "crawler.." in the Integrations search the tile has also the custom Web Crawler icon and take users to the Web Crawler section: ![CleanShot 2025-01-20 at 15 07 25](https://github.com/user-attachments/assets/3ebd0b23-3573-48ec-90f9-9849ba87898a) --------- Co-authored-by: Elastic Machine --- .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - .../enterprise_search/public/plugin.ts | 6 +- .../enterprise_search/server/integrations.ts | 11 +- .../enterprise_search/server/plugin.ts | 13 +-- .../utils/search_result_provider.test.ts | 103 ++---------------- .../server/utils/search_result_provider.ts | 15 +-- 8 files changed, 25 insertions(+), 126 deletions(-) diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index 21f1a92eb4de9..fe28000e5a237 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -17560,7 +17560,6 @@ "xpack.enterpriseSearch.searchNav.otherTools": "Autres outils", "xpack.enterpriseSearch.searchNav.relevance": "Pertinence", "xpack.enterpriseSearch.searchProvider.aiSearch.name": "Intelligence artificielle de recherche", - "xpack.enterpriseSearch.searchProvider.webCrawler.name": "Robot d'indexation d'Elastic", "xpack.enterpriseSearch.selectConnector.badgeOnClick.ariaLabel": "Cliquer pour ouvrir la fenêtre contextuelle d'explication du connecteur", "xpack.enterpriseSearch.selectConnector.connectorClientBadgeLabel": "Autogéré", "xpack.enterpriseSearch.selectConnector.h4.connectorClientsLabel": "Connecteurs autogérés", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index d1d6b0f49be4f..368abc9440caa 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -17418,7 +17418,6 @@ "xpack.enterpriseSearch.searchNav.mngt": "スタック管理", "xpack.enterpriseSearch.searchNav.otherTools": "その他のツール", "xpack.enterpriseSearch.searchProvider.aiSearch.name": "検索AI", - "xpack.enterpriseSearch.searchProvider.webCrawler.name": "Elastic Webクローラー", "xpack.enterpriseSearch.selectConnector.badgeOnClick.ariaLabel": "クリックすると、コネクター説明ポップオーバーが開きます", "xpack.enterpriseSearch.selectConnector.connectorClientBadgeLabel": "セルフマネージド", "xpack.enterpriseSearch.selectConnector.h4.connectorClientsLabel": "セルフマネージドコネクター", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index db9a46c59db9d..176c3b4604a12 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -17139,7 +17139,6 @@ "xpack.enterpriseSearch.searchNav.otherTools": "其他工具", "xpack.enterpriseSearch.searchNav.relevance": "相关性", "xpack.enterpriseSearch.searchProvider.aiSearch.name": "搜索 AI", - "xpack.enterpriseSearch.searchProvider.webCrawler.name": "Elastic 网络爬虫", "xpack.enterpriseSearch.selectConnector.badgeOnClick.ariaLabel": "单击以打开连接器说明弹出框", "xpack.enterpriseSearch.selectConnector.connectorClientBadgeLabel": "自管型", "xpack.enterpriseSearch.selectConnector.h4.connectorClientsLabel": "自管型连接器", diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/plugin.ts b/x-pack/solutions/search/plugins/enterprise_search/public/plugin.ts index e71a548135eb1..66e375443e383 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/plugin.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/public/plugin.ts @@ -58,8 +58,10 @@ import { hasEnterpriseLicense } from '../common/utils/licensing'; import { SEARCH_APPLICATIONS_PATH } from './applications/applications/routes'; import { CONNECTORS_PATH, CRAWLERS_PATH } from './applications/enterprise_search_content/routes'; - import { docLinks } from './applications/shared/doc_links'; +import connectorIcon from './assets/images/connector.svg'; +import crawlerIcon from './assets/images/crawler.svg'; + import type { DynamicSideNavItems } from './navigation_tree'; export interface ClientData extends InitialAppData { @@ -107,6 +109,7 @@ export type UpdateSideNavDefinitionFn = (items: Partial) => const contentLinks: AppDeepLink[] = [ { + euiIconType: connectorIcon, id: 'connectors', path: `/${CONNECTORS_PATH}`, title: i18n.translate('xpack.enterpriseSearch.navigation.contentConnectorsLinkLabel', { @@ -114,6 +117,7 @@ const contentLinks: AppDeepLink[] = [ }), }, { + euiIconType: crawlerIcon, id: 'webCrawlers', path: `/${CRAWLERS_PATH}`, title: i18n.translate('xpack.enterpriseSearch.navigation.contentWebcrawlersLinkLabel', { diff --git a/x-pack/solutions/search/plugins/enterprise_search/server/integrations.ts b/x-pack/solutions/search/plugins/enterprise_search/server/integrations.ts index cc1682386642b..cca2c84aa8555 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/server/integrations.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/server/integrations.ts @@ -11,23 +11,24 @@ import { ConfigType } from '.'; export const registerEnterpriseSearchIntegrations = ( config: ConfigType, - customIntegrations: CustomIntegrationsPluginSetup + customIntegrations: CustomIntegrationsPluginSetup, + crawlerAssetBasePath: string ) => { if (config.hasWebCrawler) { customIntegrations.registerCustomIntegration({ id: 'web_crawler', title: i18n.translate('xpack.enterpriseSearch.integrations.webCrawlerName', { - defaultMessage: 'Web crawler', + defaultMessage: 'Web Crawler', }), description: i18n.translate('xpack.enterpriseSearch.integrations.webCrawlerDescription', { defaultMessage: 'Add search to your website with the web crawler.', }), categories: ['search', 'web', 'elastic_stack', 'crawler'], - uiInternalPath: '/app/elasticsearch/content/crawlers/new_crawler', + uiInternalPath: '/app/elasticsearch/content/crawlers', icons: [ { - type: 'eui', - src: 'logoEnterpriseSearch', + type: 'svg', + src: crawlerAssetBasePath, }, ], shipper: 'search', diff --git a/x-pack/solutions/search/plugins/enterprise_search/server/plugin.ts b/x-pack/solutions/search/plugins/enterprise_search/server/plugin.ts index aaa133986b2ff..e4657c3e8a373 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/server/plugin.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/server/plugin.ts @@ -171,7 +171,11 @@ export class EnterpriseSearchPlugin implements Plugin { - const crawlerResult = { - icon: 'crawlerIcon.svg', - id: 'elastic-crawler', - score: 75, - title: 'Elastic Web Crawler', - type: 'Elasticsearch', - url: { - path: `${ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL}/crawlers/new_crawler`, - prependBasePath: true, - }, - }; - const mongoResult = { icon: 'mongodb.svg', id: 'mongodb', @@ -118,11 +106,9 @@ describe('Search search provider', () => { const searchResultProvider = getSearchResultProvider( { hasConnectors: true, - hasWebCrawler: true, } as any, connectors, - false, - 'crawlerIcon.svg' + false ); beforeEach(() => {}); @@ -132,20 +118,6 @@ describe('Search search provider', () => { }); describe('find', () => { - it('returns formatted results', () => { - getTestScheduler().run(({ expectObservable }) => { - expectObservable( - searchResultProvider.find( - { term: 'crawler' }, - { aborted$: NEVER, maxResults: 100, preference: '' }, - mockSearchProviderContext - ) - ).toBe('(a|)', { - a: [crawlerResult], - }); - }); - }); - it('returns everything on empty string', () => { getTestScheduler().run(({ expectObservable }) => { expectObservable( @@ -155,10 +127,7 @@ describe('Search search provider', () => { mockSearchProviderContext ) ).toBe('(a|)', { - a: expect.arrayContaining([ - { ...crawlerResult, score: 80 }, - { ...mongoResult, score: 80 }, - ]), + a: expect.arrayContaining([{ ...mongoResult, score: 80 }]), }); }); }); @@ -172,30 +141,7 @@ describe('Search search provider', () => { mockSearchProviderContext ) ).toBe('(a|)', { - a: [{ ...crawlerResult, score: 80 }], - }); - }); - }); - - it('omits crawler if config has crawler disabled', () => { - const searchProvider = getSearchResultProvider( - { - hasConnectors: true, - hasWebCrawler: false, - } as any, - connectors, - false, - 'crawlerIcon.svg' - ); - getTestScheduler().run(({ expectObservable }) => { - expectObservable( - searchProvider.find( - { term: '' }, - { aborted$: NEVER, maxResults: 100, preference: '' }, - mockSearchProviderContext - ) - ).toBe('(a|)', { - a: expect.not.arrayContaining([{ ...crawlerResult, score: 80 }]), + a: expect.arrayContaining([{ ...mongoResult, score: 80 }]), }); }); }); @@ -204,11 +150,9 @@ describe('Search search provider', () => { const searchProvider = getSearchResultProvider( { hasConnectors: false, - hasWebCrawler: true, } as any, connectors, - false, - 'crawlerIcon.svg' + false ); getTestScheduler().run(({ expectObservable }) => { expectObservable( @@ -263,41 +207,13 @@ describe('Search search provider', () => { }); }); }); - it('returns results for integrations tag', () => { - getTestScheduler().run(({ expectObservable }) => { - expectObservable( - searchResultProvider.find( - { term: 'crawler', types: ['integration'] }, - { aborted$: NEVER, maxResults: 1, preference: '' }, - mockSearchProviderContext - ) - ).toBe('(a|)', { - a: [crawlerResult], - }); - }); - }); - it('returns results for enterprise search tag', () => { - getTestScheduler().run(({ expectObservable }) => { - expectObservable( - searchResultProvider.find( - { term: 'crawler', types: ['enterprise search'] }, - { aborted$: NEVER, maxResults: 1, preference: '' }, - mockSearchProviderContext - ) - ).toBe('(a|)', { - a: [crawlerResult], - }); - }); - }); it('does not return results for legacy app search', () => { const searchProvider = getSearchResultProvider( { hasConnectors: false, - hasWebCrawler: false, } as any, connectors, - false, - 'crawlerIcon.svg' + false ); getTestScheduler().run(({ expectObservable }) => { expectObservable( @@ -315,11 +231,9 @@ describe('Search search provider', () => { const searchProvider = getSearchResultProvider( { hasConnectors: false, - hasWebCrawler: false, } as any, connectors, - false, - 'crawlerIcon.svg' + false ); getTestScheduler().run(({ expectObservable }) => { expectObservable( @@ -338,11 +252,9 @@ describe('Search search provider', () => { const searchProvider = getSearchResultProvider( { hasConnectors: true, - hasWebCrawler: true, } as any, connectors, - true, - 'crawlerIcon.svg' + true ); getTestScheduler().run(({ expectObservable }) => { expectObservable( @@ -353,7 +265,6 @@ describe('Search search provider', () => { ) ).toBe('(a|)', { a: expect.arrayContaining([ - { ...crawlerResult, score: 80 }, { ...nativeMongoResult, score: 80 }, { ...customizedConnectorResult, score: 80 }, ]), diff --git a/x-pack/solutions/search/plugins/enterprise_search/server/utils/search_result_provider.ts b/x-pack/solutions/search/plugins/enterprise_search/server/utils/search_result_provider.ts index 6da354495ea0d..47c99f1e59461 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/server/utils/search_result_provider.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/server/utils/search_result_provider.ts @@ -73,8 +73,7 @@ export function toSearchResult({ export function getSearchResultProvider( config: ConfigType, connectorTypes: ConnectorServerSideDefinition[], - isCloud: boolean, - crawlerIconPath: string + isCloud: boolean ): GlobalSearchResultProvider { return { find: ({ term, types, tags }, { aborted$, maxResults }, { core: { capabilities } }) => { @@ -93,18 +92,6 @@ export function getSearchResultProvider( } const services: ServiceDefinition[] = [ - ...(config.hasWebCrawler - ? [ - { - iconPath: crawlerIconPath, - keywords: ['crawler', 'web', 'website', 'internet', 'google'], - name: i18n.translate('xpack.enterpriseSearch.searchProvider.webCrawler.name', { - defaultMessage: 'Elastic Web Crawler', - }), - serviceType: ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE, - }, - ] - : []), ...(config.hasConnectors ? connectorTypes : []), { From 3ccac04ec0760959241e53e2eca4cf4b3d7f9df9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Tue, 21 Jan 2025 17:52:44 +0100 Subject: [PATCH 056/148] [Obs AI Assistant] Make KB tests more resilient by waiting for KB to be ready (#207272) Closes https://github.com/elastic/kibana/issues/207356 - Unskip knowledge base MKI tests - Improve resilience and reduce flakiness by waiting for the knowledge base to be ready Depends on: https://github.com/elastic/kibana/pull/207069 --- .../complete/functions/summarize.spec.ts | 19 ++++----- .../ai_assistant/knowledge_base/helpers.ts | 40 ++++++++++++++++++- .../knowledge_base/knowledge_base.spec.ts | 24 ++++------- .../knowledge_base_migration.spec.ts | 20 ++++------ .../knowledge_base_setup.spec.ts | 26 +++--------- .../knowledge_base_status.spec.ts | 23 ++++------- .../knowledge_base_user_instructions.spec.ts | 24 +++++------ .../tests/knowledge_base/helpers.ts | 2 +- .../knowledge_base_management/index.spec.ts | 4 +- 9 files changed, 87 insertions(+), 95 deletions(-) diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/summarize.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/summarize.spec.ts index 2f372975ee542..804d325cbe3bb 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/summarize.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/functions/summarize.spec.ts @@ -14,17 +14,19 @@ import { import type { DeploymentAgnosticFtrProviderContext } from '../../../../../ftr_provider_context'; import { invokeChatCompleteWithFunctionRequest } from './helpers'; import { - TINY_ELSER, clearKnowledgeBase, - createKnowledgeBaseModel, + importTinyElserModel, deleteInferenceEndpoint, deleteKnowledgeBaseModel, + setupKnowledgeBase, + waitForKnowledgeBaseReady, } from '../../knowledge_base/helpers'; export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderContext) { const log = getService('log'); const ml = getService('ml'); const es = getService('es'); + const retry = getService('retry'); const observabilityAIAssistantAPIClient = getService('observabilityAIAssistantApi'); describe('when calling summarize function', function () { @@ -34,16 +36,9 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon let connectorId: string; before(async () => { - await createKnowledgeBaseModel(ml); - const { status } = await observabilityAIAssistantAPIClient.admin({ - endpoint: 'POST /internal/observability_ai_assistant/kb/setup', - params: { - query: { - model_id: TINY_ELSER.id, - }, - }, - }); - expect(status).to.be(200); + await importTinyElserModel(ml); + await setupKnowledgeBase(observabilityAIAssistantAPIClient); + await waitForKnowledgeBaseReady({ observabilityAIAssistantAPIClient, log, retry }); proxy = await createLlmProxy(log); connectorId = await observabilityAIAssistantAPIClient.createProxyActionConnector({ diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/helpers.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/helpers.ts index 833cb0fd010cd..0d36c884f9015 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/helpers.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/helpers.ts @@ -5,8 +5,12 @@ * 2.0. */ +import expect from '@kbn/expect'; import { Client } from '@elastic/elasticsearch'; import { AI_ASSISTANT_KB_INFERENCE_ID } from '@kbn/observability-ai-assistant-plugin/server/service/inference_endpoint'; +import { ToolingLog } from '@kbn/tooling-log'; +import { RetryService } from '@kbn/ftr-common-functional-services'; +import type { ObservabilityAIAssistantApiClient } from '../../../../services/observability_ai_assistant_api'; import { MachineLearningProvider } from '../../../../../services/ml'; import { SUPPORTED_TRAINED_MODELS } from '../../../../../../functional/services/ml/api'; @@ -15,7 +19,7 @@ export const TINY_ELSER = { id: SUPPORTED_TRAINED_MODELS.TINY_ELSER.name, }; -export async function createKnowledgeBaseModel(ml: ReturnType) { +export async function importTinyElserModel(ml: ReturnType) { const config = { ...ml.api.getTrainedModelConfig(TINY_ELSER.name), input: { @@ -27,6 +31,40 @@ export async function createKnowledgeBaseModel(ml: ReturnType { + log.debug(`Waiting for knowledge base to be ready...`); + const res = await observabilityAIAssistantAPIClient.editor({ + endpoint: 'GET /internal/observability_ai_assistant/kb/status', + }); + expect(res.status).to.be(200); + expect(res.body.ready).to.be(true); + }); +} + export async function deleteKnowledgeBaseModel(ml: ReturnType) { await ml.api.stopTrainedModelDeploymentES(TINY_ELSER.id, true); await ml.api.deleteTrainedModelES(TINY_ELSER.id); diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base.spec.ts index 1e3937cd7c1be..8e5e02837be1b 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base.spec.ts @@ -9,34 +9,26 @@ import expect from '@kbn/expect'; import { type KnowledgeBaseEntry } from '@kbn/observability-ai-assistant-plugin/common'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; import { - TINY_ELSER, clearKnowledgeBase, - createKnowledgeBaseModel, + importTinyElserModel, deleteInferenceEndpoint, deleteKnowledgeBaseModel, + setupKnowledgeBase, + waitForKnowledgeBaseReady, } from './helpers'; export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderContext) { const ml = getService('ml'); const es = getService('es'); + const log = getService('log'); + const retry = getService('retry'); const observabilityAIAssistantAPIClient = getService('observabilityAIAssistantApi'); describe('Knowledge base', function () { - // Fails on MKI: https://github.com/elastic/kibana/issues/205581 - this.tags(['failsOnMKI']); before(async () => { - await createKnowledgeBaseModel(ml); - - const { status } = await observabilityAIAssistantAPIClient.admin({ - endpoint: 'POST /internal/observability_ai_assistant/kb/setup', - params: { - query: { - model_id: TINY_ELSER.id, - }, - }, - }); - - expect(status).to.be(200); + await importTinyElserModel(ml); + await setupKnowledgeBase(observabilityAIAssistantAPIClient); + await waitForKnowledgeBaseReady({ observabilityAIAssistantAPIClient, log, retry }); }); after(async () => { diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts index 550aa1b8470e2..ae13a3525bae8 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts @@ -13,10 +13,11 @@ import { KnowledgeBaseEntry } from '@kbn/observability-ai-assistant-plugin/commo import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; import { deleteKnowledgeBaseModel, - createKnowledgeBaseModel, + importTinyElserModel, clearKnowledgeBase, deleteInferenceEndpoint, - TINY_ELSER, + setupKnowledgeBase, + waitForKnowledgeBaseReady, } from './helpers'; interface InferenceChunk { @@ -46,6 +47,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon const es = getService('es'); const ml = getService('ml'); const retry = getService('retry'); + const log = getService('log'); const archive = 'x-pack/test/functional/es_archives/observability/ai_assistant/knowledge_base_8_15'; @@ -74,17 +76,9 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon before(async () => { await clearKnowledgeBase(es); await esArchiver.load(archive); - await createKnowledgeBaseModel(ml); - const { status } = await observabilityAIAssistantAPIClient.admin({ - endpoint: 'POST /internal/observability_ai_assistant/kb/setup', - params: { - query: { - model_id: TINY_ELSER.id, - }, - }, - }); - - expect(status).to.be(200); + await importTinyElserModel(ml); + await setupKnowledgeBase(observabilityAIAssistantAPIClient); + await waitForKnowledgeBaseReady({ observabilityAIAssistantAPIClient, log, retry }); }); after(async () => { diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_setup.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_setup.spec.ts index 07782b7be5082..84409e960966e 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_setup.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_setup.spec.ts @@ -9,9 +9,10 @@ import expect from '@kbn/expect'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; import { deleteKnowledgeBaseModel, - createKnowledgeBaseModel, + importTinyElserModel, TINY_ELSER, deleteInferenceEndpoint, + setupKnowledgeBase, } from './helpers'; export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderContext) { @@ -26,17 +27,8 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon }); it('returns model info when successful', async () => { - await createKnowledgeBaseModel(ml); - const res = await observabilityAIAssistantAPIClient.admin({ - endpoint: 'POST /internal/observability_ai_assistant/kb/setup', - params: { - query: { - model_id: TINY_ELSER.id, - }, - }, - }); - - expect(res.status).to.be(200); + await importTinyElserModel(ml); + const res = await setupKnowledgeBase(observabilityAIAssistantAPIClient); expect(res.body.service_settings.model_id).to.be('pt_tiny_elser'); expect(res.body.inference_id).to.be('obs_ai_assistant_kb_inference'); @@ -46,15 +38,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon }); it('returns error message if model is not deployed', async () => { - const res = await observabilityAIAssistantAPIClient.admin({ - endpoint: 'POST /internal/observability_ai_assistant/kb/setup', - params: { - query: { - model_id: TINY_ELSER.id, - }, - }, - }); - + const res = await setupKnowledgeBase(observabilityAIAssistantAPIClient); expect(res.status).to.be(500); // @ts-expect-error diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_status.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_status.spec.ts index 0bfc51e38092c..127015bdf4925 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_status.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_status.spec.ts @@ -10,32 +10,25 @@ import { AI_ASSISTANT_KB_INFERENCE_ID } from '@kbn/observability-ai-assistant-pl import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; import { deleteKnowledgeBaseModel, - createKnowledgeBaseModel, + importTinyElserModel, TINY_ELSER, deleteInferenceEndpoint, + setupKnowledgeBase, + waitForKnowledgeBaseReady, } from './helpers'; export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderContext) { const ml = getService('ml'); const es = getService('es'); + const log = getService('log'); + const retry = getService('retry'); const observabilityAIAssistantAPIClient = getService('observabilityAIAssistantApi'); describe('/internal/observability_ai_assistant/kb/status', function () { - // Fails on MKI: https://github.com/elastic/kibana/issues/205677 - this.tags(['failsOnMKI']); - beforeEach(async () => { - await createKnowledgeBaseModel(ml); - const { status } = await observabilityAIAssistantAPIClient.admin({ - endpoint: 'POST /internal/observability_ai_assistant/kb/setup', - params: { - query: { - model_id: TINY_ELSER.id, - }, - }, - }); - - expect(status).to.be(200); + await importTinyElserModel(ml); + await setupKnowledgeBase(observabilityAIAssistantAPIClient); + await waitForKnowledgeBaseReady({ observabilityAIAssistantAPIClient, log, retry }); }); afterEach(async () => { diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts index bfa1454a90b07..a1068a1a66ccf 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts @@ -13,12 +13,13 @@ import { Instruction } from '@kbn/observability-ai-assistant-plugin/common/types import pRetry from 'p-retry'; import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; import { - TINY_ELSER, clearConversations, clearKnowledgeBase, - createKnowledgeBaseModel, + importTinyElserModel, deleteInferenceEndpoint, deleteKnowledgeBaseModel, + setupKnowledgeBase, + waitForKnowledgeBaseReady, } from './helpers'; import { getConversationCreatedEvent } from '../helpers'; import { @@ -36,19 +37,10 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon const retry = getService('retry'); describe('Knowledge base user instructions', function () { - // Fails on MKI: https://github.com/elastic/kibana/issues/205581 - this.tags(['failsOnMKI']); before(async () => { - await createKnowledgeBaseModel(ml); - const { status } = await observabilityAIAssistantAPIClient.admin({ - endpoint: 'POST /internal/observability_ai_assistant/kb/setup', - params: { - query: { - model_id: TINY_ELSER.id, - }, - }, - }); - expect(status).to.be(200); + await importTinyElserModel(ml); + await setupKnowledgeBase(observabilityAIAssistantAPIClient); + await waitForKnowledgeBaseReady({ observabilityAIAssistantAPIClient, log, retry }); }); after(async () => { @@ -181,6 +173,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon endpoint: 'PUT /internal/observability_ai_assistant/kb/user_instructions', params: { body: adminInstruction }, }); + expect(statusAdmin).to.be(200); // wait for the public instruction to be indexed before proceeding @@ -264,6 +257,9 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon }); describe('when a user instruction exist and a conversation is created', () => { + // Fails on MKI because the LLM Proxy does not yet work there: https://github.com/elastic/obs-ai-assistant-team/issues/199 + this.tags(['failsOnMKI']); + let proxy: LlmProxy; let connectorId: string; diff --git a/x-pack/test/observability_ai_assistant_api_integration/tests/knowledge_base/helpers.ts b/x-pack/test/observability_ai_assistant_api_integration/tests/knowledge_base/helpers.ts index f4b871679f8e8..2d7acb7fd485e 100644 --- a/x-pack/test/observability_ai_assistant_api_integration/tests/knowledge_base/helpers.ts +++ b/x-pack/test/observability_ai_assistant_api_integration/tests/knowledge_base/helpers.ts @@ -15,7 +15,7 @@ export const TINY_ELSER = { id: SUPPORTED_TRAINED_MODELS.TINY_ELSER.name, }; -export async function createKnowledgeBaseModel(ml: ReturnType) { +export async function importTinyElserModel(ml: ReturnType) { const config = { ...ml.api.getTrainedModelConfig(TINY_ELSER.name), input: { diff --git a/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base_management/index.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base_management/index.spec.ts index 300fec6aa45aa..87ada1e65a754 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base_management/index.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/knowledge_base_management/index.spec.ts @@ -10,7 +10,7 @@ import { subj as testSubjSelector } from '@kbn/test-subj-selector'; import { TINY_ELSER, clearKnowledgeBase, - createKnowledgeBaseModel, + importTinyElserModel, deleteInferenceEndpoint, deleteKnowledgeBaseModel, } from '../../../observability_ai_assistant_api_integration/tests/knowledge_base/helpers'; @@ -53,7 +53,7 @@ export default function ApiTest({ getService, getPageObjects }: FtrProviderConte await clearKnowledgeBase(es); // create a knowledge base model - await createKnowledgeBaseModel(ml); + await importTinyElserModel(ml); await Promise.all([ // setup the knowledge base From 888dd240bdcaa93340767083653521a44c115845 Mon Sep 17 00:00:00 2001 From: Pablo Machado Date: Tue, 21 Jan 2025 17:54:20 +0100 Subject: [PATCH 057/148] [SecuritySolution] Add service enrichment to detection engine (#206582) ## Summary * Add alert enrichment for `service.asset.criticality`, `service.risk.calculated_level` and `service.risk.calculated_score_norm` fields * Add `Service Risk Level` and `Service Criticality` columns to the alerts table ![Screenshot 2025-01-17 at 11 58 50](https://github.com/user-attachments/assets/0871dce3-338f-4123-a868-6d23b3a35763) ### How to test? * Enable the flag `serviceEntityStoreEnabled ` * Start an empty kibana instance * Add data using the document generator with the `yarn start entity-store` command. * Add a seed when prompted * Assign asset criticality for the service entity you are testing with * Ensure the service entity you are testing with has a risk score. * You can run the engine from the Risk score page if needed. * Add more data using the same seed * Force the created rule to run so it generates new alerts * Check if the alerts created for the new batch of data have the new field populated. ### How does enrichment work? When alerts are created, the current asset criticality and risk score are fetched and merged into the alert document. These values won't get updated if the risk score or asset changes. ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../src/schemas/generated/security_schema.ts | 3 + .../alert_as_data_fields.test.ts.snap | 120 ++++++++++++++++++ .../model/alerts/8.13.0/index.ts | 2 +- .../model/alerts/8.18.0/index.ts | 62 +++++++++ .../detection_engine/model/alerts/index.ts | 34 ++--- .../common/field_maps/8.18.0/alerts.ts | 43 +++++++ .../common/field_maps/8.18.0/index.ts | 11 ++ .../common/field_maps/field_names.ts | 4 + .../common/field_maps/index.ts | 9 +- .../alerts_table/default_config.test.tsx | 10 ++ .../components/alerts_table/translations.ts | 14 ++ .../security_solution_detections/columns.ts | 16 +++ .../body/renderers/formatted_field.tsx | 7 +- .../__snapshots__/build_alert.test.ts.snap | 6 + .../rule_types/factories/utils/build_alert.ts | 6 + .../utils/enrichments/__mocks__/alerts.ts | 6 + .../enrichment_by_type/asset_criticality.ts | 28 +++- .../enrichment_by_type/service_risk.ts | 56 ++++++++ .../utils/enrichments/index.test.ts | 52 ++++++-- .../rule_types/utils/enrichments/index.ts | 37 ++++-- 20 files changed, 481 insertions(+), 45 deletions(-) create mode 100644 x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.18.0/index.ts create mode 100644 x-pack/solutions/security/plugins/security_solution/common/field_maps/8.18.0/alerts.ts create mode 100644 x-pack/solutions/security/plugins/security_solution/common/field_maps/8.18.0/index.ts create mode 100644 x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/service_risk.ts diff --git a/src/platform/packages/shared/kbn-alerts-as-data-utils/src/schemas/generated/security_schema.ts b/src/platform/packages/shared/kbn-alerts-as-data-utils/src/schemas/generated/security_schema.ts index 58e1d8ebd1f46..ef774db2cf8db 100644 --- a/src/platform/packages/shared/kbn-alerts-as-data-utils/src/schemas/generated/security_schema.ts +++ b/src/platform/packages/shared/kbn-alerts-as-data-utils/src/schemas/generated/security_schema.ts @@ -212,6 +212,9 @@ const SecurityAlertOptional = rt.partial({ 'kibana.alert.workflow_tags': schemaStringArray, 'kibana.alert.workflow_user': schemaString, 'kibana.version': schemaString, + 'service.asset.criticality': schemaString, + 'service.risk.calculated_level': schemaString, + 'service.risk.calculated_score_norm': schemaNumber, tags: schemaStringArray, 'user.asset.criticality': schemaString, }); diff --git a/x-pack/platform/plugins/shared/alerting/server/integration_tests/__snapshots__/alert_as_data_fields.test.ts.snap b/x-pack/platform/plugins/shared/alerting/server/integration_tests/__snapshots__/alert_as_data_fields.test.ts.snap index 0513842a6126b..160d41fa2f677 100644 --- a/x-pack/platform/plugins/shared/alerting/server/integration_tests/__snapshots__/alert_as_data_fields.test.ts.snap +++ b/x-pack/platform/plugins/shared/alerting/server/integration_tests/__snapshots__/alert_as_data_fields.test.ts.snap @@ -1414,6 +1414,21 @@ Object { "required": false, "type": "version", }, + "service.asset.criticality": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_level": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_score_norm": Object { + "array": false, + "required": false, + "type": "float", + }, "signal.ancestors.depth": Object { "path": "kibana.alert.ancestors.depth", "required": false, @@ -2517,6 +2532,21 @@ Object { "required": false, "type": "version", }, + "service.asset.criticality": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_level": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_score_norm": Object { + "array": false, + "required": false, + "type": "float", + }, "signal.ancestors.depth": Object { "path": "kibana.alert.ancestors.depth", "required": false, @@ -3620,6 +3650,21 @@ Object { "required": false, "type": "version", }, + "service.asset.criticality": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_level": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_score_norm": Object { + "array": false, + "required": false, + "type": "float", + }, "signal.ancestors.depth": Object { "path": "kibana.alert.ancestors.depth", "required": false, @@ -4723,6 +4768,21 @@ Object { "required": false, "type": "version", }, + "service.asset.criticality": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_level": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_score_norm": Object { + "array": false, + "required": false, + "type": "float", + }, "signal.ancestors.depth": Object { "path": "kibana.alert.ancestors.depth", "required": false, @@ -5826,6 +5886,21 @@ Object { "required": false, "type": "version", }, + "service.asset.criticality": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_level": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_score_norm": Object { + "array": false, + "required": false, + "type": "float", + }, "signal.ancestors.depth": Object { "path": "kibana.alert.ancestors.depth", "required": false, @@ -6935,6 +7010,21 @@ Object { "required": false, "type": "version", }, + "service.asset.criticality": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_level": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_score_norm": Object { + "array": false, + "required": false, + "type": "float", + }, "signal.ancestors.depth": Object { "path": "kibana.alert.ancestors.depth", "required": false, @@ -8038,6 +8128,21 @@ Object { "required": false, "type": "version", }, + "service.asset.criticality": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_level": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_score_norm": Object { + "array": false, + "required": false, + "type": "float", + }, "signal.ancestors.depth": Object { "path": "kibana.alert.ancestors.depth", "required": false, @@ -9141,6 +9246,21 @@ Object { "required": false, "type": "version", }, + "service.asset.criticality": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_level": Object { + "array": false, + "required": false, + "type": "keyword", + }, + "service.risk.calculated_score_norm": Object { + "array": false, + "required": false, + "type": "float", + }, "signal.ancestors.depth": Object { "path": "kibana.alert.ancestors.depth", "required": false, diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.13.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.13.0/index.ts index e7066058ab8db..ea4f964fd8163 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.13.0/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.13.0/index.ts @@ -40,7 +40,7 @@ export interface BaseFields8130 extends BaseFields8120 { [ALERT_HOST_CRITICALITY]: string | undefined; [ALERT_USER_CRITICALITY]: string | undefined; /** - * Risk scores fields was added aroung 8.5.0, but the fields were not added to the alert schema + * Risk scores fields was added around 8.5.0, but the fields were not added to the alert schema */ [ALERT_HOST_RISK_SCORE_CALCULATED_LEVEL]: string | undefined; [ALERT_HOST_RISK_SCORE_CALCULATED_SCORE_NORM]: number | undefined; diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.18.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.18.0/index.ts new file mode 100644 index 0000000000000..a98e99289da15 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.18.0/index.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { AlertWithCommonFields800 } from '@kbn/rule-registry-plugin/common/schemas/8.0.0'; +import type { + Ancestor8160, + BaseFields8160, + EqlBuildingBlockFields8160, + EqlShellFields8160, + NewTermsFields8160, +} from '../8.16.0'; +import type { + ALERT_SERVICE_CRITICALITY, + ALERT_SERVICE_RISK_SCORE_CALCULATED_LEVEL, + ALERT_SERVICE_RISK_SCORE_CALCULATED_SCORE_NORM, +} from '../../../../../field_maps/field_names'; + +/* DO NOT MODIFY THIS SCHEMA TO ADD NEW FIELDS. These types represent the alerts that shipped in 8.18.0. +Any changes to these types should be bug fixes so the types more accurately represent the alerts from 8.18.0. +If you are adding new fields for a new release of Kibana, create a new sibling folder to this one +for the version to be released and add the field(s) to the schema in that folder. +Then, update `../index.ts` to import from the new folder that has the latest schemas, add the +new schemas to the union of all alert schemas, and re-export the new schemas as the `*Latest` schemas. +*/ + +export type { Ancestor8160 as Ancestor8180 }; + +export interface BaseFields8180 extends BaseFields8160 { + [ALERT_SERVICE_CRITICALITY]: string | undefined; + [ALERT_SERVICE_RISK_SCORE_CALCULATED_LEVEL]: string | undefined; + [ALERT_SERVICE_RISK_SCORE_CALCULATED_SCORE_NORM]: number | undefined; +} + +export interface WrappedFields8180 { + _id: string; + _index: string; + _source: T; +} + +export type GenericAlert8180 = AlertWithCommonFields800; + +export type EqlShellFields8180 = EqlShellFields8160 & BaseFields8180; + +export type EqlBuildingBlockFields8180 = EqlBuildingBlockFields8160 & BaseFields8180; + +export type NewTermsFields8180 = NewTermsFields8160 & BaseFields8180; + +export type NewTermsAlert8180 = NewTermsFields8160 & BaseFields8180; + +export type EqlBuildingBlockAlert8180 = AlertWithCommonFields800; + +export type EqlShellAlert8180 = AlertWithCommonFields800; + +export type DetectionAlert8180 = + | GenericAlert8180 + | EqlShellAlert8180 + | EqlBuildingBlockAlert8180 + | NewTermsAlert8180; diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/index.ts index 816c9a4c81897..6758b88bbb6ae 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/index.ts @@ -15,15 +15,16 @@ import type { DetectionAlert890 } from './8.9.0'; import type { DetectionAlert8120 } from './8.12.0'; import type { DetectionAlert8130 } from './8.13.0'; +import type { DetectionAlert8160 } from './8.16.0'; import type { - Ancestor8160, - BaseFields8160, - DetectionAlert8160, - EqlBuildingBlockFields8160, - EqlShellFields8160, - NewTermsFields8160, - WrappedFields8160, -} from './8.16.0'; + Ancestor8180, + BaseFields8180, + DetectionAlert8180, + EqlBuildingBlockFields8180, + EqlShellFields8180, + NewTermsFields8180, + WrappedFields8180, +} from './8.18.0'; // When new Alert schemas are created for new Kibana versions, add the DetectionAlert type from the new version // here, e.g. `export type DetectionAlert = DetectionAlert800 | DetectionAlert820` if a new schema is created in 8.2.0 @@ -36,14 +37,15 @@ export type DetectionAlert = | DetectionAlert890 | DetectionAlert8120 | DetectionAlert8130 - | DetectionAlert8160; + | DetectionAlert8160 + | DetectionAlert8180; export type { - Ancestor8160 as AncestorLatest, - BaseFields8160 as BaseFieldsLatest, - DetectionAlert8160 as DetectionAlertLatest, - WrappedFields8160 as WrappedFieldsLatest, - EqlBuildingBlockFields8160 as EqlBuildingBlockFieldsLatest, - EqlShellFields8160 as EqlShellFieldsLatest, - NewTermsFields8160 as NewTermsFieldsLatest, + Ancestor8180 as AncestorLatest, + BaseFields8180 as BaseFieldsLatest, + DetectionAlert8180 as DetectionAlertLatest, + WrappedFields8180 as WrappedFieldsLatest, + EqlBuildingBlockFields8180 as EqlBuildingBlockFieldsLatest, + EqlShellFields8180 as EqlShellFieldsLatest, + NewTermsFields8180 as NewTermsFieldsLatest, }; diff --git a/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.18.0/alerts.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.18.0/alerts.ts new file mode 100644 index 0000000000000..7c305f8506282 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.18.0/alerts.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { alertsFieldMap8160 } from '../8.16.0'; +import { + ALERT_SERVICE_CRITICALITY, + ALERT_SERVICE_RISK_SCORE_CALCULATED_LEVEL, + ALERT_SERVICE_RISK_SCORE_CALCULATED_SCORE_NORM, +} from '../field_names'; + +export const alertsFieldMap8180 = { + ...alertsFieldMap8160, + /** + * Stores the criticality level for the service, as determined by analysts, in relation to the alert. + * The Criticality level is copied from the asset criticality index. + */ + [ALERT_SERVICE_CRITICALITY]: { + type: 'keyword', + array: false, + required: false, + }, + + /** + * Stores the risk score level and score_norm level for the service, as determined by the Risk Engine, in relation to the alert. + * The Risk score is copied from the risk score index. + */ + [ALERT_SERVICE_RISK_SCORE_CALCULATED_LEVEL]: { + type: 'keyword', + array: false, + required: false, + }, + [ALERT_SERVICE_RISK_SCORE_CALCULATED_SCORE_NORM]: { + type: 'float', + array: false, + required: false, + }, +} as const; + +export type AlertsFieldMap8180 = typeof alertsFieldMap8180; diff --git a/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.18.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.18.0/index.ts new file mode 100644 index 0000000000000..9b07c180f513f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.18.0/index.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { AlertsFieldMap8180 } from './alerts'; +import { alertsFieldMap8180 } from './alerts'; +export type { AlertsFieldMap8180 }; +export { alertsFieldMap8180 }; diff --git a/x-pack/solutions/security/plugins/security_solution/common/field_maps/field_names.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/field_names.ts index b8ef2e61fb390..fa3407367b247 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/field_maps/field_names.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/field_maps/field_names.ts @@ -28,12 +28,16 @@ export const LEGACY_ALERT_USER_CRITICALITY = `${ALERT_NAMESPACE}.user.criticalit export const ALERT_HOST_CRITICALITY = `host.asset.criticality` as const; export const ALERT_USER_CRITICALITY = `user.asset.criticality` as const; +export const ALERT_SERVICE_CRITICALITY = `service.asset.criticality` as const; export const ALERT_HOST_RISK_SCORE_CALCULATED_LEVEL = `host.risk.calculated_level` as const; export const ALERT_HOST_RISK_SCORE_CALCULATED_SCORE_NORM = `host.risk.calculated_score_norm` as const; export const ALERT_USER_RISK_SCORE_CALCULATED_LEVEL = `user.risk.calculated_level` as const; export const ALERT_USER_RISK_SCORE_CALCULATED_SCORE_NORM = `user.risk.calculated_score_norm` as const; +export const ALERT_SERVICE_RISK_SCORE_CALCULATED_LEVEL = `service.risk.calculated_level` as const; +export const ALERT_SERVICE_RISK_SCORE_CALCULATED_SCORE_NORM = + `service.risk.calculated_score_norm` as const; export const ALERT_ORIGINAL_EVENT = `${ALERT_NAMESPACE}.original_event` as const; export const ALERT_ORIGINAL_EVENT_ACTION = `${ALERT_ORIGINAL_EVENT}.action` as const; diff --git a/x-pack/solutions/security/plugins/security_solution/common/field_maps/index.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/index.ts index 5080ff2660533..f992f78eedb76 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/field_maps/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/field_maps/index.ts @@ -4,10 +4,9 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -import type { AlertsFieldMap8160 } from './8.16.0'; -import { alertsFieldMap8160 } from './8.16.0'; +import type { AlertsFieldMap8180 } from './8.18.0'; +import { alertsFieldMap8180 } from './8.18.0'; import type { RulesFieldMap } from './8.0.0/rules'; import { rulesFieldMap } from './8.0.0/rules'; -export type { AlertsFieldMap8160 as AlertsFieldMap, RulesFieldMap }; -export { alertsFieldMap8160 as alertsFieldMap, rulesFieldMap }; +export type { AlertsFieldMap8180 as AlertsFieldMap, RulesFieldMap }; +export { alertsFieldMap8180 as alertsFieldMap, rulesFieldMap }; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx index 1d722391ba12b..8643504bf9f6f 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx @@ -79,6 +79,11 @@ const platinumBaseColumns = [ id: 'user.risk.calculated_level', displayAsText: 'User Risk Level', }, + { + columnHeaderType: 'not-filtered', + id: 'service.risk.calculated_level', + displayAsText: 'Service Risk Level', + }, { columnHeaderType: 'not-filtered', id: 'host.asset.criticality', @@ -89,6 +94,11 @@ const platinumBaseColumns = [ id: 'user.asset.criticality', displayAsText: 'User Criticality', }, + { + columnHeaderType: 'not-filtered', + id: 'service.asset.criticality', + displayAsText: 'Service Criticality', + }, { columnHeaderType: 'not-filtered', id: 'process.name' }, { columnHeaderType: 'not-filtered', id: 'file.name' }, { columnHeaderType: 'not-filtered', id: 'source.ip' }, diff --git a/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/translations.ts index b90484e4a795f..0467959a9f7f2 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/translations.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/translations.ts @@ -140,6 +140,13 @@ export const ALERTS_HEADERS_HOST_CRITICALITY = i18n.translate( } ); +export const ALERTS_HEADERS_SERVICE_RISK_LEVEL = i18n.translate( + 'xpack.securitySolution.eventsViewer.alerts.defaultHeaders.serviceRiskLevel', + { + defaultMessage: 'Service Risk Level', + } +); + export const ALERTS_HEADERS_USER_CRITICALITY = i18n.translate( 'xpack.securitySolution.eventsViewer.alerts.defaultHeaders.userCriticality', { @@ -147,6 +154,13 @@ export const ALERTS_HEADERS_USER_CRITICALITY = i18n.translate( } ); +export const ALERTS_HEADERS_SERVICE_CRITICALITY = i18n.translate( + 'xpack.securitySolution.eventsViewer.alerts.defaultHeaders.serviceCriticality', + { + defaultMessage: 'Service Criticality', + } +); + export const ACTION_INVESTIGATE_IN_TIMELINE = i18n.translate( 'xpack.securitySolution.detectionEngine.alerts.actions.investigateInTimelineTitle', { diff --git a/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts index 6ca0a67244179..14a5f31b63685 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts @@ -11,6 +11,8 @@ import { ALERT_USER_CRITICALITY, ALERT_HOST_RISK_SCORE_CALCULATED_LEVEL, ALERT_USER_RISK_SCORE_CALCULATED_LEVEL, + ALERT_SERVICE_RISK_SCORE_CALCULATED_LEVEL, + ALERT_SERVICE_CRITICALITY, } from '../../../../common/field_maps/field_names'; import type { LicenseService } from '../../../../common/license'; import type { ColumnHeaderOptions } from '../../../../common/types'; @@ -46,6 +48,12 @@ export const userRiskLevelColumn: ColumnHeaderOptions = { displayAsText: i18n.ALERTS_HEADERS_USER_RISK_LEVEL, }; +export const serviceRiskLevelColumn: ColumnHeaderOptions = { + columnHeaderType: defaultColumnHeaderType, + id: ALERT_SERVICE_RISK_SCORE_CALCULATED_LEVEL, + displayAsText: i18n.ALERTS_HEADERS_SERVICE_RISK_LEVEL, +}; + const getBaseColumns = ( license?: LicenseService ): Array< @@ -81,6 +89,7 @@ const getBaseColumns = ( }, isPlatinumPlus ? hostRiskLevelColumn : null, isPlatinumPlus ? userRiskLevelColumn : null, + isPlatinumPlus ? serviceRiskLevelColumn : null, isPlatinumPlus ? { columnHeaderType: defaultColumnHeaderType, @@ -95,6 +104,13 @@ const getBaseColumns = ( displayAsText: i18n.ALERTS_HEADERS_USER_CRITICALITY, } : null, + isPlatinumPlus + ? { + columnHeaderType: defaultColumnHeaderType, + id: ALERT_SERVICE_CRITICALITY, + displayAsText: i18n.ALERTS_HEADERS_SERVICE_CRITICALITY, + } + : null, { columnHeaderType: defaultColumnHeaderType, id: 'process.name', diff --git a/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx index d8d9e7ce023fe..379bf6c544fe3 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx @@ -17,6 +17,7 @@ import { EntityTypeToIdentifierField } from '../../../../../../common/entity_ana import { getAgentTypeForAgentIdField } from '../../../../../common/lib/endpoint/utils/get_agent_type_for_agent_id_field'; import { ALERT_HOST_CRITICALITY, + ALERT_SERVICE_CRITICALITY, ALERT_USER_CRITICALITY, } from '../../../../../../common/field_maps/field_names'; import { AgentStatus } from '../../../../../common/components/endpoint/agents/agent_status'; @@ -283,7 +284,11 @@ const FormattedFieldValueComponent: React.FC<{ iconSide={isButton ? 'right' : undefined} /> ); - } else if (fieldName === ALERT_HOST_CRITICALITY || fieldName === ALERT_USER_CRITICALITY) { + } else if ( + fieldName === ALERT_HOST_CRITICALITY || + fieldName === ALERT_USER_CRITICALITY || + fieldName === ALERT_SERVICE_CRITICALITY + ) { return ( [ const createEnrichmentFactoryFunction = ( - alertField: typeof ALERT_HOST_CRITICALITY | typeof ALERT_USER_CRITICALITY + alertField: + | typeof ALERT_HOST_CRITICALITY + | typeof ALERT_USER_CRITICALITY + | typeof ALERT_SERVICE_CRITICALITY ): CreateEnrichmentFunction => (enrichment) => (event) => { @@ -88,3 +92,25 @@ export const createUserAssetCriticalityEnrichments: CreateCriticalityEnrichment createEnrichmentFunction: createEnrichmentFactoryFunction(ALERT_USER_CRITICALITY), }); }; + +export const createServiceAssetCriticalityEnrichments: CreateCriticalityEnrichment = async ({ + services, + logger, + events, + spaceId, +}) => { + return createSingleFieldMatchEnrichment({ + name: 'Service Asset Criticality', + index: [getAssetCriticalityIndex(spaceId)], + services, + logger, + events, + mappingField: { + eventField: 'service.name', + enrichmentField: 'id_value', + }, + enrichmentResponseFields, + extraFilters: getExtraFiltersForEnrichment('service.name'), + createEnrichmentFunction: createEnrichmentFactoryFunction(ALERT_SERVICE_CRITICALITY), + }); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/service_risk.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/service_risk.ts new file mode 100644 index 0000000000000..52d29ad0b6e81 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/service_risk.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { set } from '@kbn/safer-lodash-set'; +import { cloneDeep } from 'lodash'; +import { + ALERT_SERVICE_RISK_SCORE_CALCULATED_LEVEL, + ALERT_SERVICE_RISK_SCORE_CALCULATED_SCORE_NORM, +} from '../../../../../../../common/field_maps/field_names'; +import { getRiskIndex } from '../../../../../../../common/search_strategy/security_solution/risk_score/common'; +import { RiskScoreFields } from '../../../../../../../common/search_strategy/security_solution/risk_score/all'; +import { createSingleFieldMatchEnrichment } from '../create_single_field_match_enrichment'; +import type { CreateRiskEnrichment } from '../types'; +import { getFieldValue } from '../utils/events'; + +export const createServiceRiskEnrichments: CreateRiskEnrichment = async ({ + services, + logger, + events, + spaceId, +}) => { + return createSingleFieldMatchEnrichment({ + name: 'Service Risk', + index: [getRiskIndex(spaceId, true)], + services, + logger, + events, + mappingField: { + eventField: 'service.name', + enrichmentField: RiskScoreFields.serviceName, + }, + enrichmentResponseFields: [ + RiskScoreFields.serviceName, + RiskScoreFields.serviceRisk, + RiskScoreFields.serviceRiskScore, + ], + createEnrichmentFunction: (enrichment) => (event) => { + const riskLevel = getFieldValue(enrichment, RiskScoreFields.serviceRisk); + const riskScore = getFieldValue(enrichment, RiskScoreFields.serviceRiskScore); + if (!riskLevel && !riskScore) { + return event; + } + const newEvent = cloneDeep(event); + if (riskLevel) { + set(newEvent, `_source.${ALERT_SERVICE_RISK_SCORE_CALCULATED_LEVEL}`, riskLevel); + } + if (riskScore) { + set(newEvent, `_source.${ALERT_SERVICE_RISK_SCORE_CALCULATED_SCORE_NORM}`, riskScore); + } + return newEvent; + }, + }); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.test.ts index 8aca14228d665..4d971f142017a 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.test.ts @@ -60,6 +60,23 @@ const userEnrichmentResponse = [ }, ]; +const serviceEnrichmentResponse = [ + { + fields: { + 'service.name': ['service name 1'], + 'service.risk.calculated_level': ['Moderate'], + 'service.risk.calculated_score_norm': [50], + }, + }, + { + fields: { + 'service.name': ['service name 2'], + 'service.risk.calculated_level': ['Critical'], + 'service.risk.calculated_score_norm': [90], + }, + }, +]; + const assetCriticalityUserResponse = [ { fields: { @@ -84,6 +101,15 @@ const assetCriticalityHostResponse = [ }, ]; +const assetCriticalityServiceResponse = [ + { + fields: { + id_value: ['service name 1'], + criticality_level: ['high'], + }, + }, +]; + describe('enrichEvents', () => { let ruleExecutionLogger: ReturnType; let alertServices: RuleExecutorServicesMock; @@ -132,7 +158,8 @@ describe('enrichEvents', () => { it('return enriched events with risk score', async () => { mockSearchEnrichments .mockReturnValueOnce(hostEnrichmentResponse) - .mockReturnValueOnce(userEnrichmentResponse); + .mockReturnValueOnce(userEnrichmentResponse) + .mockReturnValueOnce(serviceEnrichmentResponse); mockIsIndexExist.mockImplementation(() => true); const enrichedEvents = await enrichEvents({ @@ -142,8 +169,9 @@ describe('enrichEvents', () => { createAlert('1', { ...createEntity('host', 'host name 1'), ...createEntity('user', 'user name 1'), + ...createEntity('service', 'service name 1'), }), - createAlert('2', createEntity('user', 'user name 2')), + createAlert('2', createEntity('service', 'service name 2')), ], spaceId: 'default', }); @@ -164,10 +192,17 @@ describe('enrichEvents', () => { calculated_score_norm: 50, }, }, + service: { + name: 'service name 1', + risk: { + calculated_level: 'Moderate', + calculated_score_norm: 50, + }, + }, }), createAlert('2', { - user: { - name: 'user name 2', + service: { + name: 'service name 2', risk: { calculated_level: 'Critical', calculated_score_norm: 90, @@ -180,11 +215,11 @@ describe('enrichEvents', () => { it('return enriched events with asset criticality', async () => { mockSearchEnrichments .mockReturnValueOnce(assetCriticalityUserResponse) - .mockReturnValueOnce(assetCriticalityHostResponse); + .mockReturnValueOnce(assetCriticalityHostResponse) + .mockReturnValueOnce(assetCriticalityServiceResponse); // disable risk score enrichments mockIsIndexExist.mockImplementationOnce(() => false); - mockIsIndexExist.mockImplementationOnce(() => false); // enable for asset criticality mockIsIndexExist.mockImplementation(() => true); @@ -195,6 +230,7 @@ describe('enrichEvents', () => { createAlert('1', { ...createEntity('host', 'host name 1'), ...createEntity('user', 'user name 1'), + ...createEntity('service', 'service name 1'), }), createAlert('2', createEntity('host', 'user name 1')), ], @@ -206,9 +242,10 @@ describe('enrichEvents', () => { createAlert('1', { ...createEntity('user', 'user name 1'), ...createEntity('host', 'host name 1'), - + ...createEntity('service', 'service name 1'), 'host.asset.criticality': 'low', 'user.asset.criticality': 'important', + 'service.asset.criticality': 'high', }), createAlert('2', { ...createEntity('host', 'user name 1'), @@ -223,7 +260,6 @@ describe('enrichEvents', () => { }) .mockImplementationOnce(() => userEnrichmentResponse); mockIsIndexExist.mockImplementation(() => true); - mockIsIndexExist.mockImplementation(() => true); const enrichedEvents = await enrichEvents({ logger: ruleExecutionLogger, diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.ts index 211162d6c7459..1fcef5343ebed 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.ts @@ -11,6 +11,7 @@ import { createUserRiskEnrichments } from './enrichment_by_type/user_risk'; import { createHostAssetCriticalityEnrichments, + createServiceAssetCriticalityEnrichments, createUserAssetCriticalityEnrichments, } from './enrichment_by_type/asset_criticality'; import { getAssetCriticalityIndex } from '../../../../../../common/entity_analytics/asset_criticality'; @@ -22,6 +23,7 @@ import type { import { applyEnrichmentsToEvents } from './utils/transforms'; import { isIndexExist } from './utils/is_index_exist'; import { getRiskIndex } from '../../../../../../common/search_strategy'; +import { createServiceRiskEnrichments } from './enrichment_by_type/service_risk'; export const enrichEvents: EnrichEventsFunction = async ({ services, @@ -35,18 +37,12 @@ export const enrichEvents: EnrichEventsFunction = async ({ logger.debug('Alert enrichments started'); - const [isHostRiskScoreIndexExist, isUserRiskScoreIndexExist] = await Promise.all([ - isIndexExist({ - services, - index: getRiskIndex(spaceId, true), - }), - isIndexExist({ - services, - index: getRiskIndex(spaceId, true), - }), - ]); + const isRiskScoreIndexExist = await isIndexExist({ + services, + index: getRiskIndex(spaceId, true), + }); - if (isHostRiskScoreIndexExist) { + if (isRiskScoreIndexExist) { enrichments.push( createHostRiskEnrichments({ services, @@ -55,9 +51,7 @@ export const enrichEvents: EnrichEventsFunction = async ({ spaceId, }) ); - } - if (isUserRiskScoreIndexExist) { enrichments.push( createUserRiskEnrichments({ services, @@ -66,6 +60,15 @@ export const enrichEvents: EnrichEventsFunction = async ({ spaceId, }) ); + + enrichments.push( + createServiceRiskEnrichments({ + services, + logger, + events, + spaceId, + }) + ); } const assetCriticalityIndexExist = await isIndexExist({ @@ -89,6 +92,14 @@ export const enrichEvents: EnrichEventsFunction = async ({ spaceId, }) ); + enrichments.push( + createServiceAssetCriticalityEnrichments({ + services, + logger, + events, + spaceId, + }) + ); } const allEnrichmentsResults = await Promise.allSettled(enrichments); From 659ff02cec93281b04cf366f2ff42019be9ddeaf Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Tue, 21 Jan 2025 11:38:08 -0600 Subject: [PATCH 058/148] skip failing test suite (#207369) --- .../cases/public/components/files/file_name_link.test.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/platform/plugins/shared/cases/public/components/files/file_name_link.test.tsx b/x-pack/platform/plugins/shared/cases/public/components/files/file_name_link.test.tsx index 82944c772b170..c7536df5683e6 100644 --- a/x-pack/platform/plugins/shared/cases/public/components/files/file_name_link.test.tsx +++ b/x-pack/platform/plugins/shared/cases/public/components/files/file_name_link.test.tsx @@ -12,7 +12,8 @@ import userEvent from '@testing-library/user-event'; import { basicFileMock } from '../../containers/mock'; import { FileNameLink } from './file_name_link'; -describe('FileNameLink', () => { +// Failing: See https://github.com/elastic/kibana/issues/207369 +describe.skip('FileNameLink', () => { const defaultProps = { file: basicFileMock, showPreview: jest.fn(), From 1ec624524ee1fc48fea26069db7d063053ca94f7 Mon Sep 17 00:00:00 2001 From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Date: Tue, 21 Jan 2025 18:39:19 +0100 Subject: [PATCH 059/148] [Fleet] Disable `Upgrade agents on this policy` action when 0 agents (#207344) ## Summary Closes https://github.com/elastic/kibana/issues/205588 Disable the upgarde and uninstall action on the agent policy when there are 0 agents enrolled. image --- .../agent_policy/components/actions_menu.tsx | 2 ++ .../sections/agent_policy/list_page/index.test.tsx | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx index 942e051c511a7..166c63bbcf128 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx @@ -238,6 +238,7 @@ export const AgentPolicyActionMenu = memo<{ }} key="upgradeAgents" data-test-subj="agentPolicyActionMenuUpgradeAgentsButton" + disabled={(agentPolicy.agents || 0) === 0} > ({ useGetAgentPoliciesQuery: jest.fn().mockReturnValue({ data: { items: [ - { id: 'not_managed_policy', is_managed: false, updated_at: '2023-04-06T07:19:29.892Z' }, - { id: 'managed_policy', is_managed: true, updated_at: '2023-04-07T07:19:29.892Z' }, + { + id: 'not_managed_policy', + is_managed: false, + updated_at: '2023-04-06T07:19:29.892Z', + agents: 1, + }, + { + id: 'managed_policy', + is_managed: true, + updated_at: '2023-04-07T07:19:29.892Z', + agents: 1, + }, ], total: 2, } as GetAgentPoliciesResponse, From 8ff18e25758a05d4deff76ffa4b3407d98722a3c Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Tue, 21 Jan 2025 18:45:43 +0100 Subject: [PATCH 060/148] Fix useAbortableAsync race condition (#207365) `useAbortableAsync` can easily get confused about the current state - e.g. when a previous invocation gets aborted and a new one is started at the same time, the `loading` state gets set to false _after_ the next invocation got started, so it's false for the time it's running: ![old](https://github.com/user-attachments/assets/6a784b1a-58b2-4951-8d25-9f109bce39c5) You can see that while typing, the old slow request is aborted properly, but the `loading` state gets lost and the abort error from the last invocation is still set even though a new request is running already. This is not the only possible issue that could happen here - e.g. if the promise chain throws too late, an unrelated error could be set in the error handling logic, which is not related to the currently running `fn`. This is hard to fix because as the hook does not control the `fn`, it does not know at which point it resolves, even after a new invocation was started already. The abort signal asks the `fn` nicely to throw with an abort error, but it can't be controlled when that happens. This PR introduces a notion of the current "generation" and only accepts state updates from the most recent one. With this, the new invocation correctly sets the loading state after the abort - what happens to the old promise chain after the abort can't affect the state anymore: ![new](https://github.com/user-attachments/assets/b39dd725-6bf1-4ef1-9eb6-d1463e1ec146) I'm not sure whether this is the best way to resolve this issue, but I couldn't come up with a better way. Happy to adjust, but I think we need a solution that doesn't assume any special behavior of the passed in `fn`, otherwise this helper will always be super brittle. --- .../utils_browser/hooks/use_abortable_async.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/x-pack/solutions/observability/packages/utils_browser/hooks/use_abortable_async.ts b/x-pack/solutions/observability/packages/utils_browser/hooks/use_abortable_async.ts index f0d2bf4a05872..17dfde0736477 100644 --- a/x-pack/solutions/observability/packages/utils_browser/hooks/use_abortable_async.ts +++ b/x-pack/solutions/observability/packages/utils_browser/hooks/use_abortable_async.ts @@ -58,12 +58,17 @@ export function useAbortableAsync( const controller = new AbortController(); controllerRef.current = controller; + function isRequestStale() { + return controllerRef.current !== controller; + } + if (clearValueOnNext) { setValue(undefined); setError(undefined); } function handleError(err: Error) { + if (isRequestStale()) return; setError(err); if (unsetValueOnError) { setValue(undefined); @@ -78,11 +83,15 @@ export function useAbortableAsync( setLoading(true); response .then((nextValue) => { + if (isRequestStale()) return; setError(undefined); setValue(nextValue); }) .catch(handleError) - .finally(() => setLoading(false)); + .finally(() => { + if (isRequestStale()) return; + setLoading(false); + }); } else { setError(undefined); setValue(response); From 3719be0144d0f5b1fc71d1c564a41446c8ef3133 Mon Sep 17 00:00:00 2001 From: Devon Thomson Date: Tue, 21 Jan 2025 13:43:43 -0500 Subject: [PATCH 061/148] [Serialized state only] Update Library Transforms and Duplicate (#206140) Unifies the various `LibraryTransforms` interfaces, updates all by reference capable embeddables to use them in the same way, and migrates the clone functionality to use only serialized state. --- .../serialized_control_group_state.ts | 2 +- .../page_api.ts | 2 +- .../presentation_container_example/types.ts | 2 +- .../last_saved_state.ts | 2 +- .../saved_book/saved_book_editor.tsx | 24 ++-- .../saved_book_react_embeddable.tsx | 89 ++++++------ .../react_embeddables/saved_book/types.ts | 9 +- .../src/components/saved_search.tsx | 2 +- .../kbn-saved-search-component/tsconfig.json | 2 +- .../presentation_containers/index.ts | 6 - .../interfaces/child_state.ts | 9 +- .../interfaces/presentation_container.ts | 23 +++- .../initialize_unsaved_changes.ts | 2 +- .../presentation_containers/tsconfig.json | 1 - .../presentation_publishing/index.ts | 11 +- .../interfaces/has_library_transforms.ts | 120 ++++------------ .../interfaces/has_serializable_state.ts} | 6 + .../presentation_publishing/tsconfig.json | 3 +- .../embeddable/links_embeddable.test.tsx | 11 +- .../public/embeddable/links_embeddable.tsx | 92 +++++++------ .../plugins/private/links/public/types.ts | 4 +- .../control_group/init_controls_manager.ts | 9 +- .../utils/serialization_utils.ts | 2 +- .../data_controls/initialize_data_control.ts | 3 +- .../get_range_slider_control_factory.test.tsx | 2 +- .../initialize_default_control_api.tsx | 4 +- .../shared/controls/public/controls/types.ts | 2 +- .../dashboard_actions/actions_module.ts | 6 +- .../clone_panel_action.test.tsx | 5 + .../dashboard_actions/clone_panel_action.tsx | 4 + .../public/dashboard_actions/constants.ts | 2 - .../copy_to_dashboard_modal.tsx | 2 +- .../legacy_add_to_library_action.test.tsx | 79 ----------- .../legacy_add_to_library_action.tsx | 72 ---------- ...legacy_unlink_from_library_action.test.tsx | 78 ----------- .../legacy_unlink_from_library_action.tsx | 72 ---------- ...rary_action.tsx => library_add_action.tsx} | 72 +++++----- ...y_action.tsx => library_unlink_action.tsx} | 35 ++--- .../dashboard_actions/register_actions.ts | 14 -- .../public/dashboard_api/get_dashboard_api.ts | 62 +++++---- .../dashboard_api/load_dashboard_api.ts | 3 + .../public/dashboard_api/panels_manager.ts | 128 ++++++++---------- .../dashboard/public/dashboard_api/types.ts | 34 +++-- .../dashboard_api/unsaved_changes_manager.ts | 31 +++-- .../services/dashboard_backup_service.ts | 2 +- .../get_search_embeddable_factory.tsx | 45 ++---- .../discover/public/embeddable/types.ts | 4 +- .../utils/serialization_utils.test.ts | 2 +- .../embeddable/utils/serialization_utils.ts | 7 +- .../react_embeddable_renderer.tsx | 9 +- .../public/react_embeddable_system/types.ts | 8 +- .../public/embeddable/state.test.ts | 2 +- .../visualizations/public/embeddable/state.ts | 3 +- .../visualizations/public/embeddable/types.ts | 8 +- .../embeddable/visualize_embeddable.tsx | 56 ++++---- .../links/links_create_edit.ts | 2 +- .../visualize/group3/_add_to_dashboard.ts | 2 +- .../services/dashboard/panel_actions.ts | 36 +---- .../initialize_dashboard_services.ts | 37 ++--- .../initializers/initialize_integrations.ts | 2 +- .../public/react_embeddable/mocks/index.tsx | 7 +- .../lens/public/react_embeddable/types.ts | 4 +- .../react_embeddable/library_transforms.ts | 17 ++- .../maps/public/react_embeddable/types.ts | 4 +- .../apps/group1/dashboard_panel_options.ts | 2 +- 65 files changed, 487 insertions(+), 915 deletions(-) rename src/platform/packages/shared/presentation/{presentation_containers/interfaces/serialized_state.ts => presentation_publishing/interfaces/has_serializable_state.ts} (93%) delete mode 100644 src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_add_to_library_action.test.tsx delete mode 100644 src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx delete mode 100644 src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.test.tsx delete mode 100644 src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx rename src/platform/plugins/shared/dashboard/public/dashboard_actions/{add_to_library_action.tsx => library_add_action.tsx} (68%) rename src/platform/plugins/shared/dashboard/public/dashboard_actions/{unlink_from_library_action.tsx => library_unlink_action.tsx} (73%) diff --git a/examples/controls_example/public/app/react_control_example/serialized_control_group_state.ts b/examples/controls_example/public/app/react_control_example/serialized_control_group_state.ts index 3d6487cdc7cba..c9c7609d6ad1d 100644 --- a/examples/controls_example/public/app/react_control_example/serialized_control_group_state.ts +++ b/examples/controls_example/public/app/react_control_example/serialized_control_group_state.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import type { SerializedPanelState } from '@kbn/presentation-containers'; +import type { SerializedPanelState } from '@kbn/presentation-publishing'; import type { ControlGroupSerializedState } from '@kbn/controls-plugin/common'; import { OPTIONS_LIST_CONTROL, diff --git a/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts b/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts index c08ba7a499b98..1e06c5cb62b5b 100644 --- a/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts +++ b/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts @@ -12,7 +12,6 @@ import { v4 as generateId } from 'uuid'; import { TimeRange } from '@kbn/es-query'; import { PanelPackage, - apiHasSerializableState, childrenUnsavedChanges$, combineCompatibleChildrenApis, } from '@kbn/presentation-containers'; @@ -21,6 +20,7 @@ import { PublishesDataLoading, PublishingSubject, ViewMode, + apiHasSerializableState, apiPublishesDataLoading, apiPublishesUnsavedChanges, } from '@kbn/presentation-publishing'; diff --git a/examples/embeddable_examples/public/app/presentation_container_example/types.ts b/examples/embeddable_examples/public/app/presentation_container_example/types.ts index c3530ba71dbcf..bcd3c0b9fcb52 100644 --- a/examples/embeddable_examples/public/app/presentation_container_example/types.ts +++ b/examples/embeddable_examples/public/app/presentation_container_example/types.ts @@ -13,7 +13,6 @@ import { HasSerializedChildState, HasRuntimeChildState, PresentationContainer, - SerializedPanelState, HasSaveNotification, } from '@kbn/presentation-containers'; import { @@ -21,6 +20,7 @@ import { PublishesDataLoading, PublishesTimeRange, PublishesUnsavedChanges, + SerializedPanelState, PublishesViewMode, } from '@kbn/presentation-publishing'; import { PublishesReload } from '@kbn/presentation-publishing/interfaces/fetch/publishes_reload'; diff --git a/examples/embeddable_examples/public/app/state_management_example/last_saved_state.ts b/examples/embeddable_examples/public/app/state_management_example/last_saved_state.ts index bf96dd6b809ac..1b8ba4e0f9209 100644 --- a/examples/embeddable_examples/public/app/state_management_example/last_saved_state.ts +++ b/examples/embeddable_examples/public/app/state_management_example/last_saved_state.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { SerializedPanelState } from '@kbn/presentation-containers'; +import { SerializedPanelState } from '@kbn/presentation-publishing'; import { BookSerializedState } from '../../react_embeddables/saved_book/types'; const SAVED_STATE_SESSION_STORAGE_KEY = diff --git a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx index 0222e682b7b0d..b83c84610c7c6 100644 --- a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx +++ b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx @@ -26,11 +26,7 @@ import { CoreStart } from '@kbn/core-lifecycle-browser'; import { OverlayRef } from '@kbn/core-mount-utils-browser'; import { i18n } from '@kbn/i18n'; import { tracksOverlays } from '@kbn/presentation-containers'; -import { - apiHasInPlaceLibraryTransforms, - apiHasUniqueId, - useBatchedOptionalPublishingSubjects, -} from '@kbn/presentation-publishing'; +import { apiHasUniqueId, useBatchedOptionalPublishingSubjects } from '@kbn/presentation-publishing'; import { toMountPoint } from '@kbn/react-kibana-mount'; import React, { useState } from 'react'; import { serializeBookAttributes } from './book_state'; @@ -74,7 +70,7 @@ export const openSavedBookEditor = ({ onSubmit={async (addToLibrary: boolean) => { const savedBookId = addToLibrary ? await saveBookAttributes( - apiHasInPlaceLibraryTransforms(api) ? api.libraryId$.value : undefined, + api?.getSavedBookId(), serializeBookAttributes(attributesManager) ) : undefined; @@ -114,15 +110,13 @@ export const SavedBookEditor = ({ onCancel: () => void; api?: BookApi; }) => { - const [libraryId, authorName, synopsis, bookTitle, numberOfPages] = - useBatchedOptionalPublishingSubjects( - api?.libraryId$, - attributesManager.authorName, - attributesManager.bookSynopsis, - attributesManager.bookTitle, - attributesManager.numberOfPages - ); - const [addToLibrary, setAddToLibrary] = useState(Boolean(libraryId)); + const [authorName, synopsis, bookTitle, numberOfPages] = useBatchedOptionalPublishingSubjects( + attributesManager.authorName, + attributesManager.bookSynopsis, + attributesManager.bookTitle, + attributesManager.numberOfPages + ); + const [addToLibrary, setAddToLibrary] = useState(Boolean(api?.getSavedBookId())); const [saving, setSaving] = useState(false); return ( diff --git a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx index 1768330d218d5..d23029084b85a 100644 --- a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx +++ b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx @@ -22,12 +22,13 @@ import { ReactEmbeddableFactory } from '@kbn/embeddable-plugin/public'; import { i18n } from '@kbn/i18n'; import { apiHasParentApi, + getUnchangingComparator, initializeTitles, SerializedTitles, + SerializedPanelState, useBatchedPublishingSubjects, } from '@kbn/presentation-publishing'; import React from 'react'; -import { BehaviorSubject } from 'rxjs'; import { PresentationContainer } from '@kbn/presentation-containers'; import { serializeBookAttributes, stateManagerFromAttributes } from './book_state'; import { SAVED_BOOK_ID } from './constants'; @@ -82,7 +83,24 @@ export const getSavedBookEmbeddableFactory = (core: CoreStart) => { buildEmbeddable: async (state, buildApi) => { const { titlesApi, titleComparators, serializeTitles } = initializeTitles(state); const bookAttributesManager = stateManagerFromAttributes(state); - const savedBookId$ = new BehaviorSubject(state.savedBookId); + const isByReference = Boolean(state.savedBookId); + + const serializeBook = (byReference: boolean, newId?: string) => { + if (byReference) { + // if this book is currently by reference, we serialize the reference only. + const bookByReferenceState: BookByReferenceSerializedState = { + savedBookId: newId ?? state.savedBookId!, + ...serializeTitles(), + }; + return { rawState: bookByReferenceState }; + } + // if this book is currently by value, we serialize the entire state. + const bookByValueState: BookByValueSerializedState = { + attributes: serializeBookAttributes(bookAttributesManager), + ...serializeTitles(), + }; + return { rawState: bookByValueState }; + }; const api = buildApi( { @@ -95,7 +113,15 @@ export const getSavedBookEmbeddableFactory = (core: CoreStart) => { core, api, }).then((result) => { - savedBookId$.next(result.savedBookId); + const nextIsByReference = Boolean(result.savedBookId); + + // if the by reference state has changed during this edit, reinitialize the panel. + if (nextIsByReference !== isByReference) { + api.parentApi?.replacePanel(api.uuid, { + serializedState: serializeBook(nextIsByReference, result.savedBookId), + panelType: api.type, + }); + } }); }, isEditingEnabled: () => true, @@ -103,47 +129,28 @@ export const getSavedBookEmbeddableFactory = (core: CoreStart) => { i18n.translate('embeddableExamples.savedbook.editBook.displayName', { defaultMessage: 'book', }), - serializeState: () => { - if (!Boolean(savedBookId$.value)) { - // if this book is currently by value, we serialize the entire state. - const bookByValueState: BookByValueSerializedState = { - attributes: serializeBookAttributes(bookAttributesManager), - ...serializeTitles(), - }; - return { rawState: bookByValueState }; - } - - // if this book is currently by reference, we serialize the reference only. - const bookByReferenceState: BookByReferenceSerializedState = { - savedBookId: savedBookId$.value!, - ...serializeTitles(), - }; - return { rawState: bookByReferenceState }; - }, + serializeState: () => serializeBook(isByReference), - // in place library transforms - libraryId$: savedBookId$, + // library transforms + getSavedBookId: () => state.savedBookId, saveToLibrary: async (newTitle: string) => { bookAttributesManager.bookTitle.next(newTitle); const newId = await saveBookAttributes( undefined, serializeBookAttributes(bookAttributesManager) ); - savedBookId$.next(newId); return newId; }, checkForDuplicateTitle: async (title) => {}, - unlinkFromLibrary: () => { - savedBookId$.next(undefined); - }, - getByValueRuntimeSnapshot: () => { - const snapshot = api.snapshotRuntimeState(); - delete snapshot.savedBookId; - return snapshot; - }, + getSerializedStateByValue: () => + serializeBook(false) as SerializedPanelState, + getSerializedStateByReference: (newId) => + serializeBook(true, newId) as SerializedPanelState, + canLinkToLibrary: async () => !isByReference, + canUnlinkFromLibrary: async () => isByReference, }, { - savedBookId: [savedBookId$, (val) => savedBookId$.next(val)], + savedBookId: getUnchangingComparator(), // saved book id will not change over the lifetime of the embeddable. ...bookAttributesManager.comparators, ...titleComparators, } @@ -156,14 +163,12 @@ export const getSavedBookEmbeddableFactory = (core: CoreStart) => { return { api, Component: () => { - const [authorName, numberOfPages, savedBookId, bookTitle, synopsis] = - useBatchedPublishingSubjects( - bookAttributesManager.authorName, - bookAttributesManager.numberOfPages, - savedBookId$, - bookAttributesManager.bookTitle, - bookAttributesManager.bookSynopsis - ); + const [authorName, numberOfPages, bookTitle, synopsis] = useBatchedPublishingSubjects( + bookAttributesManager.authorName, + bookAttributesManager.numberOfPages, + bookAttributesManager.bookTitle, + bookAttributesManager.bookSynopsis + ); const { euiTheme } = useEuiTheme(); return ( @@ -177,7 +182,7 @@ export const getSavedBookEmbeddableFactory = (core: CoreStart) => { size="s" color={'warning'} title={ - savedBookId + isByReference ? i18n.translate('embeddableExamples.savedBook.libraryCallout', { defaultMessage: 'Saved in library', }) @@ -185,7 +190,7 @@ export const getSavedBookEmbeddableFactory = (core: CoreStart) => { defaultMessage: 'Not saved in library', }) } - iconType={savedBookId ? 'folderCheck' : 'folderClosed'} + iconType={isByReference ? 'folderCheck' : 'folderClosed'} /> )}
string | undefined; +} + export type BookSerializedState = SerializedTitles & (BookByValueSerializedState | BookByReferenceSerializedState); @@ -48,4 +52,5 @@ export interface BookRuntimeState export type BookApi = DefaultEmbeddableApi & HasEditCapabilities & - HasInPlaceLibraryTransforms; + HasLibraryTransforms & + HasSavedBookId; diff --git a/src/platform/packages/shared/kbn-saved-search-component/src/components/saved_search.tsx b/src/platform/packages/shared/kbn-saved-search-component/src/components/saved_search.tsx index 5172d5c5e0210..ecd3a4f18aa9a 100644 --- a/src/platform/packages/shared/kbn-saved-search-component/src/components/saved_search.tsx +++ b/src/platform/packages/shared/kbn-saved-search-component/src/components/saved_search.tsx @@ -15,7 +15,7 @@ import type { SearchEmbeddableRuntimeState, SearchEmbeddableApi, } from '@kbn/discover-plugin/public'; -import { SerializedPanelState } from '@kbn/presentation-containers'; +import { SerializedPanelState } from '@kbn/presentation-publishing'; import { css } from '@emotion/react'; import { SavedSearchComponentProps } from '../types'; import { SavedSearchComponentErrorContent } from './error'; diff --git a/src/platform/packages/shared/kbn-saved-search-component/tsconfig.json b/src/platform/packages/shared/kbn-saved-search-component/tsconfig.json index 2fc2b3d2e9b53..5850d6fcf9b81 100644 --- a/src/platform/packages/shared/kbn-saved-search-component/tsconfig.json +++ b/src/platform/packages/shared/kbn-saved-search-component/tsconfig.json @@ -23,7 +23,7 @@ "@kbn/es-query", "@kbn/data-plugin", "@kbn/discover-plugin", - "@kbn/presentation-containers", "@kbn/i18n", + "@kbn/presentation-publishing", ] } diff --git a/src/platform/packages/shared/presentation/presentation_containers/index.ts b/src/platform/packages/shared/presentation/presentation_containers/index.ts index 833e8f5b4a0c2..4ddbe46329f4d 100644 --- a/src/platform/packages/shared/presentation/presentation_containers/index.ts +++ b/src/platform/packages/shared/presentation/presentation_containers/index.ts @@ -39,10 +39,4 @@ export { type PresentationContainer, } from './interfaces/presentation_container'; export { apiPublishesSettings, type PublishesSettings } from './interfaces/publishes_settings'; -export { - apiHasSerializableState, - type HasSerializableState, - type HasSnapshottableState, - type SerializedPanelState, -} from './interfaces/serialized_state'; export { tracksOverlays, type TracksOverlays } from './interfaces/tracks_overlays'; diff --git a/src/platform/packages/shared/presentation/presentation_containers/interfaces/child_state.ts b/src/platform/packages/shared/presentation/presentation_containers/interfaces/child_state.ts index adc709f327318..4245b48904314 100644 --- a/src/platform/packages/shared/presentation/presentation_containers/interfaces/child_state.ts +++ b/src/platform/packages/shared/presentation/presentation_containers/interfaces/child_state.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { SerializedPanelState } from './serialized_state'; +import { SerializedPanelState } from '@kbn/presentation-publishing'; export interface HasSerializedChildState { getSerializedStateForChild: ( @@ -15,6 +15,9 @@ export interface HasSerializedChildState SerializedPanelState | undefined; } +/** + * @deprecated Use `HasSerializedChildState` instead. All interactions between the container and the child should use the serialized state. + */ export interface HasRuntimeChildState { getRuntimeStateForChild: (childId: string) => Partial | undefined; } @@ -24,7 +27,9 @@ export const apiHasSerializedChildState = => { return Boolean(api && (api as HasSerializedChildState).getSerializedStateForChild); }; - +/** + * @deprecated Use `HasSerializedChildState` instead. All interactions between the container and the child should use the serialized state. + */ export const apiHasRuntimeChildState = ( api: unknown ): api is HasRuntimeChildState => { diff --git a/src/platform/packages/shared/presentation/presentation_containers/interfaces/presentation_container.ts b/src/platform/packages/shared/presentation/presentation_containers/interfaces/presentation_container.ts index 47368b0e6009b..7b76260aad188 100644 --- a/src/platform/packages/shared/presentation/presentation_containers/interfaces/presentation_container.ts +++ b/src/platform/packages/shared/presentation/presentation_containers/interfaces/presentation_container.ts @@ -7,13 +7,30 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { apiHasParentApi, apiHasUniqueId, PublishingSubject } from '@kbn/presentation-publishing'; +import { + apiHasParentApi, + apiHasUniqueId, + PublishingSubject, + SerializedPanelState, +} from '@kbn/presentation-publishing'; import { BehaviorSubject, combineLatest, isObservable, map, Observable, of, switchMap } from 'rxjs'; import { apiCanAddNewPanel, CanAddNewPanel } from './can_add_new_panel'; -export interface PanelPackage { +export interface PanelPackage< + SerializedStateType extends object = object, + RuntimeStateType extends object = object +> { panelType: string; - initialState?: SerializedState; + + /** + * The serialized state of this panel. + */ + serializedState?: SerializedPanelState; + + /** + * The runtime state of this panel. @deprecated Use `serializedState` instead. + */ + initialState?: RuntimeStateType; } export interface PresentationContainer extends CanAddNewPanel { diff --git a/src/platform/packages/shared/presentation/presentation_containers/interfaces/unsaved_changes/initialize_unsaved_changes.ts b/src/platform/packages/shared/presentation/presentation_containers/interfaces/unsaved_changes/initialize_unsaved_changes.ts index fb767fb11cffd..e28ff77f88e00 100644 --- a/src/platform/packages/shared/presentation/presentation_containers/interfaces/unsaved_changes/initialize_unsaved_changes.ts +++ b/src/platform/packages/shared/presentation/presentation_containers/interfaces/unsaved_changes/initialize_unsaved_changes.ts @@ -21,8 +21,8 @@ import { PublishingSubject, runComparators, StateComparators, + HasSnapshottableState, } from '@kbn/presentation-publishing'; -import { HasSnapshottableState } from '../serialized_state'; import { apiHasSaveNotification } from '../has_save_notification'; export const COMPARATOR_SUBJECTS_DEBOUNCE = 100; diff --git a/src/platform/packages/shared/presentation/presentation_containers/tsconfig.json b/src/platform/packages/shared/presentation/presentation_containers/tsconfig.json index e6e2a00a07655..e138a22926a89 100644 --- a/src/platform/packages/shared/presentation/presentation_containers/tsconfig.json +++ b/src/platform/packages/shared/presentation/presentation_containers/tsconfig.json @@ -9,6 +9,5 @@ "kbn_references": [ "@kbn/presentation-publishing", "@kbn/core-mount-utils-browser", - "@kbn/content-management-utils", ] } diff --git a/src/platform/packages/shared/presentation/presentation_publishing/index.ts b/src/platform/packages/shared/presentation/presentation_publishing/index.ts index 62e68521a5b09..e24a2d26ba403 100644 --- a/src/platform/packages/shared/presentation/presentation_publishing/index.ts +++ b/src/platform/packages/shared/presentation/presentation_publishing/index.ts @@ -64,14 +64,17 @@ export { type HasExecutionContext, } from './interfaces/has_execution_context'; export { - apiHasInPlaceLibraryTransforms, - apiHasLegacyLibraryTransforms, apiHasLibraryTransforms, - type HasInPlaceLibraryTransforms, - type HasLegacyLibraryTransforms, type HasLibraryTransforms, } from './interfaces/has_library_transforms'; export { apiHasParentApi, type HasParentApi } from './interfaces/has_parent_api'; +export { + apiHasSerializableState, + apiHasSnapshottableState, + type HasSerializableState, + type HasSnapshottableState, + type SerializedPanelState, +} from './interfaces/has_serializable_state'; export { apiHasSupportedTriggers, type HasSupportedTriggers, diff --git a/src/platform/packages/shared/presentation/presentation_publishing/interfaces/has_library_transforms.ts b/src/platform/packages/shared/presentation/presentation_publishing/interfaces/has_library_transforms.ts index b90faefe38f6e..38734f46b0093 100644 --- a/src/platform/packages/shared/presentation/presentation_publishing/interfaces/has_library_transforms.ts +++ b/src/platform/packages/shared/presentation/presentation_publishing/interfaces/has_library_transforms.ts @@ -7,101 +7,57 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { PublishingSubject } from '../publishing_subject'; +import { SerializedPanelState } from './has_serializable_state'; -interface DuplicateTitleCheck { +/** + * APIs that inherit this interface can be linked to and unlinked from the library. + */ +export interface HasLibraryTransforms< + ByReferenceSerializedState extends object = object, + ByValueSerializedState extends object = object +> { checkForDuplicateTitle: ( newTitle: string, isTitleDuplicateConfirmed: boolean, onTitleDuplicate: () => void ) => Promise; -} -interface LibraryTransformGuards { + /** * * @returns {Promise} - * True when embeddable is by-value and can be converted to by-reference + * Returns true when this API is by-value and can be converted to by-reference */ canLinkToLibrary: () => Promise; + /** * * @returns {Promise} - * True when embeddable is by-reference and can be converted to by-value + * Returns true when this API is by-reference and can be converted to by-value */ canUnlinkFromLibrary: () => Promise; -} - -/** - * APIs that inherit this interface can be linked to and unlinked from the library in place without - * re-initialization. - */ -export interface HasInPlaceLibraryTransforms - extends Partial, - DuplicateTitleCheck { - /** - * The id of the library item that this embeddable is linked to. - */ - libraryId$: PublishingSubject; /** - * Save embeddable to library + * Save the state of this API to the library. This will return the ID of the persisted library item. * * @returns {Promise} id of persisted library item */ saveToLibrary: (title: string) => Promise; /** - * gets a snapshot of this embeddable's runtime state without any state that links it to a library item. - */ - getByValueRuntimeSnapshot: () => RuntimeState; - - /** - * Un-links this embeddable from the library. This method is optional, and only needed if the Embeddable - * is not meant to be re-initialized as part of the unlink operation. If the embeddable needs to be re-initialized - * after unlinking, the getByValueState method should be used instead. - */ - unlinkFromLibrary: () => void; -} - -export const apiHasInPlaceLibraryTransforms = ( - unknownApi: null | unknown -): unknownApi is HasInPlaceLibraryTransforms => { - return Boolean( - unknownApi && - Boolean((unknownApi as HasInPlaceLibraryTransforms)?.libraryId$) && - typeof (unknownApi as HasInPlaceLibraryTransforms).saveToLibrary === 'function' && - typeof (unknownApi as HasInPlaceLibraryTransforms).unlinkFromLibrary === 'function' - ); -}; - -/** - * @deprecated use HasInPlaceLibraryTransforms instead - * APIs that inherit this interface can be linked to and unlinked from the library. After the save or unlink - * operation, the embeddable will be reinitialized. - */ -export interface HasLibraryTransforms - extends LibraryTransformGuards, - DuplicateTitleCheck { - /** - * Save embeddable to library * - * @returns {Promise} id of persisted library item + * @returns {ByReferenceSerializedState} + * get by-reference serialized state from this API. */ - saveToLibrary: (title: string) => Promise; - /** - * - * @returns {StateT} - * by-reference embeddable state replacing by-value embeddable state. After - * the save operation, the embeddable will be reinitialized with the results of this method. - */ - getByReferenceState: (libraryId: string) => StateT; + getSerializedStateByReference: ( + newId: string + ) => SerializedPanelState; + /** * - * @returns {StateT} - * by-value embeddable state replacing by-reference embeddable state. After - * the unlink operation, the embeddable will be reinitialized with the results of this method. + * @returns {ByValueSerializedState} + * get by-value serialized state from this API */ - getByValueState: () => StateT; + getSerializedStateByValue: () => SerializedPanelState; } export const apiHasLibraryTransforms = ( @@ -112,34 +68,10 @@ export const apiHasLibraryTransforms = ( typeof (unknownApi as HasLibraryTransforms).canLinkToLibrary === 'function' && typeof (unknownApi as HasLibraryTransforms).canUnlinkFromLibrary === 'function' && typeof (unknownApi as HasLibraryTransforms).saveToLibrary === 'function' && - typeof (unknownApi as HasLibraryTransforms).getByReferenceState === 'function' && - typeof (unknownApi as HasLibraryTransforms).getByValueState === 'function' && + typeof (unknownApi as HasLibraryTransforms).getSerializedStateByReference === + 'function' && + typeof (unknownApi as HasLibraryTransforms).getSerializedStateByValue === + 'function' && typeof (unknownApi as HasLibraryTransforms).checkForDuplicateTitle === 'function' ); }; - -/** - * @deprecated use HasLibraryTransforms instead - */ -export type HasLegacyLibraryTransforms = Pick< - HasLibraryTransforms, - 'canLinkToLibrary' | 'canUnlinkFromLibrary' -> & { - linkToLibrary: () => Promise; - unlinkFromLibrary: () => Promise; -}; - -/** - * @deprecated use apiHasLibraryTransforms instead - */ -export const apiHasLegacyLibraryTransforms = ( - unknownApi: null | unknown -): unknownApi is HasLegacyLibraryTransforms => { - return Boolean( - unknownApi && - typeof (unknownApi as HasLegacyLibraryTransforms).canLinkToLibrary === 'function' && - typeof (unknownApi as HasLegacyLibraryTransforms).canUnlinkFromLibrary === 'function' && - typeof (unknownApi as HasLegacyLibraryTransforms).linkToLibrary === 'function' && - typeof (unknownApi as HasLegacyLibraryTransforms).unlinkFromLibrary === 'function' - ); -}; diff --git a/src/platform/packages/shared/presentation/presentation_containers/interfaces/serialized_state.ts b/src/platform/packages/shared/presentation/presentation_publishing/interfaces/has_serializable_state.ts similarity index 93% rename from src/platform/packages/shared/presentation/presentation_containers/interfaces/serialized_state.ts rename to src/platform/packages/shared/presentation/presentation_publishing/interfaces/has_serializable_state.ts index 0368bd751ce78..f6144d78ae19f 100644 --- a/src/platform/packages/shared/presentation/presentation_containers/interfaces/serialized_state.ts +++ b/src/platform/packages/shared/presentation/presentation_publishing/interfaces/has_serializable_state.ts @@ -30,6 +30,9 @@ export const apiHasSerializableState = (api: unknown | null): api is HasSerializ return Boolean((api as HasSerializableState)?.serializeState); }; +/** + * @deprecated use HasSerializableState instead + */ export interface HasSnapshottableState { /** * Serializes all runtime state exactly as it appears. This can be used @@ -38,6 +41,9 @@ export interface HasSnapshottableState { snapshotRuntimeState: () => RuntimeState; } +/** + * @deprecated use apiHasSerializableState instead + */ export const apiHasSnapshottableState = (api: unknown | null): api is HasSnapshottableState => { return Boolean((api as HasSnapshottableState)?.snapshotRuntimeState); }; diff --git a/src/platform/packages/shared/presentation/presentation_publishing/tsconfig.json b/src/platform/packages/shared/presentation/presentation_publishing/tsconfig.json index 58edc9d14270d..44a58006f60c4 100644 --- a/src/platform/packages/shared/presentation/presentation_publishing/tsconfig.json +++ b/src/platform/packages/shared/presentation/presentation_publishing/tsconfig.json @@ -10,6 +10,7 @@ "@kbn/es-query", "@kbn/data-views-plugin", "@kbn/expressions-plugin", - "@kbn/core-execution-context-common" + "@kbn/core-execution-context-common", + "@kbn/content-management-utils" ] } diff --git a/src/platform/plugins/private/links/public/embeddable/links_embeddable.test.tsx b/src/platform/plugins/private/links/public/embeddable/links_embeddable.test.tsx index 7bbb7b52e66b6..3c949da0a3277 100644 --- a/src/platform/plugins/private/links/public/embeddable/links_embeddable.test.tsx +++ b/src/platform/plugins/private/links/public/embeddable/links_embeddable.test.tsx @@ -217,7 +217,7 @@ describe('getLinksEmbeddableFactory', () => { }, references: [], }); - expect(api.libraryId$.value).toBe('123'); + expect(await api.canUnlinkFromLibrary()).toBe(true); expect(api.defaultPanelTitle!.value).toBe('links 001'); expect(api.defaultPanelDescription!.value).toBe('some links'); }); @@ -236,8 +236,7 @@ describe('getLinksEmbeddableFactory', () => { await waitFor(async () => { const api = onApiAvailable.mock.calls[0][0]; - api.unlinkFromLibrary(); - expect(await api.serializeState()).toEqual({ + expect(await api.getSerializedStateByValue()).toEqual({ rawState: { title: 'my links', description: 'just a few links', @@ -251,7 +250,6 @@ describe('getLinksEmbeddableFactory', () => { }, references, }); - expect(api.libraryId$.value).toBeUndefined(); }); }); }); @@ -329,7 +327,7 @@ describe('getLinksEmbeddableFactory', () => { references, }); - expect(api.libraryId$.value).toBeUndefined(); + expect(await api.canLinkToLibrary()).toBe(true); }); }); test('save to library', async () => { @@ -355,8 +353,7 @@ describe('getLinksEmbeddableFactory', () => { options: { references }, }); expect(newId).toBe('333'); - expect(api.libraryId$.value).toBe('333'); - expect(await api.serializeState()).toEqual({ + expect(await api.getSerializedStateByReference(newId)).toEqual({ rawState: { savedObjectId: '333', title: 'my links', diff --git a/src/platform/plugins/private/links/public/embeddable/links_embeddable.tsx b/src/platform/plugins/private/links/public/embeddable/links_embeddable.tsx index a1bff3702c6ce..36bf21cb1a65b 100644 --- a/src/platform/plugins/private/links/public/embeddable/links_embeddable.tsx +++ b/src/platform/plugins/private/links/public/embeddable/links_embeddable.tsx @@ -10,17 +10,16 @@ import React, { createContext, useMemo } from 'react'; import { cloneDeep } from 'lodash'; import { BehaviorSubject } from 'rxjs'; -import fastIsEqual from 'fast-deep-equal'; import { EuiListGroup, EuiPanel } from '@elastic/eui'; import { PanelIncompatibleError, ReactEmbeddableFactory } from '@kbn/embeddable-plugin/public'; import { + SerializedTitles, initializeTitles, + SerializedPanelState, useBatchedOptionalPublishingSubjects, } from '@kbn/presentation-publishing'; -import { SerializedPanelState } from '@kbn/presentation-containers'; - import { CONTENT_ID, DASHBOARD_LINK_TYPE, @@ -105,8 +104,27 @@ export const getLinksEmbeddableFactory = () => { state.defaultPanelDescription ); const savedObjectId$ = new BehaviorSubject(state.savedObjectId); + const isByReference = Boolean(state.savedObjectId); + const { titlesApi, titleComparators, serializeTitles } = initializeTitles(state); + const serializeLinksState = (byReference: boolean, newId?: string) => { + if (byReference) { + const linksByReferenceState: LinksByReferenceSerializedState = { + savedObjectId: newId ?? state.savedObjectId!, + ...serializeTitles(), + }; + return { rawState: linksByReferenceState, references: [] }; + } + const runtimeState = api.snapshotRuntimeState(); + const { attributes, references } = serializeLinksAttributes(runtimeState); + const linksByValueState: LinksByValueSerializedState = { + attributes, + ...serializeTitles(), + }; + return { rawState: linksByValueState, references }; + }; + const api = buildApi( { ...titlesApi, @@ -114,29 +132,8 @@ export const getLinksEmbeddableFactory = () => { defaultPanelTitle, defaultPanelDescription, isEditingEnabled: () => Boolean(error$.value === undefined), - libraryId$: savedObjectId$, getTypeDisplayName: () => DISPLAY_NAME, - getByValueRuntimeSnapshot: () => { - const snapshot = api.snapshotRuntimeState(); - delete snapshot.savedObjectId; - return snapshot; - }, - serializeState: (): SerializedPanelState => { - if (savedObjectId$.value !== undefined) { - const linksByReferenceState: LinksByReferenceSerializedState = { - savedObjectId: savedObjectId$.value, - ...serializeTitles(), - }; - return { rawState: linksByReferenceState, references: [] }; - } - const runtimeState = api.snapshotRuntimeState(); - const { attributes, references } = serializeLinksAttributes(runtimeState); - const linksByValueState: LinksByValueSerializedState = { - attributes, - ...serializeTitles(), - }; - return { rawState: linksByValueState, references }; - }, + serializeState: () => serializeLinksState(isByReference), saveToLibrary: async (newTitle: string) => { defaultPanelTitle.next(newTitle); const runtimeState = api.snapshotRuntimeState(); @@ -150,9 +147,17 @@ export const getLinksEmbeddableFactory = () => { }, options: { references }, }); - savedObjectId$.next(id); return id; }, + getSerializedStateByValue: () => + serializeLinksState(false) as SerializedPanelState, + getSerializedStateByReference: (newId: string) => + serializeLinksState( + true, + newId + ) as SerializedPanelState, + canLinkToLibrary: async () => !isByReference, + canUnlinkFromLibrary: async () => isByReference, checkForDuplicateTitle: async ( newTitle: string, isTitleDuplicateConfirmed: boolean, @@ -166,36 +171,41 @@ export const getLinksEmbeddableFactory = () => { onTitleDuplicate, }); }, - unlinkFromLibrary: () => { - savedObjectId$.next(undefined); - }, onEdit: async () => { const { openEditorFlyout } = await import('../editor/open_editor_flyout'); const newState = await openEditorFlyout({ initialState: api.snapshotRuntimeState(), parentDashboard: parentApi, }); + if (!newState) return; + + // if the by reference state has changed during this edit, reinitialize the panel. + const nextIsByReference = Boolean(newState?.savedObjectId); + if (nextIsByReference !== isByReference) { + const serializedState = serializeLinksState( + nextIsByReference, + newState?.savedObjectId + ); + (serializedState.rawState as SerializedTitles).title = newState.title; - if (newState) { - links$.next(newState.links); - layout$.next(newState.layout); - defaultPanelTitle.next(newState.defaultPanelTitle); - defaultPanelDescription.next(newState.defaultPanelDescription); - savedObjectId$.next(newState.savedObjectId); + api.parentApi?.replacePanel(api.uuid, { + serializedState, + panelType: api.type, + }); + return; } + links$.next(newState.links); + layout$.next(newState.layout); + defaultPanelTitle.next(newState.defaultPanelTitle); + defaultPanelDescription.next(newState.defaultPanelDescription); }, }, { ...titleComparators, - links: [ - links$, - (nextLinks?: ResolvedLink[]) => links$.next(nextLinks ?? []), - (a, b) => Boolean(savedObjectId$.value) || fastIsEqual(a, b), // Editing attributes in a by-reference panel should not trigger unsaved changes. - ], + links: [links$, (nextLinks?: ResolvedLink[]) => links$.next(nextLinks ?? [])], layout: [ layout$, (nextLayout?: LinksLayoutType) => layout$.next(nextLayout ?? LINKS_VERTICAL_LAYOUT), - (a, b) => Boolean(savedObjectId$.value) || a === b, ], error: [error$, (nextError?: Error) => error$.next(nextError)], defaultPanelDescription: [ diff --git a/src/platform/plugins/private/links/public/types.ts b/src/platform/plugins/private/links/public/types.ts index d4b88ca5b7c51..90d545ac1cc1c 100644 --- a/src/platform/plugins/private/links/public/types.ts +++ b/src/platform/plugins/private/links/public/types.ts @@ -9,7 +9,7 @@ import { HasEditCapabilities, - HasInPlaceLibraryTransforms, + HasLibraryTransforms, HasType, PublishesPanelDescription, PublishesPanelTitle, @@ -40,7 +40,7 @@ export type LinksParentApi = PresentationContainer & export type LinksApi = HasType & DefaultEmbeddableApi & HasEditCapabilities & - HasInPlaceLibraryTransforms; + HasLibraryTransforms; export interface LinksByReferenceSerializedState { savedObjectId: string; diff --git a/src/platform/plugins/shared/controls/public/control_group/init_controls_manager.ts b/src/platform/plugins/shared/controls/public/control_group/init_controls_manager.ts index 935845327131e..483ac9b9d834b 100644 --- a/src/platform/plugins/shared/controls/public/control_group/init_controls_manager.ts +++ b/src/platform/plugins/shared/controls/public/control_group/init_controls_manager.ts @@ -17,8 +17,11 @@ import type { PanelPackage, PresentationContainer, } from '@kbn/presentation-containers'; -import { apiHasSnapshottableState } from '@kbn/presentation-containers/interfaces/serialized_state'; -import type { PublishingSubject, StateComparators } from '@kbn/presentation-publishing'; +import { + type PublishingSubject, + type StateComparators, + apiHasSnapshottableState, +} from '@kbn/presentation-publishing'; import { BehaviorSubject, first, merge } from 'rxjs'; import type { ControlPanelState, @@ -99,7 +102,7 @@ export function initControlsManager( } async function addNewPanel( - { panelType, initialState }: PanelPackage, + { panelType, initialState }: PanelPackage<{}, DefaultControlState>, index: number ) { if ((initialState as DefaultDataControlState)?.dataViewId) { diff --git a/src/platform/plugins/shared/controls/public/control_group/utils/serialization_utils.ts b/src/platform/plugins/shared/controls/public/control_group/utils/serialization_utils.ts index 0a046244b732f..b905a8d516ba6 100644 --- a/src/platform/plugins/shared/controls/public/control_group/utils/serialization_utils.ts +++ b/src/platform/plugins/shared/controls/public/control_group/utils/serialization_utils.ts @@ -9,7 +9,7 @@ import { omit } from 'lodash'; -import { SerializedPanelState } from '@kbn/presentation-containers'; +import { SerializedPanelState } from '@kbn/presentation-publishing'; import type { ControlGroupRuntimeState, ControlGroupSerializedState } from '../../../common'; import { parseReferenceName } from '../../controls/data_controls/reference_name_utils'; diff --git a/src/platform/plugins/shared/controls/public/controls/data_controls/initialize_data_control.ts b/src/platform/plugins/shared/controls/public/controls/data_controls/initialize_data_control.ts index 71cb6cfb78245..68affc22ad4cb 100644 --- a/src/platform/plugins/shared/controls/public/controls/data_controls/initialize_data_control.ts +++ b/src/platform/plugins/shared/controls/public/controls/data_controls/initialize_data_control.ts @@ -16,8 +16,7 @@ import { DataViewField, } from '@kbn/data-views-plugin/common'; import { Filter } from '@kbn/es-query'; -import { SerializedPanelState } from '@kbn/presentation-containers'; -import { StateComparators } from '@kbn/presentation-publishing'; +import { StateComparators, SerializedPanelState } from '@kbn/presentation-publishing'; import { i18n } from '@kbn/i18n'; import type { DefaultControlState, DefaultDataControlState } from '../../../common'; diff --git a/src/platform/plugins/shared/controls/public/controls/data_controls/range_slider/get_range_slider_control_factory.test.tsx b/src/platform/plugins/shared/controls/public/controls/data_controls/range_slider/get_range_slider_control_factory.test.tsx index 03ebe50969d05..785ff41a7e48d 100644 --- a/src/platform/plugins/shared/controls/public/controls/data_controls/range_slider/get_range_slider_control_factory.test.tsx +++ b/src/platform/plugins/shared/controls/public/controls/data_controls/range_slider/get_range_slider_control_factory.test.tsx @@ -12,7 +12,7 @@ import { of } from 'rxjs'; import { estypes } from '@elastic/elasticsearch'; import { DataViewField } from '@kbn/data-views-plugin/common'; -import { SerializedPanelState } from '@kbn/presentation-containers'; +import { SerializedPanelState } from '@kbn/presentation-publishing'; import { fireEvent, render, waitFor } from '@testing-library/react'; import { dataService, dataViewsService } from '../../../services/kibana_services'; diff --git a/src/platform/plugins/shared/controls/public/controls/initialize_default_control_api.tsx b/src/platform/plugins/shared/controls/public/controls/initialize_default_control_api.tsx index 06d7f3e4028f5..77227e0c13eed 100644 --- a/src/platform/plugins/shared/controls/public/controls/initialize_default_control_api.tsx +++ b/src/platform/plugins/shared/controls/public/controls/initialize_default_control_api.tsx @@ -8,9 +8,7 @@ */ import { BehaviorSubject } from 'rxjs'; - -import { SerializedPanelState } from '@kbn/presentation-containers'; -import { StateComparators } from '@kbn/presentation-publishing'; +import { StateComparators, SerializedPanelState } from '@kbn/presentation-publishing'; import type { ControlWidth, DefaultControlState } from '../../common'; import type { ControlApiInitialization, ControlStateManager, DefaultControlApi } from './types'; diff --git a/src/platform/plugins/shared/controls/public/controls/types.ts b/src/platform/plugins/shared/controls/public/controls/types.ts index 8cc33b3513263..36b5ae6571169 100644 --- a/src/platform/plugins/shared/controls/public/controls/types.ts +++ b/src/platform/plugins/shared/controls/public/controls/types.ts @@ -9,12 +9,12 @@ import { BehaviorSubject } from 'rxjs'; -import { HasSerializableState } from '@kbn/presentation-containers'; import { PanelCompatibleComponent } from '@kbn/presentation-panel-plugin/public/panel_component/types'; import { HasParentApi, HasType, HasUniqueId, + HasSerializableState, PublishesBlockingError, PublishesDataLoading, PublishesDisabledActionIds, diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/actions_module.ts b/src/platform/plugins/shared/dashboard/public/dashboard_actions/actions_module.ts index 8747ff18f8f74..8b4c0154de18e 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/actions_module.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_actions/actions_module.ts @@ -11,8 +11,6 @@ export { ClonePanelAction } from './clone_panel_action'; export { ExpandPanelAction } from './expand_panel_action'; export { FiltersNotificationAction } from './filters_notification_action'; export { ExportCSVAction } from './export_csv_action'; -export { AddToLibraryAction } from './add_to_library_action'; -export { LegacyAddToLibraryAction } from './legacy_add_to_library_action'; +export { AddToLibraryAction } from './library_add_action'; +export { UnlinkFromLibraryAction } from './library_unlink_action'; export { CopyToDashboardAction } from './copy_to_dashboard_action'; -export { UnlinkFromLibraryAction } from './unlink_from_library_action'; -export { LegacyUnlinkFromLibraryAction } from './legacy_unlink_from_library_action'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/clone_panel_action.test.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_actions/clone_panel_action.test.tsx index e551fe78b4ac3..9f1063b4f5298 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/clone_panel_action.test.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_actions/clone_panel_action.test.tsx @@ -21,6 +21,11 @@ describe('Clone panel action', () => { embeddable: { uuid: 'superId', viewMode: new BehaviorSubject('edit'), + serializeState: () => { + return { + rawState: {}, + }; + }, parentApi: { duplicatePanel: jest.fn(), }, diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/clone_panel_action.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_actions/clone_panel_action.tsx index 2f016c7fd872b..82a5b02059fd5 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/clone_panel_action.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_actions/clone_panel_action.tsx @@ -17,6 +17,8 @@ import { getInheritedViewMode, HasParentApi, PublishesBlockingError, + apiHasSerializableState, + HasSerializableState, HasUniqueId, } from '@kbn/presentation-publishing'; import { Action, IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; @@ -24,6 +26,7 @@ import { dashboardClonePanelActionStrings } from './_dashboard_actions_strings'; import { ACTION_CLONE_PANEL, DASHBOARD_ACTION_GROUP } from './constants'; export type ClonePanelActionApi = CanAccessViewMode & + HasSerializableState & HasUniqueId & HasParentApi & Partial; @@ -31,6 +34,7 @@ export type ClonePanelActionApi = CanAccessViewMode & const isApiCompatible = (api: unknown | null): api is ClonePanelActionApi => Boolean( apiHasUniqueId(api) && + apiHasSerializableState(api) && apiCanAccessViewMode(api) && apiHasParentApi(api) && apiCanDuplicatePanels(api.parentApi) diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/constants.ts b/src/platform/plugins/shared/dashboard/public/dashboard_actions/constants.ts index 0135ed4f69a3c..33ae533e9f50a 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/constants.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_actions/constants.ts @@ -14,7 +14,5 @@ export const ACTION_CLONE_PANEL = 'clonePanel'; export const ACTION_COPY_TO_DASHBOARD = 'copyToDashboard'; export const ACTION_EXPAND_PANEL = 'togglePanel'; export const ACTION_EXPORT_CSV = 'ACTION_EXPORT_CSV'; -export const ACTION_LEGACY_ADD_TO_LIBRARY = 'legacySaveToLibrary'; -export const ACTION_LEGACY_UNLINK_FROM_LIBRARY = 'legacyUnlinkFromLibrary'; export const ACTION_UNLINK_FROM_LIBRARY = 'unlinkFromLibrary'; export const BADGE_FILTERS_NOTIFICATION = 'ACTION_FILTERS_NOTIFICATION'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx index 3c78088a7c098..9c04e0fff1e2c 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx @@ -19,7 +19,7 @@ import { EuiSpacer, } from '@elastic/eui'; import { EmbeddablePackageState, PanelNotFoundError } from '@kbn/embeddable-plugin/public'; -import { apiHasSnapshottableState } from '@kbn/presentation-containers/interfaces/serialized_state'; +import { apiHasSnapshottableState } from '@kbn/presentation-publishing'; import { LazyDashboardPicker, withSuspense } from '@kbn/presentation-util-plugin/public'; import { omit } from 'lodash'; import React, { useCallback, useMemo, useState } from 'react'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_add_to_library_action.test.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_add_to_library_action.test.tsx deleted file mode 100644 index 60367d7950d2e..0000000000000 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_add_to_library_action.test.tsx +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { PublishesViewMode, ViewMode } from '@kbn/presentation-publishing'; -import { BehaviorSubject } from 'rxjs'; -import { - LegacyAddToLibraryAction, - LegacyAddPanelToLibraryActionApi, -} from './legacy_add_to_library_action'; -import { coreServices } from '../services/kibana_services'; - -describe('Add to library action', () => { - let action: LegacyAddToLibraryAction; - let context: { embeddable: LegacyAddPanelToLibraryActionApi }; - - beforeEach(() => { - action = new LegacyAddToLibraryAction(); - context = { - embeddable: { - linkToLibrary: jest.fn(), - canLinkToLibrary: jest.fn().mockResolvedValue(true), - unlinkFromLibrary: jest.fn(), - canUnlinkFromLibrary: jest.fn().mockResolvedValue(true), - - viewMode: new BehaviorSubject('edit'), - panelTitle: new BehaviorSubject('A very compatible API'), - }, - }; - }); - - it('is compatible when api meets all conditions', async () => { - expect(await action.isCompatible(context)).toBe(true); - }); - - it('is incompatible when context lacks necessary functions', async () => { - const emptyContext = { - embeddable: {}, - }; - expect(await action.isCompatible(emptyContext)).toBe(false); - }); - - it('is incompatible when view mode is view', async () => { - (context.embeddable as PublishesViewMode).viewMode = new BehaviorSubject('view'); - expect(await action.isCompatible(context)).toBe(false); - }); - - it('is incompatible when canLinkToLibrary returns false', async () => { - context.embeddable.canLinkToLibrary = jest.fn().mockResolvedValue(false); - expect(await action.isCompatible(context)).toBe(false); - }); - - it('calls the linkToLibrary method on execute', async () => { - action.execute(context); - expect(context.embeddable.linkToLibrary).toHaveBeenCalled(); - }); - - it('shows a toast with a title from the API when successful', async () => { - await action.execute(context); - expect(coreServices.notifications.toasts.addSuccess).toHaveBeenCalledWith({ - 'data-test-subj': 'addPanelToLibrarySuccess', - title: "Panel 'A very compatible API' was added to the library", - }); - }); - - it('shows a danger toast when the link operation is unsuccessful', async () => { - context.embeddable.linkToLibrary = jest.fn().mockRejectedValue(new Error('Oh dang')); - await action.execute(context); - expect(coreServices.notifications.toasts.addDanger).toHaveBeenCalledWith({ - 'data-test-subj': 'addPanelToLibraryError', - title: 'An error was encountered adding panel A very compatible API to the library', - }); - }); -}); diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx deleted file mode 100644 index c263aafffad77..0000000000000 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { - apiCanAccessViewMode, - apiHasLegacyLibraryTransforms, - EmbeddableApiContext, - getPanelTitle, - PublishesPanelTitle, - CanAccessViewMode, - getInheritedViewMode, - HasLegacyLibraryTransforms, -} from '@kbn/presentation-publishing'; -import { Action, IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; - -import { dashboardAddToLibraryActionStrings } from './_dashboard_actions_strings'; -import { coreServices } from '../services/kibana_services'; -import { ACTION_LEGACY_ADD_TO_LIBRARY, DASHBOARD_ACTION_GROUP } from './constants'; - -export type LegacyAddPanelToLibraryActionApi = CanAccessViewMode & - HasLegacyLibraryTransforms & - Partial; - -const isApiCompatible = (api: unknown | null): api is LegacyAddPanelToLibraryActionApi => - Boolean(apiCanAccessViewMode(api) && apiHasLegacyLibraryTransforms(api)); - -export class LegacyAddToLibraryAction implements Action { - public readonly type = ACTION_LEGACY_ADD_TO_LIBRARY; - public readonly id = ACTION_LEGACY_ADD_TO_LIBRARY; - public order = 15; - public grouping = [DASHBOARD_ACTION_GROUP]; - - public getDisplayName({ embeddable }: EmbeddableApiContext) { - if (!isApiCompatible(embeddable)) throw new IncompatibleActionError(); - return dashboardAddToLibraryActionStrings.getDisplayName(); - } - - public getIconType({ embeddable }: EmbeddableApiContext) { - if (!isApiCompatible(embeddable)) throw new IncompatibleActionError(); - return 'folderCheck'; - } - - public async isCompatible({ embeddable }: EmbeddableApiContext) { - if (!isApiCompatible(embeddable)) return false; - return getInheritedViewMode(embeddable) === 'edit' && (await embeddable.canLinkToLibrary()); - } - - public async execute({ embeddable }: EmbeddableApiContext) { - if (!isApiCompatible(embeddable)) throw new IncompatibleActionError(); - const panelTitle = getPanelTitle(embeddable); - try { - await embeddable.linkToLibrary(); - coreServices.notifications.toasts.addSuccess({ - title: dashboardAddToLibraryActionStrings.getSuccessMessage( - panelTitle ? `'${panelTitle}'` : '' - ), - 'data-test-subj': 'addPanelToLibrarySuccess', - }); - } catch (e) { - coreServices.notifications.toasts.addDanger({ - title: dashboardAddToLibraryActionStrings.getErrorMessage(panelTitle), - 'data-test-subj': 'addPanelToLibraryError', - }); - } - } -} diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.test.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.test.tsx deleted file mode 100644 index 7a7e8836a305f..0000000000000 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.test.tsx +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { PublishesViewMode, ViewMode } from '@kbn/presentation-publishing'; -import { BehaviorSubject } from 'rxjs'; -import { coreServices } from '../services/kibana_services'; -import { - LegacyUnlinkFromLibraryAction, - LegacyUnlinkPanelFromLibraryActionApi, -} from './legacy_unlink_from_library_action'; - -describe('Unlink from library action', () => { - let action: LegacyUnlinkFromLibraryAction; - let context: { embeddable: LegacyUnlinkPanelFromLibraryActionApi }; - - beforeEach(() => { - action = new LegacyUnlinkFromLibraryAction(); - context = { - embeddable: { - unlinkFromLibrary: jest.fn(), - canUnlinkFromLibrary: jest.fn().mockResolvedValue(true), - linkToLibrary: jest.fn(), - canLinkToLibrary: jest.fn().mockResolvedValue(true), - viewMode: new BehaviorSubject('edit'), - panelTitle: new BehaviorSubject('A very compatible API'), - }, - }; - }); - - it('is compatible when api meets all conditions', async () => { - expect(await action.isCompatible(context)).toBe(true); - }); - - it('is incompatible when context lacks necessary functions', async () => { - const emptyContext = { - embeddable: {}, - }; - expect(await action.isCompatible(emptyContext)).toBe(false); - }); - - it('is incompatible when view mode is view', async () => { - (context.embeddable as PublishesViewMode).viewMode = new BehaviorSubject('view'); - expect(await action.isCompatible(context)).toBe(false); - }); - - it('is incompatible when canUnlinkFromLibrary returns false', async () => { - context.embeddable.canUnlinkFromLibrary = jest.fn().mockResolvedValue(false); - expect(await action.isCompatible(context)).toBe(false); - }); - - it('calls the unlinkFromLibrary method on execute', async () => { - action.execute(context); - expect(context.embeddable.unlinkFromLibrary).toHaveBeenCalled(); - }); - - it('shows a toast with a title from the API when successful', async () => { - await action.execute(context); - expect(coreServices.notifications.toasts.addSuccess).toHaveBeenCalledWith({ - 'data-test-subj': 'unlinkPanelSuccess', - title: "Panel 'A very compatible API' is no longer connected to the library.", - }); - }); - - it('shows a danger toast when the link operation is unsuccessful', async () => { - context.embeddable.unlinkFromLibrary = jest.fn().mockRejectedValue(new Error('Oh dang')); - await action.execute(context); - expect(coreServices.notifications.toasts.addDanger).toHaveBeenCalledWith({ - 'data-test-subj': 'unlinkPanelFailure', - title: "An error occured while unlinking 'A very compatible API' from the library.", - }); - }); -}); diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx deleted file mode 100644 index 9c37ee31a89a1..0000000000000 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Action, IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; - -import { - apiCanAccessViewMode, - apiHasLegacyLibraryTransforms, - CanAccessViewMode, - EmbeddableApiContext, - getInheritedViewMode, - getPanelTitle, - PublishesPanelTitle, - HasLegacyLibraryTransforms, -} from '@kbn/presentation-publishing'; -import { dashboardUnlinkFromLibraryActionStrings } from './_dashboard_actions_strings'; -import { coreServices } from '../services/kibana_services'; -import { ACTION_LEGACY_UNLINK_FROM_LIBRARY, DASHBOARD_ACTION_GROUP } from './constants'; - -export type LegacyUnlinkPanelFromLibraryActionApi = CanAccessViewMode & - HasLegacyLibraryTransforms & - Partial; - -export const legacyUnlinkActionIsCompatible = ( - api: unknown | null -): api is LegacyUnlinkPanelFromLibraryActionApi => - Boolean(apiCanAccessViewMode(api) && apiHasLegacyLibraryTransforms(api)); - -export class LegacyUnlinkFromLibraryAction implements Action { - public readonly type = ACTION_LEGACY_UNLINK_FROM_LIBRARY; - public readonly id = ACTION_LEGACY_UNLINK_FROM_LIBRARY; - public order = 15; - public grouping = [DASHBOARD_ACTION_GROUP]; - - public getDisplayName({ embeddable }: EmbeddableApiContext) { - if (!legacyUnlinkActionIsCompatible(embeddable)) throw new IncompatibleActionError(); - return dashboardUnlinkFromLibraryActionStrings.getDisplayName(); - } - - public getIconType({ embeddable }: EmbeddableApiContext) { - if (!legacyUnlinkActionIsCompatible(embeddable)) throw new IncompatibleActionError(); - return 'folderExclamation'; - } - - public async isCompatible({ embeddable }: EmbeddableApiContext) { - if (!legacyUnlinkActionIsCompatible(embeddable)) return false; - return getInheritedViewMode(embeddable) === 'edit' && (await embeddable.canUnlinkFromLibrary()); - } - - public async execute({ embeddable }: EmbeddableApiContext) { - if (!legacyUnlinkActionIsCompatible(embeddable)) throw new IncompatibleActionError(); - const title = getPanelTitle(embeddable); - try { - await embeddable.unlinkFromLibrary(); - coreServices.notifications.toasts.addSuccess({ - title: dashboardUnlinkFromLibraryActionStrings.getSuccessMessage(title ? `'${title}'` : ''), - 'data-test-subj': 'unlinkPanelSuccess', - }); - } catch (e) { - coreServices.notifications.toasts.addDanger({ - title: dashboardUnlinkFromLibraryActionStrings.getFailureMessage(title ? `'${title}'` : ''), - 'data-test-subj': 'unlinkPanelFailure', - }); - } - } -} diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/add_to_library_action.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_actions/library_add_action.tsx similarity index 68% rename from src/platform/plugins/shared/dashboard/public/dashboard_actions/add_to_library_action.tsx rename to src/platform/plugins/shared/dashboard/public/dashboard_actions/library_add_action.tsx index 28113d8fea92e..c74c1d45f2b54 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/add_to_library_action.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_actions/library_add_action.tsx @@ -9,11 +9,10 @@ import React from 'react'; -import { PresentationContainer } from '@kbn/presentation-containers'; +import { PanelPackage, PresentationContainer } from '@kbn/presentation-containers'; import { CanAccessViewMode, EmbeddableApiContext, - HasInPlaceLibraryTransforms, HasLibraryTransforms, HasParentApi, HasType, @@ -21,7 +20,6 @@ import { HasUniqueId, PublishesPanelTitle, apiCanAccessViewMode, - apiHasInPlaceLibraryTransforms, apiHasLibraryTransforms, apiHasParentApi, apiHasType, @@ -44,14 +42,14 @@ import { ACTION_ADD_TO_LIBRARY, DASHBOARD_ACTION_GROUP } from './constants'; export type AddPanelToLibraryActionApi = CanAccessViewMode & HasType & HasUniqueId & - (HasLibraryTransforms | HasInPlaceLibraryTransforms) & + HasLibraryTransforms & HasParentApi> & Partial; const isApiCompatible = (api: unknown | null): api is AddPanelToLibraryActionApi => Boolean( apiCanAccessViewMode(api) && - (apiHasLibraryTransforms(api) || apiHasInPlaceLibraryTransforms(api)) && + apiHasLibraryTransforms(api) && apiHasType(api) && apiHasUniqueId(api) && apiHasParentApi(api) && @@ -76,27 +74,37 @@ export class AddToLibraryAction implements Action { public async isCompatible({ embeddable }: EmbeddableApiContext) { if (!isApiCompatible(embeddable)) return false; - return getInheritedViewMode(embeddable) === 'edit' && (await this.canLinkToLibrary(embeddable)); + return getInheritedViewMode(embeddable) === 'edit' && (await embeddable.canLinkToLibrary()); } public async execute({ embeddable }: EmbeddableApiContext) { if (!isApiCompatible(embeddable)) throw new IncompatibleActionError(); - const title = getPanelTitle(embeddable); - + const lastTitle = getPanelTitle(embeddable); try { - const byRefState = await new Promise((resolve, reject) => { - const onSave = async (props: OnSaveProps): Promise => { + const { byRefPackage, libraryTitle } = await new Promise<{ + byRefPackage: PanelPackage; + libraryTitle: string; + }>((resolve, reject) => { + const onSave = async ({ + newTitle, + isTitleDuplicateConfirmed, + onTitleDuplicate, + }: OnSaveProps): Promise => { await embeddable.checkForDuplicateTitle( - props.newTitle, - props.isTitleDuplicateConfirmed, - props.onTitleDuplicate + newTitle, + isTitleDuplicateConfirmed, + onTitleDuplicate ); try { - const libraryId = await embeddable.saveToLibrary(props.newTitle); - if (apiHasLibraryTransforms(embeddable)) { - resolve({ ...embeddable.getByReferenceState(libraryId), title: props.newTitle }); - } - resolve(undefined); + const libraryId = await embeddable.saveToLibrary(newTitle); + const { rawState, references } = embeddable.getSerializedStateByReference(libraryId); + resolve({ + byRefPackage: { + serializedState: { rawState: { ...rawState, title: newTitle }, references }, + panelType: embeddable.type, + }, + libraryTitle: newTitle, + }); return { id: libraryId }; } catch (error) { reject(error); @@ -107,7 +115,7 @@ export class AddToLibraryAction implements Action { {}} - title={title ?? ''} + title={lastTitle ?? ''} showCopyOnSave={false} objectType={ typeof embeddable.getTypeDisplayName === 'function' @@ -118,35 +126,17 @@ export class AddToLibraryAction implements Action { /> ); }); - /** - * If byRefState is defined, this embeddable type must be re-initialized with the - * newly provided state. - */ - if (byRefState) { - await embeddable.parentApi.replacePanel(embeddable.uuid, { - panelType: embeddable.type, - initialState: byRefState, - }); - } + + await embeddable.parentApi.replacePanel(embeddable.uuid, byRefPackage); coreServices.notifications.toasts.addSuccess({ - title: dashboardAddToLibraryActionStrings.getSuccessMessage(title ? `'${title}'` : ''), + title: dashboardAddToLibraryActionStrings.getSuccessMessage(`'${libraryTitle}'`), 'data-test-subj': 'addPanelToLibrarySuccess', }); } catch (e) { coreServices.notifications.toasts.addDanger({ - title: dashboardAddToLibraryActionStrings.getErrorMessage(title), + title: dashboardAddToLibraryActionStrings.getErrorMessage(lastTitle), 'data-test-subj': 'addPanelToLibraryError', }); } } - - private async canLinkToLibrary(api: AddPanelToLibraryActionApi) { - if (apiHasLibraryTransforms(api)) { - return api.canLinkToLibrary?.(); - } else if (apiHasInPlaceLibraryTransforms(api)) { - const canLink = api.canLinkToLibrary ? await api.canLinkToLibrary() : true; - return api.libraryId$.value === undefined && canLink; - } - throw new IncompatibleActionError(); - } } diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/unlink_from_library_action.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_actions/library_unlink_action.tsx similarity index 73% rename from src/platform/plugins/shared/dashboard/public/dashboard_actions/unlink_from_library_action.tsx rename to src/platform/plugins/shared/dashboard/public/dashboard_actions/library_unlink_action.tsx index 43ff33c2238e5..8c496d8374005 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/unlink_from_library_action.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_actions/library_unlink_action.tsx @@ -11,14 +11,12 @@ import { PresentationContainer } from '@kbn/presentation-containers'; import { CanAccessViewMode, EmbeddableApiContext, - HasInPlaceLibraryTransforms, HasLibraryTransforms, HasParentApi, HasType, HasUniqueId, PublishesPanelTitle, apiCanAccessViewMode, - apiHasInPlaceLibraryTransforms, apiHasLibraryTransforms, apiHasParentApi, apiHasType, @@ -33,7 +31,7 @@ import { dashboardUnlinkFromLibraryActionStrings } from './_dashboard_actions_st import { ACTION_UNLINK_FROM_LIBRARY, DASHBOARD_ACTION_GROUP } from './constants'; export type UnlinkPanelFromLibraryActionApi = CanAccessViewMode & - (HasLibraryTransforms | HasInPlaceLibraryTransforms) & + HasLibraryTransforms & HasType & HasUniqueId & HasParentApi> & @@ -42,7 +40,7 @@ export type UnlinkPanelFromLibraryActionApi = CanAccessViewMode & export const isApiCompatible = (api: unknown | null): api is UnlinkPanelFromLibraryActionApi => Boolean( apiCanAccessViewMode(api) && - (apiHasLibraryTransforms(api) || apiHasInPlaceLibraryTransforms(api)) && + apiHasLibraryTransforms(api) && apiHasUniqueId(api) && apiHasType(api) && apiHasParentApi(api) && @@ -65,40 +63,23 @@ export class UnlinkFromLibraryAction implements Action { return 'folderExclamation'; } - public async canUnlinkFromLibrary(api: UnlinkPanelFromLibraryActionApi) { - if (apiHasLibraryTransforms(api)) { - return api.canUnlinkFromLibrary(); - } else if (apiHasInPlaceLibraryTransforms(api)) { - const canUnLink = api.canUnlinkFromLibrary ? await api.canUnlinkFromLibrary() : true; - return canUnLink && Boolean(api.libraryId$.value); - } - throw new IncompatibleActionError(); - } - public async isCompatible({ embeddable }: EmbeddableApiContext) { if (!isApiCompatible(embeddable)) { // either a an `unlinkFromLibrary` method or a `getByValueState` method is required return false; } - return ( - getInheritedViewMode(embeddable) === 'edit' && (await this.canUnlinkFromLibrary(embeddable)) - ); + return getInheritedViewMode(embeddable) === 'edit' && (await embeddable.canUnlinkFromLibrary()); } public async execute({ embeddable }: EmbeddableApiContext) { if (!isApiCompatible(embeddable)) throw new IncompatibleActionError(); const title = getPanelTitle(embeddable); try { - if (apiHasLibraryTransforms(embeddable)) { - await embeddable.parentApi.replacePanel(embeddable.uuid, { - panelType: embeddable.type, - initialState: { ...embeddable.getByValueState(), title }, - }); - } else if (apiHasInPlaceLibraryTransforms(embeddable)) { - embeddable.unlinkFromLibrary(); - } else { - throw new IncompatibleActionError(); - } + const { references, rawState } = embeddable.getSerializedStateByValue(); + await embeddable.parentApi.replacePanel(embeddable.uuid, { + panelType: embeddable.type, + serializedState: { rawState: { ...rawState, title }, references }, + }); coreServices.notifications.toasts.addSuccess({ title: dashboardUnlinkFromLibraryActionStrings.getSuccessMessage(title ? `'${title}'` : ''), 'data-test-subj': 'unlinkPanelSuccess', diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_actions/register_actions.ts b/src/platform/plugins/shared/dashboard/public/dashboard_actions/register_actions.ts index 48f5b8f93562a..8ac9e60dc704a 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_actions/register_actions.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_actions/register_actions.ts @@ -15,8 +15,6 @@ import { ACTION_COPY_TO_DASHBOARD, ACTION_EXPAND_PANEL, ACTION_EXPORT_CSV, - ACTION_LEGACY_ADD_TO_LIBRARY, - ACTION_LEGACY_UNLINK_FROM_LIBRARY, ACTION_UNLINK_FROM_LIBRARY, BADGE_FILTERS_NOTIFICATION, } from './constants'; @@ -63,24 +61,12 @@ export const registerActions = async ({ }); uiActions.attachAction(CONTEXT_MENU_TRIGGER, ACTION_ADD_TO_LIBRARY); - uiActions.registerActionAsync(ACTION_LEGACY_ADD_TO_LIBRARY, async () => { - const { LegacyAddToLibraryAction } = await import('./actions_module'); - return new LegacyAddToLibraryAction(); - }); - uiActions.attachAction(CONTEXT_MENU_TRIGGER, ACTION_LEGACY_ADD_TO_LIBRARY); - uiActions.registerActionAsync(ACTION_UNLINK_FROM_LIBRARY, async () => { const { UnlinkFromLibraryAction } = await import('./actions_module'); return new UnlinkFromLibraryAction(); }); uiActions.attachAction(CONTEXT_MENU_TRIGGER, ACTION_UNLINK_FROM_LIBRARY); - uiActions.registerActionAsync(ACTION_LEGACY_UNLINK_FROM_LIBRARY, async () => { - const { LegacyUnlinkFromLibraryAction } = await import('./actions_module'); - return new LegacyUnlinkFromLibraryAction(); - }); - uiActions.attachAction(CONTEXT_MENU_TRIGGER, ACTION_LEGACY_UNLINK_FROM_LIBRARY); - uiActions.registerActionAsync(ACTION_COPY_TO_DASHBOARD, async () => { const { CopyToDashboardAction } = await import('./actions_module'); return new CopyToDashboardAction(); diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/get_dashboard_api.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/get_dashboard_api.ts index 4c92119b46733..2f6e680f77871 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/get_dashboard_api.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/get_dashboard_api.ts @@ -7,23 +7,33 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { BehaviorSubject, debounceTime, merge } from 'rxjs'; -import { omit } from 'lodash'; -import { v4 } from 'uuid'; import type { Reference } from '@kbn/content-management-utils'; import { ControlGroupApi, ControlGroupSerializedState } from '@kbn/controls-plugin/public'; import { EmbeddablePackageState } from '@kbn/embeddable-plugin/public'; +import { StateComparators } from '@kbn/presentation-publishing'; +import { omit } from 'lodash'; +import { BehaviorSubject, debounceTime, merge } from 'rxjs'; +import { v4 } from 'uuid'; import { getReferencesForControls, getReferencesForPanelId, } from '../../common/dashboard_container/persistable_state/dashboard_container_references'; -import { initializeTrackPanel } from './track_panel'; -import { initializeTrackOverlay } from './track_overlay'; -import { initializeUnsavedChangesManager } from './unsaved_changes_manager'; +import { UnsavedPanelState } from '../dashboard_container/types'; import { DASHBOARD_APP_ID } from '../plugin_constants'; -import { DEFAULT_DASHBOARD_INPUT } from './default_dashboard_input'; +import { PANELS_CONTROL_GROUP_KEY } from '../services/dashboard_backup_service'; +import { getDashboardContentManagementService } from '../services/dashboard_content_management_service'; import { LoadDashboardReturn } from '../services/dashboard_content_management_service/types'; +import { initializeDataLoadingManager } from './data_loading_manager'; +import { initializeDataViewsManager } from './data_views_manager'; +import { DEFAULT_DASHBOARD_INPUT } from './default_dashboard_input'; +import { getSerializedState } from './get_serialized_state'; +import { openSaveModal } from './open_save_modal'; import { initializePanelsManager } from './panels_manager'; +import { initializeSearchSessionManager } from './search_session_manager'; +import { initializeSettingsManager } from './settings_manager'; +import { initializeTrackContentfulRender } from './track_contentful_render'; +import { initializeTrackOverlay } from './track_overlay'; +import { initializeTrackPanel } from './track_panel'; import { DASHBOARD_API_TYPE, DashboardApi, @@ -31,18 +41,9 @@ import { DashboardInternalApi, DashboardState, } from './types'; -import { initializeDataViewsManager } from './data_views_manager'; -import { initializeSettingsManager } from './settings_manager'; import { initializeUnifiedSearchManager } from './unified_search_manager'; -import { initializeDataLoadingManager } from './data_loading_manager'; -import { PANELS_CONTROL_GROUP_KEY } from '../services/dashboard_backup_service'; -import { getDashboardContentManagementService } from '../services/dashboard_content_management_service'; -import { openSaveModal } from './open_save_modal'; -import { initializeSearchSessionManager } from './search_session_manager'; +import { initializeUnsavedChangesManager } from './unsaved_changes_manager'; import { initializeViewModeManager } from './view_mode_manager'; -import { UnsavedPanelState } from '../dashboard_container/types'; -import { initializeTrackContentfulRender } from './track_contentful_render'; -import { getSerializedState } from './get_serialized_state'; export function getDashboardApi({ creationOptions, @@ -62,26 +63,34 @@ export function getDashboardApi({ const controlGroupApi$ = new BehaviorSubject(undefined); const fullScreenMode$ = new BehaviorSubject(creationOptions?.fullScreenMode ?? false); const isManaged = savedObjectResult?.managed ?? false; - let references: Reference[] = savedObjectResult?.references ?? []; const savedObjectId$ = new BehaviorSubject(savedObjectId); const viewModeManager = initializeViewModeManager(incomingEmbeddable, savedObjectResult); const trackPanel = initializeTrackPanel( async (id: string) => await panelsManager.api.untilEmbeddableLoaded(id) ); - function getPanelReferences(id: string) { - const panelReferences = getReferencesForPanelId(id, references); + + const references$ = new BehaviorSubject(initialState.references); + const getPanelReferences = (id: string) => { + const panelReferences = getReferencesForPanelId(id, references$.value ?? []); // references from old installations may not be prefixed with panel id // fall back to passing all references in these cases to preserve backwards compatability - return panelReferences.length > 0 ? panelReferences : references; - } + return panelReferences.length > 0 ? panelReferences : references$.value ?? []; + }; + const pushPanelReferences = (refs: Reference[]) => { + references$.next([...(references$.value ?? []), ...refs]); + }; + const referencesComparator: StateComparators> = { + references: [references$, (nextRefs) => references$.next(nextRefs)], + }; + const panelsManager = initializePanelsManager( incomingEmbeddable, initialState.panels, initialPanelsRuntimeState ?? {}, trackPanel, getPanelReferences, - (refs: Reference[]) => references.push(...refs) + pushPanelReferences ); const dataLoadingManager = initializeDataLoadingManager(panelsManager.api.children$); const dataViewsManager = initializeDataViewsManager( @@ -108,6 +117,7 @@ export function getDashboardApi({ settingsManager, viewModeManager, unifiedSearchManager, + referencesComparator, }); function getState() { const { panels, references: panelReferences } = panelsManager.internalApi.getState(); @@ -192,7 +202,7 @@ export function getDashboardApi({ }); savedObjectId$.next(saveResult.id); - references = saveResult.references ?? []; + references$.next(saveResult.references); } return saveResult; @@ -211,7 +221,7 @@ export function getDashboardApi({ }); unsavedChangesManager.internalApi.onSave(dashboardState); - references = saveResult.references ?? []; + references$.next(saveResult.references); return; }, @@ -253,7 +263,7 @@ export function getDashboardApi({ labelPosition: 'oneLine', showApplySelections: false, } as ControlGroupSerializedState), - references: getReferencesForControls(references), + references: getReferencesForControls(references$.value ?? []), }; }, getRuntimeStateForControlGroup: () => { diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts index eb110bfdd56f4..c1c08cbd8177b 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts @@ -66,6 +66,9 @@ export async function loadDashboardApi({ ...(savedObjectResult?.dashboardInput ?? {}), ...sessionStorageInput, }; + combinedSessionState.references = sessionStorageInput?.references?.length + ? sessionStorageInput?.references + : savedObjectResult?.references; // -------------------------------------------------------------------------------------- // Combine state with overrides. diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/panels_manager.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/panels_manager.ts index d2b1c0117214c..fc313cea93c85 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/panels_manager.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/panels_manager.ts @@ -13,7 +13,7 @@ import { v4 } from 'uuid'; import { asyncForEach } from '@kbn/std'; import type { Reference } from '@kbn/content-management-utils'; import { METRIC_TYPE } from '@kbn/analytics'; -import { PanelPackage, apiHasSerializableState } from '@kbn/presentation-containers'; +import { PanelPackage } from '@kbn/presentation-containers'; import { DefaultEmbeddableApi, EmbeddablePackageState, @@ -21,14 +21,12 @@ import { } from '@kbn/embeddable-plugin/public'; import { StateComparators, - apiHasInPlaceLibraryTransforms, apiHasLibraryTransforms, apiPublishesPanelTitle, apiPublishesUnsavedChanges, + apiHasSerializableState, getPanelTitle, - stateHasTitles, } from '@kbn/presentation-publishing'; -import { apiHasSnapshottableState } from '@kbn/presentation-containers/interfaces/serialized_state'; import { i18n } from '@kbn/i18n'; import { coreServices, usageCollectionService } from '../services/kibana_services'; import { DashboardPanelMap, DashboardPanelState, prefixReferencesFromPanel } from '../../common'; @@ -171,72 +169,22 @@ export function initializePanelsManager( return titles; } - function duplicateReactEmbeddableInput( - childApi: unknown, - panelToClone: DashboardPanelState, - panelTitles: string[] - ) { - const id = v4(); - const lastTitle = apiPublishesPanelTitle(childApi) ? getPanelTitle(childApi) ?? '' : ''; - const newTitle = getClonedPanelTitle(panelTitles, lastTitle); - - /** - * For react embeddables that have library transforms, we need to ensure - * to clone them with serialized state and references. - * - * TODO: remove this section once all by reference capable react embeddables - * use in-place library transforms - */ - if (apiHasLibraryTransforms(childApi)) { - const byValueSerializedState = childApi.getByValueState(); - if (panelToClone.references) { - pushReferences(prefixReferencesFromPanel(id, panelToClone.references)); - } - return { - type: panelToClone.type, - explicitInput: { - ...byValueSerializedState, - title: newTitle, - id, - }, - }; - } - - const runtimeSnapshot = (() => { - if (apiHasInPlaceLibraryTransforms(childApi)) return childApi.getByValueRuntimeSnapshot(); - return apiHasSnapshottableState(childApi) ? childApi.snapshotRuntimeState() : {}; - })(); - if (stateHasTitles(runtimeSnapshot)) runtimeSnapshot.title = newTitle; - - setRuntimeStateForChild(id, runtimeSnapshot); - return { - type: panelToClone.type, - explicitInput: { - id, - }, - }; - } - return { api: { addNewPanel: async ( panelPackage: PanelPackage, displaySuccessMessage?: boolean ) => { - usageCollectionService?.reportUiCounter( - DASHBOARD_UI_METRIC_ID, - METRIC_TYPE.CLICK, - panelPackage.panelType - ); + const { panelType: type, serializedState, initialState } = panelPackage; + + usageCollectionService?.reportUiCounter(DASHBOARD_UI_METRIC_ID, METRIC_TYPE.CLICK, type); const newId = v4(); - const getCustomPlacementSettingFunc = getDashboardPanelPlacementSetting( - panelPackage.panelType - ); + const getCustomPlacementSettingFunc = getDashboardPanelPlacementSetting(type); const customPlacementSettings = getCustomPlacementSettingFunc - ? await getCustomPlacementSettingFunc(panelPackage.initialState) + ? await getCustomPlacementSettingFunc(initialState) : undefined; const { newPanelPlacement, otherPanels } = runPanelPlacementStrategy( @@ -247,19 +195,23 @@ export function initializePanelsManager( width: customPlacementSettings?.width ?? DEFAULT_PANEL_WIDTH, } ); + + if (serializedState?.references && serializedState.references.length > 0) { + pushReferences(prefixReferencesFromPanel(newId, serializedState.references)); + } const newPanel: DashboardPanelState = { - type: panelPackage.panelType, + type, gridData: { ...newPanelPlacement, i: newId, }, explicitInput: { + ...serializedState?.rawState, id: newId, }, }; - if (panelPackage.initialState) { - setRuntimeStateForChild(newId, panelPackage.initialState); - } + if (initialState) setRuntimeStateForChild(newId, initialState); + setPanels({ ...otherPanels, [newId]: newPanel }); if (displaySuccessMessage) { coreServices.notifications.toasts.addSuccess({ @@ -275,12 +227,27 @@ export function initializePanelsManager( children$, duplicatePanel: async (idToDuplicate: string) => { const panelToClone = getDashboardPanelFromId(idToDuplicate); + const childApi = children$.value[idToDuplicate]; + if (!apiHasSerializableState(childApi)) { + throw new Error('cannot duplicate a non-serializable panel'); + } - const duplicatedPanelState = duplicateReactEmbeddableInput( - children$.value[idToDuplicate], - panelToClone, - await getPanelTitles() - ); + const id = v4(); + const allPanelTitles = await getPanelTitles(); + const lastTitle = apiPublishesPanelTitle(childApi) ? getPanelTitle(childApi) ?? '' : ''; + const newTitle = getClonedPanelTitle(allPanelTitles, lastTitle); + + /** + * For embeddables that have library transforms, we need to ensure + * to clone them with by value serialized state. + */ + const serializedState = apiHasLibraryTransforms(childApi) + ? childApi.getSerializedStateByValue() + : childApi.serializeState(); + + if (serializedState.references) { + pushReferences(prefixReferencesFromPanel(id, serializedState.references)); + } coreServices.notifications.toasts.addSuccess({ title: dashboardClonePanelActionStrings.getSuccessMessage(), @@ -295,16 +262,21 @@ export function initializePanelsManager( }); const newPanel = { - ...duplicatedPanelState, + type: panelToClone.type, + explicitInput: { + ...serializedState.rawState, + title: newTitle, + id, + }, gridData: { ...newPanelPlacement, - i: duplicatedPanelState.explicitInput.id, + i: id, }, }; setPanels({ ...otherPanels, - [newPanel.explicitInput.id]: newPanel, + [id]: newPanel, }); }, getDashboardPanelFromId, @@ -337,7 +309,7 @@ export function initializePanelsManager( children$.next(children); } }, - replacePanel: async (idToRemove: string, { panelType, initialState }: PanelPackage) => { + replacePanel: async (idToRemove: string, panelPackage: PanelPackage) => { const panels = { ...panels$.value }; if (!panels[idToRemove]) { throw new PanelNotFoundError(); @@ -346,12 +318,20 @@ export function initializePanelsManager( const id = v4(); const oldPanel = panels[idToRemove]; delete panels[idToRemove]; + + const { panelType: type, serializedState, initialState } = panelPackage; + if (serializedState?.references && serializedState.references.length > 0) { + pushReferences(prefixReferencesFromPanel(id, serializedState?.references)); + } + + if (initialState) setRuntimeStateForChild(id, initialState); + setPanels({ ...panels, [id]: { ...oldPanel, - explicitInput: { ...initialState, id }, - type: panelType, + explicitInput: { ...serializedState?.rawState, id }, + type, }, }); diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/types.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/types.ts index 0318456ac0a0d..8b5c23bdf9bf2 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/types.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/types.ts @@ -7,6 +7,16 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import type { Reference } from '@kbn/content-management-utils'; +import { + ControlGroupApi, + ControlGroupRuntimeState, + ControlGroupSerializedState, +} from '@kbn/controls-plugin/public'; +import { RefreshInterval, SearchSessionInfoProvider } from '@kbn/data-plugin/public'; +import type { DefaultEmbeddableApi, EmbeddablePackageState } from '@kbn/embeddable-plugin/public'; +import { Filter, Query, TimeRange } from '@kbn/es-query'; +import { IKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; import { CanExpandPanels, HasRuntimeChildState, @@ -14,11 +24,11 @@ import { HasSerializedChildState, PresentationContainer, PublishesSettings, - SerializedPanelState, TrackContentfulRender, TracksOverlays, } from '@kbn/presentation-containers'; import { + SerializedPanelState, EmbeddableAppContext, HasAppContext, HasExecutionContext, @@ -35,27 +45,17 @@ import { PublishingSubject, ViewMode, } from '@kbn/presentation-publishing'; -import { - ControlGroupApi, - ControlGroupRuntimeState, - ControlGroupSerializedState, -} from '@kbn/controls-plugin/public'; -import { Filter, Query, TimeRange } from '@kbn/es-query'; -import type { DefaultEmbeddableApi, EmbeddablePackageState } from '@kbn/embeddable-plugin/public'; -import { Observable, Subject } from 'rxjs'; -import { RefreshInterval, SearchSessionInfoProvider } from '@kbn/data-plugin/public'; -import { IKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; import { PublishesReload } from '@kbn/presentation-publishing/interfaces/fetch/publishes_reload'; import { PublishesSearchSession } from '@kbn/presentation-publishing/interfaces/fetch/publishes_search_session'; import { LocatorPublic } from '@kbn/share-plugin/common'; -import type { SavedObjectReference } from '@kbn/core-saved-objects-api-server'; +import { Observable, Subject } from 'rxjs'; import { DashboardPanelMap, DashboardPanelState } from '../../common'; import type { DashboardAttributes, DashboardOptions } from '../../server/content_management'; +import { DashboardLocatorParams } from '../dashboard_container/types'; import { LoadDashboardReturn, SaveDashboardReturn, } from '../services/dashboard_content_management_service/types'; -import { DashboardLocatorParams } from '../dashboard_container/types'; export const DASHBOARD_API_TYPE = 'dashboard'; @@ -101,6 +101,12 @@ export interface DashboardState extends DashboardSettings { viewMode: ViewMode; panels: DashboardPanelMap; + /** + * Temporary. Currently Dashboards are in charge of providing references to all of their children. + * Eventually this will be removed in favour of the Dashboard injecting references serverside. + */ + references?: Reference[]; + /** * Serialized control group state. * Contains state loaded from dashboard saved object @@ -145,7 +151,7 @@ export type DashboardApi = CanExpandPanels & getSettings: () => DashboardSettings; getSerializedState: () => { attributes: DashboardAttributes; - references: SavedObjectReference[]; + references: Reference[]; }; getDashboardPanelFromId: (id: string) => DashboardPanelState; hasOverlays$: PublishingSubject; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/unsaved_changes_manager.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/unsaved_changes_manager.ts index 46ae02de87fc2..fef1175916a03 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/unsaved_changes_manager.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/unsaved_changes_manager.ts @@ -7,19 +7,23 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { BehaviorSubject, Subject, combineLatest, debounceTime, skipWhile, switchMap } from 'rxjs'; -import { PublishesSavedObjectId, PublishingSubject } from '@kbn/presentation-publishing'; import { ControlGroupApi } from '@kbn/controls-plugin/public'; import { childrenUnsavedChanges$, initializeUnsavedChanges } from '@kbn/presentation-containers'; +import { + PublishesSavedObjectId, + PublishingSubject, + StateComparators, +} from '@kbn/presentation-publishing'; import { omit } from 'lodash'; -import { DashboardCreationOptions, DashboardState } from './types'; -import { initializePanelsManager } from './panels_manager'; -import { initializeSettingsManager } from './settings_manager'; -import { initializeUnifiedSearchManager } from './unified_search_manager'; +import { BehaviorSubject, Subject, combineLatest, debounceTime, skipWhile, switchMap } from 'rxjs'; import { PANELS_CONTROL_GROUP_KEY, getDashboardBackupService, } from '../services/dashboard_backup_service'; +import { initializePanelsManager } from './panels_manager'; +import { initializeSettingsManager } from './settings_manager'; +import { DashboardCreationOptions, DashboardState } from './types'; +import { initializeUnifiedSearchManager } from './unified_search_manager'; import { initializeViewModeManager } from './view_mode_manager'; export function initializeUnsavedChangesManager({ @@ -31,6 +35,7 @@ export function initializeUnsavedChangesManager({ settingsManager, viewModeManager, unifiedSearchManager, + referencesComparator, }: { creationOptions?: DashboardCreationOptions; controlGroupApi$: PublishingSubject; @@ -40,6 +45,7 @@ export function initializeUnsavedChangesManager({ settingsManager: ReturnType; viewModeManager: ReturnType; unifiedSearchManager: ReturnType; + referencesComparator: StateComparators>; }) { const hasUnsavedChanges$ = new BehaviorSubject(false); const lastSavedState$ = new BehaviorSubject(lastSavedState); @@ -55,6 +61,7 @@ export function initializeUnsavedChangesManager({ ...settingsManager.comparators, ...viewModeManager.comparators, ...unifiedSearchManager.comparators, + ...referencesComparator, } ); @@ -70,12 +77,14 @@ export function initializeUnsavedChangesManager({ ]) .pipe(debounceTime(0)) .subscribe(([dashboardChanges, unsavedPanelState, controlGroupChanges]) => { - // viewMode needs to be stored in session state because - // its used to exclude 'view' dashboards on the listing page - // However, viewMode should not trigger unsaved changes notification - // otherwise, opening a dashboard in edit mode will always show unsaved changes + /** + * viewMode needs to be stored in session state because its used to exclude 'view' dashboards on the listing page + * However, viewMode differences should not trigger unsaved changes notification otherwise, opening a dashboard in + * edit mode will always show unsaved changes. Similarly, differences in references are derived from panels, so + * we don't consider them unsaved changes + */ const hasDashboardChanges = - Object.keys(omit(dashboardChanges ?? {}, ['viewMode'])).length > 0; + Object.keys(omit(dashboardChanges ?? {}, ['viewMode', 'references'])).length > 0; const hasUnsavedChanges = hasDashboardChanges || unsavedPanelState !== undefined || controlGroupChanges !== undefined; if (hasUnsavedChanges !== hasUnsavedChanges$.value) { diff --git a/src/platform/plugins/shared/dashboard/public/services/dashboard_backup_service.ts b/src/platform/plugins/shared/dashboard/public/services/dashboard_backup_service.ts index 30930e4970be2..584f615566243 100644 --- a/src/platform/plugins/shared/dashboard/public/services/dashboard_backup_service.ts +++ b/src/platform/plugins/shared/dashboard/public/services/dashboard_backup_service.ts @@ -176,7 +176,7 @@ class DashboardBackupService implements DashboardBackupServiceType { if ( dashboardStatesInSpace[dashboardId].viewMode === 'edit' && (Object.keys(dashboardStatesInSpace[dashboardId]).some( - (stateKey) => stateKey !== 'viewMode' + (stateKey) => stateKey !== 'viewMode' && stateKey !== 'references' ) || Object.keys(panelStatesInSpace?.[dashboardId]).length > 0) ) diff --git a/src/platform/plugins/shared/discover/public/embeddable/get_search_embeddable_factory.tsx b/src/platform/plugins/shared/discover/public/embeddable/get_search_embeddable_factory.tsx index 298ac7bc20b9e..7766765a75e52 100644 --- a/src/platform/plugins/shared/discover/public/embeddable/get_search_embeddable_factory.tsx +++ b/src/platform/plugins/shared/discover/public/embeddable/get_search_embeddable_factory.tsx @@ -7,7 +7,6 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { omit } from 'lodash'; import React, { useCallback, useEffect, useMemo } from 'react'; import { BehaviorSubject, firstValueFrom } from 'rxjs'; @@ -120,6 +119,16 @@ export const getSearchEmbeddableFactory = ({ stateManager: searchEmbeddable.stateManager, }); + const serialize = (savedObjectId?: string) => + serializeState({ + uuid, + initialState, + savedSearch: searchEmbeddable.api.savedSearch$.getValue(), + serializeTitles, + serializeTimeRange: timeRange.serialize, + savedObjectId, + }); + const api: SearchEmbeddableApi = buildApi( { ...titlesApi, @@ -137,15 +146,6 @@ export const getSearchEmbeddableFactory = ({ savedObjectId: savedObjectId$, defaultPanelTitle: defaultPanelTitle$, defaultPanelDescription: defaultPanelDescription$, - getByValueRuntimeSnapshot: () => { - const savedSearch = searchEmbeddable.api.savedSearch$.getValue(); - return { - ...serializeTitles(), - ...timeRange.serialize(), - ...omit(savedSearch, 'searchSource'), - serializedSearchSource: savedSearch.searchSource.getSerializedFields(), - }; - }, hasTimeRange: () => { const fetchContext = fetchContext$.getValue(); return fetchContext?.timeslice !== undefined || fetchContext?.timeRange !== undefined; @@ -160,14 +160,12 @@ export const getSearchEmbeddableFactory = ({ ); }, canUnlinkFromLibrary: async () => Boolean(savedObjectId$.getValue()), - libraryId$: savedObjectId$, saveToLibrary: async (title: string) => { const savedObjectId = await save({ ...api.savedSearch$.getValue(), title, }); defaultPanelTitle$.next(title); - savedObjectId$.next(savedObjectId!); return savedObjectId!; }, checkForDuplicateTitle: (newTitle, isTitleDuplicateConfirmed, onTitleDuplicate) => @@ -176,26 +174,9 @@ export const getSearchEmbeddableFactory = ({ isTitleDuplicateConfirmed, onTitleDuplicate, }), - unlinkFromLibrary: () => { - savedObjectId$.next(undefined); - if ((titlesApi.panelTitle.getValue() ?? '').length === 0) { - titlesApi.setPanelTitle(defaultPanelTitle$.getValue()); - } - if ((titlesApi.panelDescription.getValue() ?? '').length === 0) { - titlesApi.setPanelDescription(defaultPanelDescription$.getValue()); - } - defaultPanelTitle$.next(undefined); - defaultPanelDescription$.next(undefined); - }, - serializeState: () => - serializeState({ - uuid, - initialState, - savedSearch: searchEmbeddable.api.savedSearch$.getValue(), - serializeTitles, - serializeTimeRange: timeRange.serialize, - savedObjectId: savedObjectId$.getValue(), - }), + getSerializedStateByValue: () => serialize(undefined), + getSerializedStateByReference: (newId: string) => serialize(newId), + serializeState: () => serialize(savedObjectId$.getValue()), getInspectorAdapters: () => searchEmbeddable.stateManager.inspectorAdapters.getValue(), }, { diff --git a/src/platform/plugins/shared/discover/public/embeddable/types.ts b/src/platform/plugins/shared/discover/public/embeddable/types.ts index 57932b2508ee1..05c1991bce611 100644 --- a/src/platform/plugins/shared/discover/public/embeddable/types.ts +++ b/src/platform/plugins/shared/discover/public/embeddable/types.ts @@ -13,7 +13,7 @@ import { HasInspectorAdapters } from '@kbn/inspector-plugin/public'; import { EmbeddableApiContext, HasEditCapabilities, - HasInPlaceLibraryTransforms, + HasLibraryTransforms, PublishesBlockingError, PublishesDataLoading, PublishesSavedObjectId, @@ -104,7 +104,7 @@ export type SearchEmbeddableApi = DefaultEmbeddableApi< PublishesSavedSearch & PublishesWritableDataViews & PublishesWritableUnifiedSearch & - HasInPlaceLibraryTransforms & + HasLibraryTransforms & HasTimeRange & HasInspectorAdapters & Partial; diff --git a/src/platform/plugins/shared/discover/public/embeddable/utils/serialization_utils.test.ts b/src/platform/plugins/shared/discover/public/embeddable/utils/serialization_utils.test.ts index 2a7a23b3600a7..a4ab454c8a49c 100644 --- a/src/platform/plugins/shared/discover/public/embeddable/utils/serialization_utils.test.ts +++ b/src/platform/plugins/shared/discover/public/embeddable/utils/serialization_utils.test.ts @@ -10,7 +10,7 @@ import { SerializedSearchSourceFields } from '@kbn/data-plugin/common'; import { createSearchSourceMock } from '@kbn/data-plugin/public/mocks'; import { dataViewMock } from '@kbn/discover-utils/src/__mocks__'; -import { SerializedPanelState } from '@kbn/presentation-containers'; +import { SerializedPanelState } from '@kbn/presentation-publishing'; import { toSavedSearchAttributes } from '@kbn/saved-search-plugin/common'; import { SavedSearchUnwrapResult } from '@kbn/saved-search-plugin/public'; import { discoverServiceMock } from '../../__mocks__/services'; diff --git a/src/platform/plugins/shared/discover/public/embeddable/utils/serialization_utils.ts b/src/platform/plugins/shared/discover/public/embeddable/utils/serialization_utils.ts index 397d078dba3e3..fb6eeed18f85f 100644 --- a/src/platform/plugins/shared/discover/public/embeddable/utils/serialization_utils.ts +++ b/src/platform/plugins/shared/discover/public/embeddable/utils/serialization_utils.ts @@ -11,8 +11,11 @@ import { omit, pick } from 'lodash'; import deepEqual from 'react-fast-compare'; import { EmbeddableStateWithType } from '@kbn/embeddable-plugin/common'; -import { SerializedPanelState } from '@kbn/presentation-containers'; -import { SerializedTimeRange, SerializedTitles } from '@kbn/presentation-publishing'; +import { + SerializedTimeRange, + SerializedTitles, + SerializedPanelState, +} from '@kbn/presentation-publishing'; import { SavedSearch, SavedSearchAttributes, diff --git a/src/platform/plugins/shared/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx b/src/platform/plugins/shared/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx index 2119e6de03a8a..65cbbf29f8aba 100644 --- a/src/platform/plugins/shared/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx +++ b/src/platform/plugins/shared/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx @@ -11,12 +11,15 @@ import { apiHasRuntimeChildState, apiIsPresentationContainer, HasSerializedChildState, - HasSnapshottableState, initializeUnsavedChanges, - SerializedPanelState, } from '@kbn/presentation-containers'; import { PresentationPanel, PresentationPanelProps } from '@kbn/presentation-panel-plugin/public'; -import { ComparatorDefinition, StateComparators } from '@kbn/presentation-publishing'; +import { + ComparatorDefinition, + StateComparators, + HasSnapshottableState, + SerializedPanelState, +} from '@kbn/presentation-publishing'; import React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react'; import { BehaviorSubject, combineLatest, debounceTime, map, skip, Subscription } from 'rxjs'; import { v4 as generateId } from 'uuid'; diff --git a/src/platform/plugins/shared/embeddable/public/react_embeddable_system/types.ts b/src/platform/plugins/shared/embeddable/public/react_embeddable_system/types.ts index 4ba8653310ff0..db0818a76b826 100644 --- a/src/platform/plugins/shared/embeddable/public/react_embeddable_system/types.ts +++ b/src/platform/plugins/shared/embeddable/public/react_embeddable_system/types.ts @@ -7,11 +7,6 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { - HasSerializableState, - HasSnapshottableState, - SerializedPanelState, -} from '@kbn/presentation-containers'; import { DefaultPresentationPanelApi } from '@kbn/presentation-panel-plugin/public/panel_component/types'; import { CanLockHoverActions, @@ -19,6 +14,9 @@ import { PublishesPhaseEvents, PublishesUnsavedChanges, StateComparators, + HasSerializableState, + HasSnapshottableState, + SerializedPanelState, } from '@kbn/presentation-publishing'; import { MaybePromise } from '@kbn/utility-types'; import React from 'react'; diff --git a/src/platform/plugins/shared/visualizations/public/embeddable/state.test.ts b/src/platform/plugins/shared/visualizations/public/embeddable/state.test.ts index b6075b9153bef..bda5bb18d0edb 100644 --- a/src/platform/plugins/shared/visualizations/public/embeddable/state.test.ts +++ b/src/platform/plugins/shared/visualizations/public/embeddable/state.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { SerializedPanelState } from '@kbn/presentation-containers'; +import { SerializedPanelState } from '@kbn/presentation-publishing'; import { serializeState, deserializeSavedVisState } from './state'; import { VisualizeSavedVisInputState } from './types'; diff --git a/src/platform/plugins/shared/visualizations/public/embeddable/state.ts b/src/platform/plugins/shared/visualizations/public/embeddable/state.ts index 79a3bc841a999..2b1baea47c829 100644 --- a/src/platform/plugins/shared/visualizations/public/embeddable/state.ts +++ b/src/platform/plugins/shared/visualizations/public/embeddable/state.ts @@ -9,8 +9,7 @@ import type { SerializedSearchSourceFields } from '@kbn/data-plugin/public'; import { extractSearchSourceReferences } from '@kbn/data-plugin/public'; -import { SerializedPanelState } from '@kbn/presentation-containers'; -import { SerializedTitles } from '@kbn/presentation-publishing'; +import { SerializedTitles, SerializedPanelState } from '@kbn/presentation-publishing'; import { cloneDeep, isEmpty, omit } from 'lodash'; import { Reference } from '../../common/content_management'; import { diff --git a/src/platform/plugins/shared/visualizations/public/embeddable/types.ts b/src/platform/plugins/shared/visualizations/public/embeddable/types.ts index 767f911d5bd52..ad7a7c86dde58 100644 --- a/src/platform/plugins/shared/visualizations/public/embeddable/types.ts +++ b/src/platform/plugins/shared/visualizations/public/embeddable/types.ts @@ -14,6 +14,7 @@ import type { TimeRange } from '@kbn/es-query'; import { HasInspectorAdapters } from '@kbn/inspector-plugin/public'; import { HasEditCapabilities, + HasLibraryTransforms, HasSupportedTriggers, PublishesDataLoading, PublishesDataViews, @@ -98,13 +99,8 @@ export type VisualizeApi = Partial & HasInspectorAdapters & HasSupportedTriggers & PublishesTimeRange & + HasLibraryTransforms & DefaultEmbeddableApi & { updateVis: (vis: DeepPartial>) => void; openInspector: () => OverlayRef | undefined; - saveToLibrary: (title: string) => Promise; - canLinkToLibrary: () => boolean; - canUnlinkFromLibrary: () => boolean; - checkForDuplicateTitle: (title: string) => boolean; - getByValueState: () => VisualizeSerializedState; - getByReferenceState: (id: string) => VisualizeSerializedState; }; diff --git a/src/platform/plugins/shared/visualizations/public/embeddable/visualize_embeddable.tsx b/src/platform/plugins/shared/visualizations/public/embeddable/visualize_embeddable.tsx index 71338e96ea145..c1e069e370137 100644 --- a/src/platform/plugins/shared/visualizations/public/embeddable/visualize_embeddable.tsx +++ b/src/platform/plugins/shared/visualizations/public/embeddable/visualize_embeddable.tsx @@ -171,6 +171,22 @@ export const getVisualizeEmbeddableFactory: (deps: { const defaultPanelTitle = new BehaviorSubject(initialVisInstance.title); + const serializeVisualizeEmbeddable = ( + savedObjectId: string | undefined, + linkedToLibrary: boolean + ) => { + const savedObjectProperties = savedObjectProperties$.getValue(); + return serializeState({ + serializedVis: vis$.getValue().serialize(), + titles: serializeTitles(), + id: savedObjectId, + linkedToLibrary, + ...(savedObjectProperties ? { savedObjectProperties } : {}), + ...(dynamicActionsApi?.serializeDynamicActions?.() ?? {}), + ...serializeCustomTimeRange(), + }); + }; + const api = buildApi( { ...customTimeRangeApi, @@ -186,20 +202,13 @@ export const getVisualizeEmbeddableFactory: (deps: { SELECT_RANGE_TRIGGER, ], serializeState: () => { - const savedObjectProperties = savedObjectProperties$.getValue(); - return serializeState({ - serializedVis: vis$.getValue().serialize(), - titles: serializeTitles(), - id: savedObjectId$.getValue(), - linkedToLibrary: - // In the visualize editor, linkedToLibrary should always be false to force the full state to be serialized, - // instead of just passing a reference to the linked saved object. Other contexts like dashboards should - // serialize the state with just the savedObjectId so that the current revision of the vis is always used - apiIsOfType(parentApi, VISUALIZE_APP_NAME) ? false : linkedToLibrary$.getValue(), - ...(savedObjectProperties ? { savedObjectProperties } : {}), - ...(dynamicActionsApi?.serializeDynamicActions?.() ?? {}), - ...serializeCustomTimeRange(), - }); + // In the visualize editor, linkedToLibrary should always be false to force the full state to be serialized, + // instead of just passing a reference to the linked saved object. Other contexts like dashboards should + // serialize the state with just the savedObjectId so that the current revision of the vis is always used + const linkedToLibrary = apiIsOfType(parentApi, VISUALIZE_APP_NAME) + ? false + : linkedToLibrary$.getValue(); + return serializeVisualizeEmbeddable(savedObjectId$.getValue(), Boolean(linkedToLibrary)); }, getVis: () => vis$.getValue(), getInspectorAdapters: () => inspectorAdapters$.getValue(), @@ -260,20 +269,11 @@ export const getVisualizeEmbeddableFactory: (deps: { references, }); }, - canLinkToLibrary: () => !state.linkedToLibrary, - canUnlinkFromLibrary: () => !!state.linkedToLibrary, - checkForDuplicateTitle: () => false, // Handled by saveToLibrary action - getByValueState: () => ({ - savedVis: vis$.getValue().serialize(), - ...serializeTitles(), - }), - getByReferenceState: (libraryId) => - serializeState({ - serializedVis: vis$.getValue().serialize(), - titles: serializeTitles(), - id: libraryId, - linkedToLibrary: true, - }).rawState, + canLinkToLibrary: () => Promise.resolve(!state.linkedToLibrary), + canUnlinkFromLibrary: () => Promise.resolve(!!state.linkedToLibrary), + checkForDuplicateTitle: () => Promise.resolve(), // Handled by saveToLibrary action + getSerializedStateByValue: () => serializeVisualizeEmbeddable(undefined, false), + getSerializedStateByReference: (libraryId) => serializeVisualizeEmbeddable(libraryId, true), }, { ...titleComparators, diff --git a/test/functional/apps/dashboard_elements/links/links_create_edit.ts b/test/functional/apps/dashboard_elements/links/links_create_edit.ts index df930b42c2001..ac23b7e8747dc 100644 --- a/test/functional/apps/dashboard_elements/links/links_create_edit.ts +++ b/test/functional/apps/dashboard_elements/links/links_create_edit.ts @@ -77,7 +77,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await common.waitForSaveModalToClose(); await testSubjects.exists('addObjectToDashboardSuccess'); await testSubjects.existOrFail('links--component'); - await dashboardPanelActions.expectLinkedToLibrary(LINKS_PANEL_NAME, false); + await dashboardPanelActions.expectLinkedToLibrary(LINKS_PANEL_NAME); expect(await dashboardLinks.getNumberOfLinksInPanel()).to.equal(4); await dashboard.clickDiscardChanges(); diff --git a/test/functional/apps/visualize/group3/_add_to_dashboard.ts b/test/functional/apps/visualize/group3/_add_to_dashboard.ts index d0921f5ab1d7d..3f6c70d9ebb84 100644 --- a/test/functional/apps/visualize/group3/_add_to_dashboard.ts +++ b/test/functional/apps/visualize/group3/_add_to_dashboard.ts @@ -202,7 +202,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const panelCount = await dashboard.getPanelCount(); expect(panelCount).to.eql(2); - await dashboardPanelActions.expectLinkedToLibrary('My Saved New Vis 2', false); + await dashboardPanelActions.expectLinkedToLibrary('My Saved New Vis 2'); }); it('adding a existing metric to an existing dashboard by value', async function () { diff --git a/test/functional/services/dashboard/panel_actions.ts b/test/functional/services/dashboard/panel_actions.ts index 31890d4c4c478..aaee40d9199c9 100644 --- a/test/functional/services/dashboard/panel_actions.ts +++ b/test/functional/services/dashboard/panel_actions.ts @@ -19,9 +19,7 @@ const CUSTOMIZE_PANEL_DATA_TEST_SUBJ = 'embeddablePanelAction-ACTION_CUSTOMIZE_P const OPEN_CONTEXT_MENU_ICON_DATA_TEST_SUBJ = 'embeddablePanelToggleMenuIcon'; const OPEN_INSPECTOR_TEST_SUBJ = 'embeddablePanelAction-openInspector'; const COPY_PANEL_TO_DATA_TEST_SUBJ = 'embeddablePanelAction-copyToDashboard'; -const LEGACY_SAVE_TO_LIBRARY_TEST_SUBJ = 'embeddablePanelAction-legacySaveToLibrary'; const SAVE_TO_LIBRARY_TEST_SUBJ = 'embeddablePanelAction-saveToLibrary'; -const LEGACY_UNLINK_FROM_LIBRARY_TEST_SUBJ = 'embeddablePanelAction-legacyUnlinkFromLibrary'; const UNLINK_FROM_LIBRARY_TEST_SUBJ = 'embeddablePanelAction-unlinkFromLibrary'; const CONVERT_TO_LENS_TEST_SUBJ = 'embeddablePanelAction-ACTION_EDIT_IN_LENS'; @@ -240,13 +238,6 @@ export class DashboardPanelActionsService extends FtrService { return response; } - async legacyUnlinkFromLibrary(title = '') { - this.log.debug(`legacyUnlinkFromLibrary(${title}`); - await this.clickPanelActionByTitle(LEGACY_UNLINK_FROM_LIBRARY_TEST_SUBJ, title); - await this.testSubjects.existOrFail('unlinkPanelSuccess'); - await this.expectNotLinkedToLibrary(title, true); - } - async unlinkFromLibrary(title = '') { this.log.debug(`unlinkFromLibrary(${title})`); await this.clickPanelActionByTitle(UNLINK_FROM_LIBRARY_TEST_SUBJ, title); @@ -254,17 +245,6 @@ export class DashboardPanelActionsService extends FtrService { await this.expectNotLinkedToLibrary(title); } - async legacySaveToLibrary(newTitle = '', oldTitle = '') { - this.log.debug(`legacySaveToLibrary(${newTitle},${oldTitle})`); - await this.clickPanelActionByTitle(LEGACY_SAVE_TO_LIBRARY_TEST_SUBJ, oldTitle); - await this.testSubjects.setValue('savedObjectTitle', newTitle, { - clearWithKeyboard: true, - }); - await this.testSubjects.clickWhenNotDisabledWithoutRetry('confirmSaveSavedObjectButton'); - await this.testSubjects.existOrFail('addPanelToLibrarySuccess'); - await this.expectLinkedToLibrary(newTitle, true); - } - async saveToLibrary(newTitle = '', oldTitle = '') { this.log.debug(`saveToLibraryByTitle(${newTitle},${oldTitle})`); await this.clickPanelActionByTitle(SAVE_TO_LIBRARY_TEST_SUBJ, oldTitle); @@ -413,27 +393,19 @@ export class DashboardPanelActionsService extends FtrService { return await this.convertToLens(wrapper); } - async expectLinkedToLibrary(title = '', legacy?: boolean) { + async expectLinkedToLibrary(title = '') { this.log.debug(`expectLinkedToLibrary(${title})`); const isViewMode = await this.dashboard.getIsInViewMode(); if (isViewMode) await this.dashboard.switchToEditMode(); - if (legacy) { - await this.expectExistsPanelAction(LEGACY_UNLINK_FROM_LIBRARY_TEST_SUBJ, title); - } else { - await this.expectExistsPanelAction(UNLINK_FROM_LIBRARY_TEST_SUBJ, title); - } + await this.expectExistsPanelAction(UNLINK_FROM_LIBRARY_TEST_SUBJ, title); if (isViewMode) await this.dashboard.clickCancelOutOfEditMode(); } - async expectNotLinkedToLibrary(title = '', legacy?: boolean) { + async expectNotLinkedToLibrary(title = '') { this.log.debug(`expectNotLinkedToLibrary(${title})`); const isViewMode = await this.dashboard.getIsInViewMode(); if (isViewMode) await this.dashboard.switchToEditMode(); - if (legacy) { - await this.expectExistsPanelAction(LEGACY_SAVE_TO_LIBRARY_TEST_SUBJ, title); - } else { - await this.expectExistsPanelAction(SAVE_TO_LIBRARY_TEST_SUBJ, title); - } + await this.expectExistsPanelAction(SAVE_TO_LIBRARY_TEST_SUBJ, title); if (isViewMode) await this.dashboard.clickCancelOutOfEditMode(); } } diff --git a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_dashboard_services.ts b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_dashboard_services.ts index 06e72def12c62..f88d3af2db3d9 100644 --- a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_dashboard_services.ts +++ b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_dashboard_services.ts @@ -7,7 +7,6 @@ import { noop } from 'lodash'; import { - HasInPlaceLibraryTransforms, HasLibraryTransforms, PublishesWritablePanelTitle, PublishesWritablePanelDescription, @@ -28,6 +27,7 @@ import type { IntegrationCallbacks, LensInternalApi, LensApi, + LensSerializedState, } from '../types'; import { apiHasLensComponentProps } from '../type_guards'; import { StateManagementConfig } from './initialize_state_management'; @@ -38,8 +38,7 @@ type SerializedProps = SerializedTitles & LensPanelProps & LensOverrides & LensS export interface DashboardServicesConfig { api: PublishesWritablePanelTitle & PublishesWritablePanelDescription & - HasInPlaceLibraryTransforms & - HasLibraryTransforms & + HasLibraryTransforms & Pick & Pick; serialize: () => SerializedProps; @@ -86,10 +85,10 @@ export function initializeDashboardServices( defaultPanelTitle: defaultPanelTitle$, defaultPanelDescription: defaultPanelDescription$, ...titlesApi, - libraryId$: stateConfig.api.savedObjectId, updateOverrides: internalApi.updateOverrides, getTriggerCompatibleActions: uiActions.getTriggerCompatibleActions, - // The functions below brings the HasInPlaceLibraryTransforms compliance (new interface) + + // The functions below fulfill the HasLibraryTransforms interface saveToLibrary: async (title: string) => { const { attributes } = getLatestState(); const savedObjectId = await attributeService.saveToLibrary( @@ -122,28 +121,14 @@ export function initializeDashboardServices( canLinkToLibrary: async () => !getLatestState().savedObjectId && !isTextBasedLanguage(getLatestState()), canUnlinkFromLibrary: async () => Boolean(getLatestState().savedObjectId), - unlinkFromLibrary: () => { - // broadcast the change to the main state serializer - stateConfig.api.updateSavedObjectId(undefined); - - if ((titlesApi.panelTitle.getValue() ?? '').length === 0) { - titlesApi.setPanelTitle(defaultPanelTitle$.getValue()); - } - if ((titlesApi.panelDescription.getValue() ?? '').length === 0) { - titlesApi.setPanelDescription(defaultPanelDescription$.getValue()); - } - defaultPanelTitle$.next(undefined); - defaultPanelDescription$.next(undefined); - }, - getByValueRuntimeSnapshot: (): Omit => { - const { savedObjectId, ...rest } = getLatestState(); - return rest; + getSerializedStateByReference: (newId: string) => { + const currentState = getLatestState(); + currentState.savedObjectId = newId; + return attributeService.extractReferences(currentState); }, - // The functions below brings the HasLibraryTransforms compliance (old interface) - getByReferenceState: () => getLatestState(), - getByValueState: (): Omit => { - const { savedObjectId, ...rest } = getLatestState(); - return rest; + getSerializedStateByValue: () => { + const { savedObjectId, ...byValueRuntimeState } = getLatestState(); + return attributeService.extractReferences(byValueRuntimeState); }, }, serialize: () => { diff --git a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_integrations.ts b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_integrations.ts index c3501bdfcafb9..78c90ba8c793f 100644 --- a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_integrations.ts +++ b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_integrations.ts @@ -11,7 +11,7 @@ import { isOfAggregateQueryType, } from '@kbn/es-query'; import { noop } from 'lodash'; -import type { HasSerializableState } from '@kbn/presentation-containers'; +import type { HasSerializableState } from '@kbn/presentation-publishing'; import { emptySerializer, isTextBasedLanguage } from '../helper'; import type { GetStateType, LensEmbeddableStartServices } from '../types'; import type { IntegrationCallbacks } from '../types'; diff --git a/x-pack/platform/plugins/shared/lens/public/react_embeddable/mocks/index.tsx b/x-pack/platform/plugins/shared/lens/public/react_embeddable/mocks/index.tsx index 9f88036f1c657..33f78c4fd088e 100644 --- a/x-pack/platform/plugins/shared/lens/public/react_embeddable/mocks/index.tsx +++ b/x-pack/platform/plugins/shared/lens/public/react_embeddable/mocks/index.tsx @@ -70,14 +70,12 @@ function getDefaultLensApiMock() { supportedTriggers: jest.fn(() => []), canLinkToLibrary: jest.fn(async () => false), canUnlinkFromLibrary: jest.fn(async () => false), - unlinkFromLibrary: jest.fn(), checkForDuplicateTitle: jest.fn(), /** New embeddable api inherited methods */ resetUnsavedChanges: jest.fn(), serializeState: jest.fn(), snapshotRuntimeState: jest.fn(), saveToLibrary: jest.fn(async () => 'saved-id'), - getByValueRuntimeSnapshot: jest.fn(), onEdit: jest.fn(), isEditingEnabled: jest.fn(() => true), getTypeDisplayName: jest.fn(() => 'Lens'), @@ -90,14 +88,13 @@ function getDefaultLensApiMock() { }), unsavedChanges: new BehaviorSubject(undefined), dataViews: new BehaviorSubject(undefined), - libraryId$: new BehaviorSubject(undefined), savedObjectId: new BehaviorSubject(undefined), adapters$: new BehaviorSubject({}), updateAttributes: jest.fn(), updateSavedObjectId: jest.fn(), updateOverrides: jest.fn(), - getByReferenceState: jest.fn(), - getByValueState: jest.fn(), + getSerializedStateByReference: jest.fn(), + getSerializedStateByValue: jest.fn(), getTriggerCompatibleActions: jest.fn(), blockingError: new BehaviorSubject(undefined), panelDescription: new BehaviorSubject(undefined), diff --git a/x-pack/platform/plugins/shared/lens/public/react_embeddable/types.ts b/x-pack/platform/plugins/shared/lens/public/react_embeddable/types.ts index f322f7c2b7383..990407b62dfb8 100644 --- a/x-pack/platform/plugins/shared/lens/public/react_embeddable/types.ts +++ b/x-pack/platform/plugins/shared/lens/public/react_embeddable/types.ts @@ -15,7 +15,6 @@ import type { import type { Adapters, InspectorOptions } from '@kbn/inspector-plugin/public'; import type { HasEditCapabilities, - HasInPlaceLibraryTransforms, HasLibraryTransforms, HasParentApi, HasSupportedTriggers, @@ -398,8 +397,7 @@ export type LensApi = Simplify< HasSupportedTriggers & PublishesDisabledActionIds & // Offers methods to operate from/on the linked saved object - HasInPlaceLibraryTransforms & - HasLibraryTransforms & + HasLibraryTransforms & // Let the container know the view mode PublishesViewMode & // forward the parentApi, note that will be exposed only if it satisfy the PresentationContainer interface diff --git a/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts b/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts index f12c1d59f4955..9c92436beef32 100644 --- a/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts +++ b/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts @@ -5,8 +5,7 @@ * 2.0. */ -import { SerializedPanelState } from '@kbn/presentation-containers'; -import { HasLibraryTransforms } from '@kbn/presentation-publishing'; +import { HasLibraryTransforms, SerializedPanelState } from '@kbn/presentation-publishing'; import { getCore, getCoreOverlays } from '../kibana_services'; import type { MapAttributes } from '../../common/content_management'; import { SavedMap } from '../routes/map_page'; @@ -33,7 +32,7 @@ export function getByValueState(state: MapSerializedState | undefined, attribute export function initializeLibraryTransforms( savedMap: SavedMap, serializeState: () => SerializedPanelState -): HasLibraryTransforms { +): HasLibraryTransforms { return { canLinkToLibrary: async () => { const { maps } = getCore().application.capabilities; @@ -52,8 +51,10 @@ export function initializeLibraryTransforms( }); return savedObjectId; }, - getByReferenceState: (libraryId: string) => { - return getByReferenceState(serializeState().rawState, libraryId); + getSerializedStateByReference: (libraryId: string) => { + const { rawState: initialRawState, references } = serializeState(); + const rawState = getByReferenceState(initialRawState, libraryId); + return { rawState, references }; }, checkForDuplicateTitle: async ( newTitle: string, @@ -77,8 +78,10 @@ export function initializeLibraryTransforms( canUnlinkFromLibrary: async () => { return savedMap.getSavedObjectId() !== undefined; }, - getByValueState: () => { - return getByValueState(serializeState().rawState, savedMap.getAttributes()); + getSerializedStateByValue: () => { + const { rawState: initialRawState, references } = serializeState(); + const rawState = getByValueState(initialRawState, savedMap.getAttributes()); + return { rawState, references }; }, }; } diff --git a/x-pack/platform/plugins/shared/maps/public/react_embeddable/types.ts b/x-pack/platform/plugins/shared/maps/public/react_embeddable/types.ts index a61a7e1ce6a03..45ed4a07a7398 100644 --- a/x-pack/platform/plugins/shared/maps/public/react_embeddable/types.ts +++ b/x-pack/platform/plugins/shared/maps/public/react_embeddable/types.ts @@ -35,7 +35,7 @@ import { EventHandlers } from '../reducers/non_serializable_instances'; export type MapSerializedState = SerializedTitles & Partial & { - // by-valye + // by-value attributes?: MapAttributes; // by-reference savedObjectId?: string; @@ -61,7 +61,7 @@ export type MapApi = DefaultEmbeddableApi & PublishesDataLoading & PublishesDataViews & PublishesUnifiedSearch & - HasLibraryTransforms & { + HasLibraryTransforms & { getLayerList: () => ILayer[]; reload: () => void; setEventHandlers: (eventHandlers: EventHandlers) => void; diff --git a/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts b/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts index 9ef299ca1cf2d..0be6a6d48ea46 100644 --- a/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts +++ b/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts @@ -132,7 +132,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('dashboard panel - save to library', async () => { - await dashboardPanelActions.legacySaveToLibrary('', title); + await dashboardPanelActions.saveToLibrary('', title); await a11y.testAppSnapshot(); await testSubjects.click('saveCancelButton'); }); From b955f332ec8b98f1ad1bca08612814f5fee8ec2f Mon Sep 17 00:00:00 2001 From: Ryland Herrick Date: Tue, 21 Jan 2025 13:11:56 -0600 Subject: [PATCH 062/148] [Security Solution][Detection Engine] Only check read privileges of extant indices during rule execution (#177658) ## Summary This PR modifies the privilege-checking behavior during rule execution, restricting the indices against which we verify `read` access to only those that exist. ### Outstanding questions - [x] Are there any backwards-compatibility/semver concerns with changing this behavior? * We discussed in which situations a user might reasonably be using the existing behavior, and determined those to be borderline. If we end up receiving feedback to the contrary, we can add back the old behavior as configuration. - [x] Is the `IndexPatternsFetcher` an appropriate implementation to use for the existence checking? ### Steps to Review 1. Create a rule with a pattern including a non-existent index, e.g. `auditbeat-*,does-not-exist` 2. Enable the rule, and observe no warning about e.g. missing read privileges for `does-not-exist` 3. (optional) Remove read access to `auditbeat-*`, or extend the pattern to include an existing index that the rule author cannot read 4. (optional) Observe a warning for the non-readable index ### Checklist Delete any items that are not applicable to this PR. - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: Yara Tercero --- .../create_security_rule_type_wrapper.ts | 21 ++++-- .../query/create_query_alert_type.test.ts | 75 ++++++++++++++++++- .../check_privileges.ts | 49 +++++++++++- .../create_rules.ts | 2 +- 4 files changed, 134 insertions(+), 13 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts index aa63359b6ccb1..b82c1f942fafb 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts @@ -9,6 +9,7 @@ import { isEmpty, partition } from 'lodash'; import agent from 'elastic-apm-node'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { IndexPatternsFetcher } from '@kbn/data-plugin/server'; import { TIMESTAMP } from '@kbn/rule-data-utils'; import { createPersistenceRuleTypeWrapper } from '@kbn/rule-registry-plugin/server'; import { buildExceptionFilter } from '@kbn/lists-plugin/server/services/exception_lists'; @@ -257,16 +258,20 @@ export const createSecurityRuleTypeWrapper: CreateSecurityRuleTypeWrapper = let skipExecution: boolean = false; try { if (!isMachineLearningParams(params)) { - const privileges = await checkPrivilegesFromEsClient(esClient, inputIndex); + const indexPatterns = new IndexPatternsFetcher(scopedClusterClient.asInternalUser); + const existingIndices = await indexPatterns.getExistingIndices(inputIndex); - const readIndexWarningMessage = await hasReadIndexPrivileges({ - privileges, - ruleExecutionLogger, - uiSettingsClient, - }); + if (existingIndices.length > 0) { + const privileges = await checkPrivilegesFromEsClient(esClient, existingIndices); + const readIndexWarningMessage = await hasReadIndexPrivileges({ + privileges, + ruleExecutionLogger, + uiSettingsClient, + }); - if (readIndexWarningMessage != null) { - wrapperWarnings.push(readIndexWarningMessage); + if (readIndexWarningMessage != null) { + wrapperWarnings.push(readIndexWarningMessage); + } } const timestampFieldCaps = await withSecuritySpan('fieldCaps', () => diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts index 84f5817413a4a..3de8c6227f48b 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts @@ -21,6 +21,7 @@ import { QUERY_RULE_TYPE_ID } from '@kbn/securitysolution-rules'; import { hasTimestampFields } from '../utils/utils'; import { RuleExecutionStatusEnum } from '../../../../../common/api/detection_engine'; +const actualHasTimestampFields = jest.requireActual('../utils/utils').hasTimestampFields; jest.mock('../utils/utils', () => ({ ...jest.requireActual('../utils/utils'), getExceptions: () => [], @@ -114,7 +115,8 @@ describe('Custom Query Alerts', () => { expect(eventsTelemetry.queueTelemetryEvents).not.toHaveBeenCalled(); }); - it('sends an alert when events are found', async () => { + it('short-circuits and writes a warning if no indices are found', async () => { + (hasTimestampFields as jest.Mock).mockImplementationOnce(actualHasTimestampFields); // default behavior will produce a 'no indices found' result from this helper const queryAlertType = securityRuleTypeWrapper( createQueryAlertType({ eventsTelemetry, @@ -156,6 +158,77 @@ describe('Custom Query Alerts', () => { await executor({ params }); + expect((await ruleDataClient.getWriter()).bulk).not.toHaveBeenCalled(); + expect(eventsTelemetry.sendAsync).not.toHaveBeenCalled(); + expect(mockedStatusLogger.logStatusChange).toHaveBeenCalledWith( + expect.objectContaining({ + newStatus: RuleExecutionStatusEnum['partial failure'], + message: + 'This rule is attempting to query data from Elasticsearch indices listed in the "Index patterns" section of the rule definition, however no index matching: ["auditbeat-*","filebeat-*","packetbeat-*","winlogbeat-*"] was found. This warning will continue to appear until a matching index is created or this rule is disabled.', + }) + ); + }); + + it('sends an alert when events are found', async () => { + const queryAlertType = securityRuleTypeWrapper( + createQueryAlertType({ + eventsTelemetry, + licensing, + scheduleNotificationResponseActionsService: () => null, + experimentalFeatures: allowedExperimentalValues, + logger, + version: '1.0.0', + id: QUERY_RULE_TYPE_ID, + name: 'Custom Query Rule', + }) + ); + + alerting.registerType(queryAlertType); + + const params = getQueryRuleParams(); + + // mock field caps so as not to short-circuit on "no indices found" + services.scopedClusterClient.asInternalUser.fieldCaps.mockResolvedValueOnce({ + // @ts-expect-error our fieldCaps mock only seems to use the last value of the overloaded FieldCapsApi + body: { + indices: params.index!, + fields: { + _id: { + _id: { + type: '_id', + metadata_field: true, + searchable: true, + aggregatable: false, + }, + }, + }, + }, + }); + + services.scopedClusterClient.asCurrentUser.search.mockReturnValue( + elasticsearchClientMock.createSuccessTransportRequestPromise({ + hits: { + hits: [sampleDocNoSortId()], + sequences: [], + events: [], + total: { + relation: 'eq', + value: 1, + }, + }, + took: 0, + timed_out: false, + _shards: { + failed: 0, + skipped: 0, + successful: 1, + total: 1, + }, + }) + ); + + await executor({ params }); + expect((await ruleDataClient.getWriter()).bulk).toHaveBeenCalled(); expect(eventsTelemetry.sendAsync).toHaveBeenCalled(); }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/actions/trial_license_complete_tier/check_privileges.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/actions/trial_license_complete_tier/check_privileges.ts index c45bf13c66aad..251fc7c74d71f 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/actions/trial_license_complete_tier/check_privileges.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/actions/trial_license_complete_tier/check_privileges.ts @@ -52,15 +52,16 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllRules(supertest, log); }); - describe('should set status to partial failure when user has no access', () => { + context('when all indices exist but user cannot read host_alias', () => { const indexTestCases = [ ['host_alias'], ['host_alias', 'auditbeat-8.0.0'], ['host_alias*'], ['host_alias*', 'auditbeat-*'], ]; + indexTestCases.forEach((index) => { - it(`for KQL rule with index param: ${index}`, async () => { + it(`sets rule status to partial failure for KQL rule with index param: ${index}`, async () => { const rule = { ...getRuleForAlertTesting(index), query: 'process.executable: "/usr/bin/sudo"', @@ -90,13 +91,55 @@ export default ({ getService }: FtrProviderContext) => { await deleteUserAndRole(getService, ROLES.detections_admin); }); }); + }); + + context('when some specified indices do not exist, but user can read all others', () => {}); + + describe('when no specified indices exist', () => { + describe('for a query rule', () => { + it('sets rule status to partial failure and does not execute', async () => { + const rule = getRuleForAlertTesting(['non-existent-index']); + await createUserAndRole(getService, ROLES.detections_admin); + const { id } = await createRuleWithAuth(supertestWithoutAuth, rule, { + user: ROLES.detections_admin, + pass: 'changeme', + }); + + await waitForRulePartialFailure({ + supertest, + log, + id, + }); + const { body } = await supertest + .get(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .set('elastic-api-version', '2023-10-31') + .query({ id }) + .expect(200); + + // TODO: https://github.com/elastic/kibana/pull/121644 clean up, make type-safe + const lastExecution = body?.execution_summary?.last_execution; + + expect(lastExecution.message).to.contain( + 'This rule is attempting to query data from Elasticsearch indices listed in the "Index patterns" section of the rule definition, however no index matching: ["non-existent-index"] was found. This warning will continue to appear until a matching index is created or this rule is disabled.' + ); + + // no metrics == no work performed, presumably + expect(lastExecution.metrics).to.eql({}); + + await deleteUserAndRole(getService, ROLES.detections_admin); + }); + }); + }); + context('for threshold rules', () => { const thresholdIndexTestCases = [ ['host_alias', 'auditbeat-8.0.0'], ['host_alias*', 'auditbeat-*'], ]; + thresholdIndexTestCases.forEach((index) => { - it(`for threshold rule with index param: ${index}`, async () => { + it(`with index param: ${index}`, async () => { const rule: ThresholdRuleCreateProps = { ...getThresholdRuleForAlertTesting(index), threshold: { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_creation/trial_license_complete_tier/create_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_creation/trial_license_complete_tier/create_rules.ts index 10bde240ec36c..c09be3fe35016 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_creation/trial_license_complete_tier/create_rules.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_creation/trial_license_complete_tier/create_rules.ts @@ -162,7 +162,7 @@ export default ({ getService }: FtrProviderContext) => { const rule = await fetchRule(supertest, { id }); expect(rule?.execution_summary?.last_execution.status).toBe('partial failure'); - expect(rule?.execution_summary?.last_execution.message).toBe( + expect(rule?.execution_summary?.last_execution.message).toContain( 'This rule is attempting to query data from Elasticsearch indices listed in the "Index patterns" section of the rule definition, however no index matching: ["does-not-exist-*"] was found. This warning will continue to appear until a matching index is created or this rule is disabled.' ); }); From 4168e7d0505bc7c721341d27626f18e467b14d22 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 21 Jan 2025 19:12:35 +0000 Subject: [PATCH 063/148] chore(NA): update versions after v8.16.4 bump (#207412) This PR is a simple update of our versions file after the recent bumps. --- versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.json b/versions.json index 2ba465669fe9a..82313b80c94c3 100644 --- a/versions.json +++ b/versions.json @@ -19,7 +19,7 @@ "previousMajor": true }, { - "version": "8.16.3", + "version": "8.16.4", "branch": "8.16", "previousMajor": true }, From 64d61951a5522452ed0a89023304843a752f9dfa Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 21 Jan 2025 19:12:43 +0000 Subject: [PATCH 064/148] chore(NA): update versions after v8.17.2 bump (#207411) This PR is a simple update of our versions file after the recent bumps. --- versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.json b/versions.json index 82313b80c94c3..c7ab2c0e7050c 100644 --- a/versions.json +++ b/versions.json @@ -14,7 +14,7 @@ "previousMinor": true }, { - "version": "8.17.1", + "version": "8.17.2", "branch": "8.17", "previousMajor": true }, From 326a8d3f3b17d420f063cada2925828729186998 Mon Sep 17 00:00:00 2001 From: Philippe Oberti Date: Tue, 21 Jan 2025 20:28:15 +0100 Subject: [PATCH 065/148] [Security Solution][Alerts Detail] - fix missing investigated alert id when fetching all alerts for the details panel alerts tab (#206873) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This PR fixes an issue in the session view detailed panel alerts tab when used in the expandable flyout. As can seen in the screenshot below, when used in the alerts table, the detailed panel alerts tab renders the investigated alert if it is available. ![Screenshot 2025-01-15 at 3 39 19 PM](https://github.com/user-attachments/assets/56c52527-ec75-425b-8152-aa8f0581401b) But when rendered in the expandable flyout the investigated alert is not always rendered. ![Screenshot 2025-01-15 at 3 38 56 PM](https://github.com/user-attachments/assets/9e5256df-a022-48b9-a8ba-dbfb79a9e5ff) The issue came from a mistake done in [this previous PR](https://github.com/elastic/kibana/pull/200270) that aimed at extracting the session view detailed panel in the expandable flyout preview panel. Specifically [this line](https://github.com/elastic/kibana/pull/200270/files#diff-1f5a98dfb88e0067b1557ae15325887e48f561b35a0f99989360efea7f4aa6adR33) where I hardcoded the `investigatedAlertId` to `undefined`. I believe this happened during early stage of the development where I just wanted to get things to run. Then when I made the `investigatedAlertId` available via the session view panel context, I forgot to come back and replace the `undefined`... When looking at the network tab, I see 2 calls to the `internal/session_view/alerts` endpoint: - the first one made when opening the session view component the first time contains the `investigatedAlertId` value and returns more data ![Screenshot 2025-01-15 at 3 37 25 PM](https://github.com/user-attachments/assets/a4c67afd-0c8c-4048-83b7-f19c621ff73f) ![Screenshot 2025-01-15 at 3 37 36 PM](https://github.com/user-attachments/assets/3efcbbaf-ca92-4c96-bda3-d44153f5cbbd) - the same call made when navigating to the detailed panel alerts tab only has `undefined` and returns less data ![Screenshot 2025-01-15 at 3 37 29 PM](https://github.com/user-attachments/assets/74409e70-67cc-4c3c-be17-32bf5d6ae10f) ![Screenshot 2025-01-15 at 3 37 42 PM](https://github.com/user-attachments/assets/34e2d631-5be2-4ebe-92f5-e07139f03a83) ### How to test - make sure the `securitySolution:enableVisualizationsInFlyout` advanced settings is turned on Co-authored-by: Paulo Silva --- .../flyout/document_details/session_view/tabs/alerts_tab.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/session_view/tabs/alerts_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/session_view/tabs/alerts_tab.tsx index 7bb55d43c5a0b..484287fbab2db 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/session_view/tabs/alerts_tab.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/session_view/tabs/alerts_tab.tsx @@ -25,12 +25,13 @@ import { useSessionViewPanelContext } from '../context'; export const AlertsTab = memo(() => { const { eventId, indexName, investigatedAlertId, sessionEntityId, sessionStartTime, scopeId } = useSessionViewPanelContext(); + const { data: alertsData, fetchNextPage: fetchNextPageAlerts, isFetching: isFetchingAlerts, hasNextPage: hasNextPageAlerts, - } = useFetchSessionViewAlerts(sessionEntityId, sessionStartTime, undefined); + } = useFetchSessionViewAlerts(sessionEntityId, sessionStartTime, investigatedAlertId); // this code mimics what is being done in the x-pack/plugins/session_view/public/components/session_view/index.tsx file const alerts = useMemo(() => { From a7e46fe801a58181626117b64b3cd7dc6f413913 Mon Sep 17 00:00:00 2001 From: Krzysztof Kowalczyk Date: Tue, 21 Jan 2025 20:28:52 +0100 Subject: [PATCH 066/148] [Field Formatters] Update color formatter UI (#206883) ## Summary This PR updates color formatter UI to match design suggested in https://github.com/elastic/kibana/issues/123527#issuecomment-1067087684 I have few questions @elastic/kibana-data-discovery : 1. I left prepend for inputs to be the same as the column names in previous implementations - should they be shortened? `Pattern (regular expression)` -> `Pattern` `Range (min:max)` -> `Range` 2. The design from original comment mentions adding a help link - should this be added? If so, only for regex? Where would the link lead to? Closes: #202620 --- .../color/__snapshots__/color.test.tsx.snap | 403 ++++++------------ .../editors/color/color.tsx | 303 ++----------- .../editors/color/color_row.tsx | 205 +++++++++ .../common/constants/color_default.ts | 2 +- .../translations/translations/fr-FR.json | 9 +- .../translations/translations/ja-JP.json | 9 +- .../translations/translations/zh-CN.json | 9 +- 7 files changed, 376 insertions(+), 564 deletions(-) create mode 100644 src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color_row.tsx diff --git a/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap b/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap index c0caa836b45c7..fbd82abc27e88 100644 --- a/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap +++ b/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap @@ -2,78 +2,41 @@ exports[`ColorFormatEditor should render boolean type normally 1`] = ` - , - "render": [Function], - }, - Object { - "field": "text", - "name": , - "render": [Function], - }, - Object { - "field": "background", - "name": , - "render": [Function], - }, - Object { - "name": , - "render": [Function], - }, - Object { - "actions": Array [ - Object { - "available": [Function], - "color": "danger", - "data-test-subj": "colorEditorRemoveColor", - "description": "Delete color format", - "icon": "trash", - "name": "Delete", - "onClick": [Function], - "type": "icon", - }, - ], - "field": "actions", - "name": "Actions", - }, - ] - } - items={ - Array [ + + + +

+ +

+
+ ", "text": "#000000", - }, - ] - } - noItemsMessage={ - - } - tableLayout="fixed" - /> + } + } + fieldType="boolean" + index={0} + key="0" + onColorChange={[Function]} + onRemoveColor={[Function]} + showDeleteButton={false} + /> +
@@ -96,86 +59,58 @@ exports[`ColorFormatEditor should render boolean type normally 1`] = ` exports[`ColorFormatEditor should render multiple colors 1`] = ` - , - "render": [Function], - }, - Object { - "field": "text", - "name": , - "render": [Function], - }, - Object { - "field": "background", - "name": , - "render": [Function], - }, - Object { - "name": , - "render": [Function], - }, - Object { - "actions": Array [ - Object { - "available": [Function], - "color": "danger", - "data-test-subj": "colorEditorRemoveColor", - "description": "Delete color format", - "icon": "trash", - "name": "Delete", - "onClick": [Function], - "type": "icon", - }, - ], - "field": "actions", - "name": "Actions", - }, - ] - } - items={ - Array [ + + + +

+ +

+
+ ", "text": "#000000", - }, + } + } + fieldType="string" + index={0} + key="0" + onColorChange={[Function]} + onRemoveColor={[Function]} + showDeleteButton={true} + /> + ", "text": "#000000", - }, - ] - } - noItemsMessage={ - - } - tableLayout="fixed" - /> + } + } + fieldType="string" + index={1} + key="1" + onColorChange={[Function]} + onRemoveColor={[Function]} + showDeleteButton={true} + /> +
@@ -198,78 +133,41 @@ exports[`ColorFormatEditor should render multiple colors 1`] = ` exports[`ColorFormatEditor should render other type normally (range field) 1`] = ` - , - "render": [Function], - }, - Object { - "field": "text", - "name": , - "render": [Function], - }, - Object { - "field": "background", - "name": , - "render": [Function], - }, - Object { - "name": , - "render": [Function], - }, - Object { - "actions": Array [ - Object { - "available": [Function], - "color": "danger", - "data-test-subj": "colorEditorRemoveColor", - "description": "Delete color format", - "icon": "trash", - "name": "Delete", - "onClick": [Function], - "type": "icon", - }, - ], - "field": "actions", - "name": "Actions", - }, - ] - } - items={ - Array [ + + + +

+ +

+
+ ", "text": "#000000", - }, - ] - } - noItemsMessage={ - - } - tableLayout="fixed" - /> + } + } + fieldType="number" + index={0} + key="0" + onColorChange={[Function]} + onRemoveColor={[Function]} + showDeleteButton={false} + /> +
@@ -292,78 +190,41 @@ exports[`ColorFormatEditor should render other type normally (range field) 1`] = exports[`ColorFormatEditor should render string type normally (regex field) 1`] = ` - , - "render": [Function], - }, - Object { - "field": "text", - "name": , - "render": [Function], - }, - Object { - "field": "background", - "name": , - "render": [Function], - }, - Object { - "name": , - "render": [Function], - }, - Object { - "actions": Array [ - Object { - "available": [Function], - "color": "danger", - "data-test-subj": "colorEditorRemoveColor", - "description": "Delete color format", - "icon": "trash", - "name": "Delete", - "onClick": [Function], - "type": "icon", - }, - ], - "field": "actions", - "name": "Actions", - }, - ] - } - items={ - Array [ + + + +

+ +

+
+ ", "text": "#000000", - }, - ] - } - noItemsMessage={ - - } - tableLayout="fixed" - /> + } + } + fieldType="string" + index={0} + key="0" + onColorChange={[Function]} + onRemoveColor={[Function]} + showDeleteButton={false} + /> +
diff --git a/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx b/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx index 85343826a58f3..5ecf50e7a6f74 100644 --- a/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx +++ b/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx @@ -7,38 +7,18 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import React, { Fragment } from 'react'; +import React from 'react'; -import { - EuiBasicTable, - EuiButton, - EuiColorPicker, - EuiIcon, - EuiFieldText, - EuiSelect, - EuiSpacer, -} from '@elastic/eui'; +import { EuiButton, EuiFlexGroup, EuiSpacer, EuiTitle } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { DEFAULT_CONVERTER_COLOR } from '@kbn/field-formats-plugin/common'; +import { Color, ColorRow } from './color_row'; import { DefaultFormatEditor } from '../default/default'; import { formatId } from './constants'; import { FormatEditorProps } from '../types'; -interface Color { - range?: string; - regex?: string; - boolean?: string; - text: string; - background: string; -} - -interface IndexedColor extends Color { - index: number; -} - export interface ColorFormatEditorFormatParams { colors: Color[]; } @@ -78,263 +58,44 @@ export class ColorFormatEditor extends DefaultFormatEditor { - if (fieldType === 'boolean') - return { - field: 'boolean', - name: ( - - ), - render: (value: string, item: IndexedColor) => { - return ( - { - this.onColorChange( - { - boolean: e.target.value, - }, - item.index - ); - }} - /> - ); - }, - }; - if (fieldType === 'string') - return { - field: 'regex', - name: ( - - ), - render: (value: string, item: IndexedColor) => { - return ( - { - this.onColorChange( - { - regex: e.target.value, - }, - item.index - ); - }} - /> - ); - }, - }; - return { - field: 'range', - name: ( - - ), - render: (value: string, item: IndexedColor) => { - return ( - { - this.onColorChange( - { - range: e.target.value, - }, - item.index - ); - }} - /> - ); - }, - }; - }; - render() { const { formatParams, fieldType } = this.props; - const items = - (formatParams.colors && - formatParams.colors.length && - formatParams.colors.map((color, index) => { - return { - ...color, - index, - }; - })) || - []; - - const columns = [ - this.getFirstColumn(fieldType), - { - field: 'text', - name: ( - - ), - render: (color: string, item: IndexedColor) => { - return ( - { - this.onColorChange( - { - text: newColor, - }, - item.index - ); - }} - button={ - {}} - aria-label={i18n.translate( - 'indexPatternFieldEditor.color.letteringButtonAriaLabel', - { - defaultMessage: 'Select a text color for item {index}', - values: { - index: item.index, - }, - } - )} - > - - - } - secondaryInputDisplay="bottom" - /> - ); - }, - }, - { - field: 'background', - name: ( - - ), - render: (color: string, item: IndexedColor) => { - return ( - { - this.onColorChange( - { - background: newColor, - }, - item.index - ); - }} - button={ - {}} - aria-label={i18n.translate( - 'indexPatternFieldEditor.color.letteringButtonAriaLabel', - { - defaultMessage: 'Select a background color for item {index}', - values: { - index: item.index, - }, - } - )} - > - - - } - secondaryInputDisplay="bottom" - /> - ); - }, - }, - { - name: ( - - ), - render: (item: IndexedColor) => { - return ( -
- 123456 -
- ); - }, - }, - { - field: 'actions', - name: i18n.translate('indexPatternFieldEditor.color.actions', { - defaultMessage: 'Actions', - }), - actions: [ - { - name: i18n.translate('indexPatternFieldEditor.color.deleteAria', { - defaultMessage: 'Delete', - }), - description: i18n.translate('indexPatternFieldEditor.color.deleteTitle', { - defaultMessage: 'Delete color format', - }), - onClick: (item: IndexedColor) => { - this.removeColor(item.index); - }, - type: 'icon', - icon: 'trash', - color: 'danger', - available: () => items.length > 1, - 'data-test-subj': 'colorEditorRemoveColor', - }, - ], - }, - ]; + const colors = formatParams?.colors; return ( - - + <> + + + +

+ +

+
+ {colors?.length > 0 && + colors.map((color, index) => { + return ( + 1} + /> + ); + })} +
-
+ ); } } diff --git a/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color_row.tsx b/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color_row.tsx new file mode 100644 index 0000000000000..2cf0260c05cdf --- /dev/null +++ b/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/color/color_row.tsx @@ -0,0 +1,205 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import React from 'react'; + +import { + EuiButton, + EuiButtonIcon, + EuiColorPicker, + EuiFieldText, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiSelect, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +export interface Color { + range?: string; + regex?: string; + boolean?: string; + text: string; + background: string; +} + +interface ColorRowProps { + color: Color; + index: number; + fieldType: string; + showDeleteButton: boolean; + onColorChange: (newColorParams: Partial, index: number) => void; + onRemoveColor: (index: number) => void; +} + +export const ColorRow = ({ + color, + index, + fieldType, + showDeleteButton, + onColorChange, + onRemoveColor, +}: ColorRowProps) => { + const { range, regex, boolean, text, background } = color; + + const getInputByFieldType = () => { + if (fieldType === 'boolean') + return ( + { + onColorChange( + { + boolean: e.target.value, + }, + index + ); + }} + /> + ); + if (fieldType === 'string') + return ( + { + onColorChange( + { + regex: e.target.value, + }, + index + ); + }} + /> + ); + return ( + { + onColorChange( + { + range: e.target.value, + }, + index + ); + }} + /> + ); + }; + + return ( + + {getInputByFieldType()} + + { + onColorChange( + { + text: newColor, + }, + index + ); + }} + button={ + {}} + aria-label={i18n.translate('indexPatternFieldEditor.color.letteringButtonAriaLabel', { + defaultMessage: 'Select a text color for item {index}', + values: { + index, + }, + })} + > + + + } + secondaryInputDisplay="bottom" + /> + + + { + onColorChange( + { + background: newColor, + }, + index + ); + }} + button={ + {}} + aria-label={i18n.translate('indexPatternFieldEditor.color.letteringButtonAriaLabel', { + defaultMessage: 'Select a background color for item {index}', + values: { + index, + }, + })} + > + + + } + secondaryInputDisplay="bottom" + /> + + {showDeleteButton && ( + + { + onRemoveColor(index); + }} + aria-label={i18n.translate('indexPatternFieldEditor.color.deleteTitle', { + defaultMessage: 'Delete color format', + })} + data-test-subj="colorEditorRemoveColor" + /> + + )} + + ); +}; diff --git a/src/platform/plugins/shared/field_formats/common/constants/color_default.ts b/src/platform/plugins/shared/field_formats/common/constants/color_default.ts index 8133d4611d1f8..29ba2e7d53084 100644 --- a/src/platform/plugins/shared/field_formats/common/constants/color_default.ts +++ b/src/platform/plugins/shared/field_formats/common/constants/color_default.ts @@ -8,7 +8,7 @@ */ export const DEFAULT_CONVERTER_COLOR = { - range: `${Number.NEGATIVE_INFINITY}:${Number.POSITIVE_INFINITY}`, + range: `min:max`, regex: '', text: '#000000', background: '#ffffff', diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index fe28000e5a237..3893fdc0986fc 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -4732,15 +4732,10 @@ "indexPatternFieldEditor.cancelField.confirmationModal.cancelButtonLabel": "Annuler", "indexPatternFieldEditor.cancelField.confirmationModal.description": "Les modifications apportées à votre champ seront ignorées. Voulez-vous vraiment continuer ?", "indexPatternFieldEditor.cancelField.confirmationModal.title": "Ignorer les modifications", - "indexPatternFieldEditor.color.actions": "Actions", "indexPatternFieldEditor.color.addColorButton": "Ajouter une couleur", - "indexPatternFieldEditor.color.backgroundLabel": "Couleur d'arrière-plan", - "indexPatternFieldEditor.color.deleteAria": "Supprimer", "indexPatternFieldEditor.color.deleteTitle": "Supprimer le format de couleur", - "indexPatternFieldEditor.color.exampleLabel": "Exemple", - "indexPatternFieldEditor.color.patternLabel": "Modèle (expression régulière)", - "indexPatternFieldEditor.color.rangeLabel": "Plage (min:max)", - "indexPatternFieldEditor.color.textColorLabel": "Couleur du texte", + "indexPatternFieldEditor.color.patternLabel": "Modèle", + "indexPatternFieldEditor.color.rangeLabel": "Plage", "indexPatternFieldEditor.createField.flyoutAriaLabel": "Créer un champ", "indexPatternFieldEditor.date.documentationLabel": "Documentation", "indexPatternFieldEditor.date.momentLabel": "Modèle de format Moment.js (par défaut : {defaultPattern})", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index 368abc9440caa..bf5f929868d4c 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -4727,15 +4727,10 @@ "indexPatternFieldEditor.cancelField.confirmationModal.cancelButtonLabel": "キャンセル", "indexPatternFieldEditor.cancelField.confirmationModal.description": "フィールドの変更は破棄されます。続行しますか?", "indexPatternFieldEditor.cancelField.confirmationModal.title": "変更を破棄", - "indexPatternFieldEditor.color.actions": "アクション", "indexPatternFieldEditor.color.addColorButton": "色を追加", - "indexPatternFieldEditor.color.backgroundLabel": "背景色", - "indexPatternFieldEditor.color.deleteAria": "削除", "indexPatternFieldEditor.color.deleteTitle": "色のフォーマットを削除", - "indexPatternFieldEditor.color.exampleLabel": "例", - "indexPatternFieldEditor.color.patternLabel": "パターン(正規表現)", - "indexPatternFieldEditor.color.rangeLabel": "範囲(min:max)", - "indexPatternFieldEditor.color.textColorLabel": "文字の色", + "indexPatternFieldEditor.color.patternLabel": "パターン", + "indexPatternFieldEditor.color.rangeLabel": "範囲", "indexPatternFieldEditor.createField.flyoutAriaLabel": "フィールドを作成", "indexPatternFieldEditor.date.documentationLabel": "ドキュメント", "indexPatternFieldEditor.date.momentLabel": "Moment.jsのフォーマットパターン(デフォルト:{defaultPattern})", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index 176c3b4604a12..df957cdd32c69 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -4707,15 +4707,10 @@ "indexPatternFieldEditor.cancelField.confirmationModal.cancelButtonLabel": "取消", "indexPatternFieldEditor.cancelField.confirmationModal.description": "将会丢弃对您的字段所做的更改,是否确定要继续?", "indexPatternFieldEditor.cancelField.confirmationModal.title": "放弃更改", - "indexPatternFieldEditor.color.actions": "操作", "indexPatternFieldEditor.color.addColorButton": "添加颜色", - "indexPatternFieldEditor.color.backgroundLabel": "背景色", - "indexPatternFieldEditor.color.deleteAria": "删除", "indexPatternFieldEditor.color.deleteTitle": "删除颜色格式", - "indexPatternFieldEditor.color.exampleLabel": "示例", - "indexPatternFieldEditor.color.patternLabel": "模式(正则表达式)", - "indexPatternFieldEditor.color.rangeLabel": "范围(最小值:最大值)", - "indexPatternFieldEditor.color.textColorLabel": "文本颜色", + "indexPatternFieldEditor.color.patternLabel": "模式", + "indexPatternFieldEditor.color.rangeLabel": "范围", "indexPatternFieldEditor.createField.flyoutAriaLabel": "创建字段", "indexPatternFieldEditor.date.documentationLabel": "文档", "indexPatternFieldEditor.date.momentLabel": "Moment.js 格式模式(默认值:{defaultPattern})", From 58113622abfd1483e09ef745003965c80d0a8adc Mon Sep 17 00:00:00 2001 From: Marshall Main <55718608+marshallmain@users.noreply.github.com> Date: Tue, 21 Jan 2025 14:35:25 -0500 Subject: [PATCH 067/148] [Security Solution] Fix reason building logic for EQL sequences with fields key (#206489) ## Summary Fixes https://github.com/elastic/kibana/issues/206456 The cast to `SignalSourceHit` in `build_alert_group_from_sequence` was incorrect, so instead of passing the merged document to `buildReasonMessage` as a wrapped hit we were passing the raw merged document. For most source docs this worked because the build reason logic would check the input for `_source` and `fields` and treat the input as a raw doc if it didn't find either key. However, if the input is a raw document with `fields` or `_source` as keys (i.e. if `fields` or `_source` are actual fields in the source data), then the build reason logic incorrectly uses that source data field as the raw document and looks for ECS fields as sub-fields. Effectively if the source data has a `fields` key then for EQL sequences the reason building logic is looking for e.g. `fields.destination.ip` in source data instead of `destination.ip` and isn't finding it. This PR fixes the issue by wrapping the raw document correctly in the EQL sequence alert building logic and removes the fallback in `getFieldsFromDoc` to help prevent this from reoccurring. --- .../rule_types/eql/build_alert_group_from_sequence.test.ts | 6 ++++-- .../rule_types/eql/build_alert_group_from_sequence.ts | 2 +- .../detection_engine/rule_types/utils/reason_formatters.ts | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.test.ts index a2b0d4f21fc78..ba96d654a3ef6 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ALERT_RULE_CONSUMER, ALERT_URL } from '@kbn/rule-data-utils'; +import { ALERT_REASON, ALERT_RULE_CONSUMER, ALERT_URL } from '@kbn/rule-data-utils'; import { sampleDocNoSortId, sampleRuleGuid } from '../__mocks__/es_results'; import { @@ -23,6 +23,7 @@ import { ALERT_BUILDING_BLOCK_TYPE, ALERT_GROUP_ID, } from '../../../../../common/field_maps/field_names'; +import { buildReasonMessageForEqlAlert } from '../utils/reason_formatters'; const SPACE_ID = 'space'; const PUBLIC_BASE_URL = 'http://testkibanabaseurl.com'; @@ -49,7 +50,7 @@ describe('buildAlert', () => { completeRule, mergeStrategy: 'allFields', spaceId: SPACE_ID, - buildReasonMessage: jest.fn(), + buildReasonMessage: buildReasonMessageForEqlAlert, indicesToQuery: completeRule.ruleParams.index as string[], alertTimestampOverride: undefined, publicBaseUrl: PUBLIC_BASE_URL, @@ -129,6 +130,7 @@ describe('buildAlert', () => { [ALERT_DEPTH]: 2, [ALERT_BUILDING_BLOCK_TYPE]: 'default', [ALERT_RULE_CONSUMER]: SERVER_APP_ID, + [ALERT_REASON]: 'event with source 127.0.0.1 created high alert rule-name.', }), }) ); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts index 2e0948b1af4d9..17daef7ac7969 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts @@ -208,7 +208,7 @@ export const buildAlertRoot = ({ const reason = buildReasonMessage({ name: completeRule.ruleConfig.name, severity: completeRule.ruleParams.severity, - mergedDoc: mergedAlerts as SignalSourceHit, + mergedDoc: { _source: mergedAlerts } as SignalSourceHit, }); const doc = buildAlertFields({ docs: wrappedBuildingBlocks, diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatters.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatters.ts index d414f2e30ffed..b1a49a817ab88 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatters.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatters.ts @@ -35,7 +35,7 @@ interface ReasonFields { } const getFieldsFromDoc = (mergedDoc: SignalSourceHit) => { const reasonFields: ReasonFields = {}; - const docToUse = mergedDoc?.fields || mergedDoc?._source || mergedDoc; + const docToUse = mergedDoc?.fields || mergedDoc?._source; reasonFields.destinationAddress = getOr(null, 'destination.ip', docToUse); reasonFields.destinationPort = getOr(null, 'destination.port', docToUse); From 5ee429799449f1ce2874392bbbd0e752f42c4d50 Mon Sep 17 00:00:00 2001 From: Hannah Mudge Date: Tue, 21 Jan 2025 12:52:39 -0700 Subject: [PATCH 068/148] [Dashboard][`kbn-grid-layout`] Update styles (#206503) Closes https://github.com/elastic/kibana/issues/204060 ## Summary This PR updates the styles used for `kbn-grid-layout` in Dashboard as shown below. - **Dragging** | Before | After | |--------|--------| | ![image](https://github.com/user-attachments/assets/13161969-3eaf-4dce-bcf4-7b4850215816) | ![image](https://github.com/user-attachments/assets/d76dc678-6277-4819-b554-f6b66b200c0c) | | ![image](https://github.com/user-attachments/assets/84d8d489-2240-4f10-809f-0aa30415f408) | ![image](https://github.com/user-attachments/assets/573d71ad-71fb-47ab-a34e-66b845ecff67) | - **Resizing** | Before | After | |--------|--------| | ![image](https://github.com/user-attachments/assets/79dfebd0-538b-4193-9b66-30961e9c7b21) | ![image](https://github.com/user-attachments/assets/bc66ed35-83c4-4291-8cec-6ae8dda8f006) | | ![image](https://github.com/user-attachments/assets/d3fb5643-a77f-416f-9fc3-53af6225782a) | ![image](https://github.com/user-attachments/assets/df2c65d5-af52-4848-b16c-f9f85abd5d9a) | As part of this work, I moved all aesthetic style logic out of the `kbn-grid-layout` package and added support for Emotion to the `GridLayout` component instead - this means that the consumer is responsible for applying styles based on given classes, and `kbn-grid-layout` is now less opinionated. The only styling kept in the `kbn-grid-layout` package are those that handle layout-engine specific functionality (positioning of panels, hiding edit actions in view mode, etc). In addition, I also updated the styles used in the grid example app and added settings for dynamically changing the grid gutter size + row height: https://github.com/user-attachments/assets/c2f06db1-7041-412e-b546-86b102cc0770 ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Identify risks This PR has minimal risk, since it is primarily style changes. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- examples/grid_example/public/app.tsx | 170 ++++++++++++++---- .../kbn-grid-layout/grid/drag_preview.tsx | 6 +- .../grid/grid_height_smoother.tsx | 33 +--- .../kbn-grid-layout/grid/grid_layout.tsx | 10 +- .../grid/grid_panel/drag_handle.tsx | 18 +- .../grid/grid_panel/grid_panel.tsx | 13 +- .../grid/grid_panel/resize_handle.tsx | 18 +- .../grid/grid_row/grid_row.tsx | 55 +++--- .../grid/use_grid_layout_state.ts | 22 ++- .../component/grid/_dashboard_grid.scss | 6 +- .../component/grid/dashboard_grid.tsx | 15 +- .../component/grid/use_layout_styles.tsx | 94 ++++++++++ 12 files changed, 309 insertions(+), 151 deletions(-) create mode 100644 src/platform/plugins/shared/dashboard/public/dashboard_container/component/grid/use_layout_styles.tsx diff --git a/examples/grid_example/public/app.tsx b/examples/grid_example/public/app.tsx index 635d116f2249a..21f05d613ad1a 100644 --- a/examples/grid_example/public/app.tsx +++ b/examples/grid_example/public/app.tsx @@ -8,7 +8,7 @@ */ import deepEqual from 'fast-deep-equal'; -import React, { useCallback, useEffect, useRef, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import ReactDOM from 'react-dom'; import { combineLatest, debounceTime } from 'rxjs'; @@ -20,9 +20,15 @@ import { EuiCallOut, EuiFlexGroup, EuiFlexItem, + EuiFormRow, EuiPageTemplate, + EuiPopover, + EuiRange, EuiSpacer, + transparentize, + useEuiTheme, } from '@elastic/eui'; +import { css } from '@emotion/react'; import { AppMountParameters } from '@kbn/core-application-browser'; import { CoreStart } from '@kbn/core-lifecycle-browser'; import { AddEmbeddableButton } from '@kbn/embeddable-examples-plugin/public'; @@ -53,11 +59,16 @@ export const GridExample = ({ coreStart: CoreStart; uiActions: UiActionsStart; }) => { + const { euiTheme } = useEuiTheme(); + const savedState = useRef(getSerializedDashboardState()); const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false); const [currentLayout, setCurrentLayout] = useState( dashboardInputToGridLayout(savedState.current) ); + const [isSettingsPopoverOpen, setIsSettingsPopoverOpen] = useState(false); + const [gutterSize, setGutterSize] = useState(DASHBOARD_MARGIN_SIZE); + const [rowHeight, setRowHeight] = useState(DASHBOARD_GRID_HEIGHT); const mockDashboardApi = useMockDashboardApi({ savedState: savedState.current }); const [viewMode, expandedPanelId] = useBatchedPublishingSubjects( @@ -111,6 +122,41 @@ export const GridExample = ({ [mockDashboardApi] ); + const customLayoutCss = useMemo(() => { + const gridColor = transparentize(euiTheme.colors.backgroundFilledAccentSecondary, 0.2); + return css` + .kbnGridRow--targeted { + background-position: top calc((var(--kbnGridGutterSize) / 2) * -1px) left + calc((var(--kbnGridGutterSize) / 2) * -1px); + background-size: calc((var(--kbnGridColumnWidth) + var(--kbnGridGutterSize)) * 1px) + calc((var(--kbnGridRowHeight) + var(--kbnGridGutterSize)) * 1px); + background-image: linear-gradient(to right, ${gridColor} 1px, transparent 1px), + linear-gradient(to bottom, ${gridColor} 1px, transparent 1px); + background-color: ${transparentize(euiTheme.colors.backgroundFilledAccentSecondary, 0.1)}; + } + + .kbnGridPanel--dragPreview { + border-radius: ${euiTheme.border.radius}; + background-color: ${transparentize(euiTheme.colors.backgroundFilledAccentSecondary, 0.2)}; + transition: opacity 100ms linear; + } + + .kbnGridPanel--resizeHandle { + opacity: 0; + transition: opacity 0.2s, border 0.2s; + border-radius: 7px 0 7px 0; + border-bottom: 2px solid ${euiTheme.colors.accentSecondary}; + border-right: 2px solid ${euiTheme.colors.accentSecondary}; + &:hover, + &:focus { + outline-style: none !important; + opacity: 1; + background-color: ${transparentize(euiTheme.colors.accentSecondary, 0.05)}; + } + } + `; + }, [euiTheme]); + return ( @@ -148,38 +194,96 @@ export const GridExample = ({ - + + + {' '} + + + setIsSettingsPopoverOpen(!isSettingsPopoverOpen)} + > + {i18n.translate('examples.gridExample.settingsPopover.title', { + defaultMessage: 'Layout settings', + })} + + } + isOpen={isSettingsPopoverOpen} + closePopover={() => setIsSettingsPopoverOpen(false)} + > + <> + + { + mockDashboardApi.viewMode.next(id); + }} + /> + + + setGutterSize(parseInt(e.currentTarget.value, 10))} + showLabels + showValue + /> + + + setRowHeight(parseInt(e.currentTarget.value, 10))} + showLabels + showValue + /> + + + + + - - { - mockDashboardApi.viewMode.next(id); - }} - /> - {hasUnsavedChanges && ( @@ -223,13 +327,14 @@ export const GridExample = ({ + diff --git a/src/platform/packages/private/kbn-grid-layout/grid/drag_preview.tsx b/src/platform/packages/private/kbn-grid-layout/grid/drag_preview.tsx index 83823bf80d64f..89e564636bc0d 100644 --- a/src/platform/packages/private/kbn-grid-layout/grid/drag_preview.tsx +++ b/src/platform/packages/private/kbn-grid-layout/grid/drag_preview.tsx @@ -10,7 +10,6 @@ import React, { useEffect, useRef } from 'react'; import { combineLatest, skip } from 'rxjs'; -import { transparentize, useEuiTheme } from '@elastic/eui'; import { css } from '@emotion/react'; import { GridLayoutStateManager } from './types'; @@ -23,7 +22,6 @@ export const DragPreview = ({ gridLayoutStateManager: GridLayoutStateManager; }) => { const dragPreviewRef = useRef(null); - const { euiTheme } = useEuiTheme(); useEffect( () => { @@ -59,12 +57,10 @@ export const DragPreview = ({ return (
); diff --git a/src/platform/packages/private/kbn-grid-layout/grid/grid_height_smoother.tsx b/src/platform/packages/private/kbn-grid-layout/grid/grid_height_smoother.tsx index 1f3ebadbc26f1..8a95ea513e210 100644 --- a/src/platform/packages/private/kbn-grid-layout/grid/grid_height_smoother.tsx +++ b/src/platform/packages/private/kbn-grid-layout/grid/grid_height_smoother.tsx @@ -9,7 +9,7 @@ import { css } from '@emotion/react'; import React, { PropsWithChildren, useEffect, useRef } from 'react'; -import { combineLatest, distinctUntilChanged, map } from 'rxjs'; +import { combineLatest } from 'rxjs'; import { GridLayoutStateManager } from './types'; export const GridHeightSmoother = ({ @@ -32,35 +32,19 @@ export const GridHeightSmoother = ({ if (!smoothHeightRef.current || gridLayoutStateManager.expandedPanelId$.getValue()) return; if (!interactionEvent) { - smoothHeightRef.current.style.height = `${dimensions.height}px`; + smoothHeightRef.current.style.minHeight = `${dimensions.height}px`; smoothHeightRef.current.style.userSelect = 'auto'; return; } - smoothHeightRef.current.style.height = `${Math.max( - dimensions.height ?? 0, + smoothHeightRef.current.style.minHeight = `${ smoothHeightRef.current.getBoundingClientRect().height - )}px`; + }px`; smoothHeightRef.current.style.userSelect = 'none'; }); - /** - * This subscription sets global CSS variables that can be used by all components contained within - * this wrapper; note that this is **currently** only used for the gutter size, but things like column - * count could be added here once we add the ability to change these values - */ - const globalCssVariableSubscription = gridLayoutStateManager.runtimeSettings$ - .pipe( - map(({ gutterSize }) => gutterSize), - distinctUntilChanged() - ) - .subscribe((gutterSize) => { - smoothHeightRef.current?.style.setProperty('--kbnGridGutterSize', `${gutterSize}`); - }); - return () => { interactionStyleSubscription.unsubscribe(); - globalCssVariableSubscription.unsubscribe(); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); @@ -70,17 +54,14 @@ export const GridHeightSmoother = ({ ref={smoothHeightRef} className={'kbnGridWrapper'} css={css` - margin: calc(var(--kbnGridGutterSize) * 1px); + height: 100%; overflow-anchor: none; - transition: height 500ms linear; + transition: min-height 500ms linear; &:has(.kbnGridPanel--expanded) { - height: 100% !important; + min-height: 100% !important; position: relative; transition: none; - // switch to padding so that the panel does not extend the height of the parent - margin: 0px; - padding: calc(var(--kbnGridGutterSize) * 1px); } `} > diff --git a/src/platform/packages/private/kbn-grid-layout/grid/grid_layout.tsx b/src/platform/packages/private/kbn-grid-layout/grid/grid_layout.tsx index 4aa93710f4a2f..4e978a6c92487 100644 --- a/src/platform/packages/private/kbn-grid-layout/grid/grid_layout.tsx +++ b/src/platform/packages/private/kbn-grid-layout/grid/grid_layout.tsx @@ -7,6 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import classNames from 'classnames'; import { cloneDeep } from 'lodash'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import { combineLatest, distinctUntilChanged, filter, map, pairwise, skip } from 'rxjs'; @@ -31,6 +32,7 @@ export interface GridLayoutProps { onLayoutChange: (newLayout: GridLayoutData) => void; expandedPanelId?: string; accessMode?: GridAccessMode; + className?: string; // this makes it so that custom CSS can be passed via Emotion } export const GridLayout = ({ @@ -40,15 +42,17 @@ export const GridLayout = ({ onLayoutChange, expandedPanelId, accessMode = 'EDIT', + className, }: GridLayoutProps) => { + const layoutRef = useRef(null); const { gridLayoutStateManager, setDimensionsRef } = useGridLayoutState({ layout, + layoutRef, gridSettings, expandedPanelId, accessMode, }); useGridLayoutEvents({ gridLayoutStateManager }); - const layoutRef = useRef(null); const [rowCount, setRowCount] = useState( gridLayoutStateManager.gridLayout$.getValue().length @@ -173,8 +177,10 @@ export const GridLayout = ({ layoutRef.current = divElement; setDimensionsRef(divElement); }} - className="kbnGrid" + className={classNames('kbnGrid', className)} css={css` + padding: calc(var(--kbnGridGutterSize) * 1px); + &:has(.kbnGridPanel--expanded) { ${expandedPanelStyles} } diff --git a/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/drag_handle.tsx b/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/drag_handle.tsx index 63e909d5cfb8e..f14a56e184617 100644 --- a/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/drag_handle.tsx +++ b/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/drag_handle.tsx @@ -19,7 +19,6 @@ import { UserMouseEvent, UserTouchEvent, } from '../types'; -import { isMouseEvent, isTouchEvent } from '../utils/sensors'; export interface DragHandleApi { setDragHandles: (refs: Array) => void; @@ -47,26 +46,13 @@ export const DragHandle = React.forwardRef< */ const onDragStart = useCallback( (e: UserMouseEvent | UserTouchEvent) => { - // ignore when not in edit mode - if (gridLayoutStateManager.accessMode$.getValue() !== 'EDIT') return; - - // ignore anything but left clicks for mouse events - if (isMouseEvent(e) && e.button !== 0) { - return; - } - // ignore multi-touch events for touch events - if (isTouchEvent(e) && e.touches.length > 1) { - return; - } - e.stopPropagation(); interactionStart('drag', e); }, - [interactionStart, gridLayoutStateManager.accessMode$] + [interactionStart] ); const onDragEnd = useCallback( (e: UserTouchEvent | UserMouseEvent) => { - e.stopPropagation(); interactionStart('drop', e); }, [interactionStart] @@ -118,7 +104,7 @@ export const DragHandle = React.forwardRef< aria-label={i18n.translate('kbnGridLayout.dragHandle.ariaLabel', { defaultMessage: 'Drag to move', })} - className="kbnGridPanel__dragHandle" + className="kbnGridPanel--dragHandle" css={css` opacity: 0; display: flex; diff --git a/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/grid_panel.tsx b/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/grid_panel.tsx index a89b2230d0f13..b91f685007ddb 100644 --- a/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/grid_panel.tsx +++ b/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/grid_panel.tsx @@ -68,13 +68,12 @@ export const GridPanel = forwardRef( /** Set initial styles based on state at mount to prevent styles from "blipping" */ const initialStyles = useMemo(() => { const initialPanel = gridLayoutStateManager.gridLayout$.getValue()[rowIndex].panels[panelId]; - const { rowHeight } = gridLayoutStateManager.runtimeSettings$.getValue(); return css` position: relative; height: calc( 1px * ( - ${initialPanel.height} * (${rowHeight} + var(--kbnGridGutterSize)) - + ${initialPanel.height} * (var(--kbnGridRowHeight) + var(--kbnGridGutterSize)) - var(--kbnGridGutterSize) ) ); @@ -91,10 +90,9 @@ export const GridPanel = forwardRef( const activePanelStyleSubscription = combineLatest([ gridLayoutStateManager.activePanel$, gridLayoutStateManager.gridLayout$, - gridLayoutStateManager.runtimeSettings$, ]) .pipe(skip(1)) // skip the first emit because the `initialStyles` will take care of it - .subscribe(([activePanel, gridLayout, runtimeSettings]) => { + .subscribe(([activePanel, gridLayout]) => { const ref = gridLayoutStateManager.panelRefs.current[rowIndex][panelId]; const panel = gridLayout[rowIndex].panels[panelId]; if (!ref || !panel) return; @@ -102,8 +100,11 @@ export const GridPanel = forwardRef( const currentInteractionEvent = gridLayoutStateManager.interactionEvent$.getValue(); if (panelId === activePanel?.id) { + ref.classList.add('kbnGridPanel--active'); + // if the current panel is active, give it fixed positioning depending on the interaction event const { position: draggingPosition } = activePanel; + const runtimeSettings = gridLayoutStateManager.runtimeSettings$.getValue(); ref.style.zIndex = `${euiTheme.levels.modal}`; if (currentInteractionEvent?.type === 'resize') { @@ -135,7 +136,7 @@ export const GridPanel = forwardRef( ref.style.gridArea = `auto`; // shortcut to set all grid styles to `auto` } } else { - const { rowHeight } = gridLayoutStateManager.runtimeSettings$.getValue(); + ref.classList.remove('kbnGridPanel--active'); ref.style.zIndex = `auto`; @@ -145,7 +146,7 @@ export const GridPanel = forwardRef( ref.style.top = ``; ref.style.width = ``; // setting the height is necessary for mobile mode - ref.style.height = `calc(1px * (${panel.height} * (${rowHeight} + var(--kbnGridGutterSize)) - var(--kbnGridGutterSize)))`; + ref.style.height = `calc(1px * (${panel.height} * (var(--kbnGridRowHeight) + var(--kbnGridGutterSize)) - var(--kbnGridGutterSize)))`; // and render the panel locked to the grid ref.style.gridColumnStart = `${panel.column + 1}`; diff --git a/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/resize_handle.tsx b/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/resize_handle.tsx index 8ccfd4d44d96b..66f36aacb5748 100644 --- a/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/resize_handle.tsx +++ b/src/platform/packages/private/kbn-grid-layout/grid/grid_panel/resize_handle.tsx @@ -7,7 +7,6 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { transparentize } from '@elastic/eui'; import { css } from '@emotion/react'; import { useEuiTheme } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -22,7 +21,7 @@ export const ResizeHandle = ({ const { euiTheme } = useEuiTheme(); return (