From f20705528c7cb7b3329561cec4aef6b0046b321e Mon Sep 17 00:00:00 2001 From: Navarone Feekery <13634519+navarone-feekery@users.noreply.github.com> Date: Thu, 15 Jun 2023 14:56:13 +0200 Subject: [PATCH 01/59] [Enterprise Search] Add configurable field (#159791) ## Summary Add missing configurable field `use_text_extraction_service` to SPO native connector. --- .../common/connectors/native_connectors.ts | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/x-pack/plugins/enterprise_search/common/connectors/native_connectors.ts b/x-pack/plugins/enterprise_search/common/connectors/native_connectors.ts index 30aa4e98e7a68..9a70c3c2a16ea 100644 --- a/x-pack/plugins/enterprise_search/common/connectors/native_connectors.ts +++ b/x-pack/plugins/enterprise_search/common/connectors/native_connectors.ts @@ -937,6 +937,33 @@ export const NATIVE_CONNECTOR_DEFINITIONS: Record Date: Thu, 15 Jun 2023 14:57:15 +0200 Subject: [PATCH 02/59] [Security Solution] Improve rules exception flyout opening for the indices with huge amount of fields (#159216) ## Summary Original ticket: [#158751](https://github.com/elastic/kibana/issues/158751) These changes improve the rule's exceptions flyout opening experience. We had a few complaints that it is very slow to open it and sometimes it throws an exception about the limited response size. To fix this, we decided to load extended field's data (conflicts and unmapped info) only when user selects some field instead of fetching this data for all fields on flyout opening. ## NOTES: After these changes we gonna do next steps related to fields loading when user creates/edits rule exceptions: 1. We will call `_fields_for_wildcard` **WITHOUT** `include_unmapped=true` parameter to fetch all fields specs on exception flyout loading 2. We will call `_fields_for_wildcard` **WITH** `include_unmapped=true` for only one field when user selects it from the dropdown menu With these changes we will improve slow exception flyout opening when user has lots of fields which are unmapped in different indices. If for some reason user has a lot of (thousands) conflicting fields around indices then the loading is still might be slow as the `_fields_for_wildcard` call will return conflicts information even without `include_unmapped=true` parameter. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../builder/entry_renderer.test.tsx | 15 +++-- .../components/builder/entry_renderer.tsx | 41 +++++++++++--- .../builder/exception_item_renderer.tsx | 4 ++ .../builder/exception_items_renderer.tsx | 4 ++ .../public/common/containers/source/index.tsx | 24 ++------ .../containers/source/use_data_view.tsx | 11 +--- .../common/containers/sourcerer/index.tsx | 3 +- .../add_exception_flyout/index.test.tsx | 2 + .../components/add_exception_flyout/index.tsx | 3 +- .../edit_exception_flyout/index.test.tsx | 2 + .../edit_exception_flyout/index.tsx | 3 +- .../item_conditions/index.tsx | 5 ++ .../logic/use_exception_flyout_data.tsx | 56 ++++++++++++------- 13 files changed, 107 insertions(+), 66 deletions(-) diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.test.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.test.tsx index f2b820fe71769..b73379acd1518 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.test.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.test.tsx @@ -197,14 +197,15 @@ describe('BuilderEntryItem', () => { ); }); - test('it render mapping issues warning text when field has mapping conflicts', () => { + test('it render mapping issues warning text when field has mapping conflicts', async () => { + const field = getField('mapping issues'); wrapper = mount( { setWarningsExist={jest.fn()} showLabel allowCustomOptions + getExtendedFields={(): Promise => Promise.resolve([field])} /> ); - expect(wrapper.find('.euiFormHelpText.euiFormRow__text').text()).toMatch( - /This field is defined as different types across the following indices or is unmapped. This can cause unexpected query results./ - ); + await waitFor(() => { + wrapper.update(); + expect(wrapper.find('.euiFormHelpText.euiFormRow__text').text()).toMatch( + /This field is defined as different types across the following indices or is unmapped. This can cause unexpected query results./ + ); + }); }); test('it renders field values correctly when operator is "isOperator"', () => { diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx index e5a5cf4fd14ba..1837e95858158 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiAccordion, @@ -26,6 +26,7 @@ import { } from '@kbn/securitysolution-io-ts-list-types'; import { BuilderEntry, + DataViewField, EXCEPTION_OPERATORS_ONLY_LISTS, FormattedBuilderEntry, OperatorOption, @@ -87,6 +88,7 @@ export interface EntryItemProps { isDisabled?: boolean; operatorsList?: OperatorOption[]; allowCustomOptions?: boolean; + getExtendedFields?: (fields: string[]) => Promise; } export const BuilderEntryItem: React.FC = ({ @@ -106,6 +108,7 @@ export const BuilderEntryItem: React.FC = ({ isDisabled = false, operatorsList, allowCustomOptions = false, + getExtendedFields, }): JSX.Element => { const sPaddingSize = useEuiPaddingSize('s'); @@ -175,6 +178,22 @@ export const BuilderEntryItem: React.FC = ({ [onChange, entry] ); + const [extendedField, setExtendedField] = useState(null); + useEffect(() => { + if (!entry.field?.name) { + setExtendedField(null); + } + const fetchExtendedField = async (): Promise => { + const fieldName = entry.field?.name; + if (getExtendedFields && fieldName) { + const extendedFields = await getExtendedFields([fieldName]); + const field = extendedFields.find((f) => f.name === fieldName) ?? null; + setExtendedField(field); + } + }; + fetchExtendedField(); + }, [entry.field?.name, getExtendedFields]); + const isFieldComponentDisabled = useMemo( (): boolean => isDisabled || @@ -212,8 +231,11 @@ export const BuilderEntryItem: React.FC = ({ ); const warningIconCss = { marginRight: `${sPaddingSize}` }; - const getMappingConflictsWarning = (field: DataViewFieldBase): React.ReactNode | null => { - const conflictsInfo = getMappingConflictsInfo(field); + const getMappingConflictsWarning = (): React.ReactNode | null => { + if (!extendedField) { + return null; + } + const conflictsInfo = getMappingConflictsInfo(extendedField); if (!conflictsInfo) { return null; } @@ -238,13 +260,13 @@ export const BuilderEntryItem: React.FC = ({ data-test-subj="mappingConflictsAccordion" >
- {conflictsInfo.map((info) => { + {conflictsInfo.map((info, idx) => { const groupDetails = info.groupedIndices.map( ({ name, count }) => `${count > 1 ? i18n.CONFLICT_MULTIPLE_INDEX_DESCRIPTION(name, count) : name}` ); return ( - <> + {`${ info.totalIndexCount > 1 @@ -254,7 +276,7 @@ export const BuilderEntryItem: React.FC = ({ ) : info.type }: ${groupDetails.join(', ')}`} - + ); })} @@ -268,12 +290,12 @@ export const BuilderEntryItem: React.FC = ({ entry.nested == null && allowCustomOptions ? i18n.CUSTOM_COMBOBOX_OPTION_TEXT : undefined; const helpText = - entry.field?.conflictDescriptions == null ? ( + extendedField?.conflictDescriptions == null ? ( customOptionText ) : ( <> {customOptionText} - {getMappingConflictsWarning(entry.field)} + {getMappingConflictsWarning()} ); return ( @@ -295,8 +317,9 @@ export const BuilderEntryItem: React.FC = ({ osTypes, isDisabled, handleFieldChange, - sPaddingSize, allowCustomOptions, + sPaddingSize, + extendedField, ] ); diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx index 8d872cd23cbbf..ea3444155955e 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx @@ -13,6 +13,7 @@ import { HttpStart } from '@kbn/core/public'; import { ExceptionListType, OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { BuilderEntry, + DataViewField, ExceptionsBuilderExceptionItem, FormattedBuilderEntry, OperatorOption, @@ -65,6 +66,7 @@ interface BuilderExceptionListItemProps { isDisabled?: boolean; operatorsList?: OperatorOption[]; allowCustomOptions?: boolean; + getExtendedFields?: (fields: string[]) => Promise; } export const BuilderExceptionListItemComponent = React.memo( @@ -88,6 +90,7 @@ export const BuilderExceptionListItemComponent = React.memo { const handleEntryChange = useCallback( (entry: BuilderEntry, entryIndex: number): void => { @@ -161,6 +164,7 @@ export const BuilderExceptionListItemComponent = React.memo Promise; } export const ExceptionBuilderComponent = ({ @@ -121,6 +123,7 @@ export const ExceptionBuilderComponent = ({ osTypes, operatorsList, allowCustomFieldOptions = false, + getExtendedFields, }: ExceptionBuilderProps): JSX.Element => { const [state, dispatch] = useReducer(exceptionsBuilderReducer(), { ...initialState, @@ -442,6 +445,7 @@ export const ExceptionBuilderComponent = ({ isDisabled={isDisabled} operatorsList={operatorsList} allowCustomOptions={allowCustomFieldOptions} + getExtendedFields={getExtendedFields} /> diff --git a/x-pack/plugins/security_solution/public/common/containers/source/index.tsx b/x-pack/plugins/security_solution/public/common/containers/source/index.tsx index 7f259cdf403e3..5e02ca2e11c58 100644 --- a/x-pack/plugins/security_solution/public/common/containers/source/index.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/source/index.tsx @@ -42,11 +42,7 @@ export const getAllFieldsByName = ( keyBy('name', getAllBrowserFields(browserFields)); export const getIndexFields = memoizeOne( - ( - title: string, - fields: IIndexPatternFieldList, - _includeUnmapped: boolean = false - ): DataViewBase => + (title: string, fields: IIndexPatternFieldList): DataViewBase => fields && fields.length > 0 ? { fields: fields.map((field) => @@ -66,10 +62,7 @@ export const getIndexFields = memoizeOne( title, } : { fields: [], title }, - (newArgs, lastArgs) => - newArgs[0] === lastArgs[0] && - newArgs[1].length === lastArgs[1].length && - newArgs[2] === lastArgs[2] + (newArgs, lastArgs) => newArgs[0] === lastArgs[0] && newArgs[1].length === lastArgs[1].length ); const DEFAULT_BROWSER_FIELDS = {}; @@ -96,8 +89,7 @@ interface FetchIndexReturn { export const useFetchIndex = ( indexNames: string[], onlyCheckIfIndicesExist: boolean = false, - strategy: 'indexFields' | 'dataView' | typeof ENDPOINT_FIELDS_SEARCH_STRATEGY = 'indexFields', - includeUnmapped: boolean = false + strategy: 'indexFields' | 'dataView' | typeof ENDPOINT_FIELDS_SEARCH_STRATEGY = 'indexFields' ): [boolean, FetchIndexReturn] => { const { data } = useKibana().services; const abortCtrl = useRef(new AbortController()); @@ -121,11 +113,7 @@ export const useFetchIndex = ( abortCtrl.current = new AbortController(); const dv = await data.dataViews.create({ title: iNames.join(','), allowNoIndex: true }); const dataView = dv.toSpec(); - const { browserFields } = getDataViewStateFromIndexFields( - iNames, - dataView.fields, - includeUnmapped - ); + const { browserFields } = getDataViewStateFromIndexFields(iNames, dataView.fields); previousIndexesName.current = dv.getIndexPattern().split(','); @@ -135,7 +123,7 @@ export const useFetchIndex = ( browserFields, indexes: dv.getIndexPattern().split(','), indexExists: dv.getIndexPattern().split(',').length > 0, - indexPatterns: getIndexFields(dv.getIndexPattern(), dv.fields, includeUnmapped), + indexPatterns: getIndexFields(dv.getIndexPattern(), dv.fields), }); } catch (exc) { setState({ @@ -152,7 +140,7 @@ export const useFetchIndex = ( asyncSearch(); }, - [addError, data.dataViews, includeUnmapped, indexNames, state] + [addError, data.dataViews, indexNames, state] ); useEffect(() => { diff --git a/x-pack/plugins/security_solution/public/common/containers/source/use_data_view.tsx b/x-pack/plugins/security_solution/public/common/containers/source/use_data_view.tsx index 46bbd92f21c79..c36b5a2b2981e 100644 --- a/x-pack/plugins/security_solution/public/common/containers/source/use_data_view.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/source/use_data_view.tsx @@ -48,11 +48,7 @@ interface DataViewInfo { * VERY mutatious on purpose to improve the performance of the transform. */ export const getDataViewStateFromIndexFields = memoizeOne( - ( - _title: string, - fields: DataViewSpec['fields'], - _includeUnmapped: boolean = false - ): DataViewInfo => { + (_title: string, fields: DataViewSpec['fields']): DataViewInfo => { // Adds two dangerous casts to allow for mutations within this function type DangerCastForMutation = Record; if (fields == null) { @@ -72,10 +68,7 @@ export const getDataViewStateFromIndexFields = memoizeOne( return { browserFields: browserFields as DangerCastForBrowserFieldsMutation }; } }, - (newArgs, lastArgs) => - newArgs[0] === lastArgs[0] && - newArgs[1]?.length === lastArgs[1]?.length && - newArgs[2] === lastArgs[2] + (newArgs, lastArgs) => newArgs[0] === lastArgs[0] && newArgs[1]?.length === lastArgs[1]?.length ); export const useDataView = (): { diff --git a/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx b/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx index f17fccf7f29ed..fdbd6d9d530e1 100644 --- a/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx @@ -438,8 +438,7 @@ export const useSourcererDataView = ( const browserFields = useCallback(() => { const { browserFields: dataViewBrowserFields } = getDataViewStateFromIndexFields( sourcererDataView.patternList.join(','), - sourcererDataView.fields, - false + sourcererDataView.fields ); return dataViewBrowserFields; }, [sourcererDataView.fields, sourcererDataView.patternList]); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx index e750b0ddc75bb..3d47ae518e48b 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx @@ -85,6 +85,7 @@ describe('When the add exception modal is opened', () => { mockFetchIndexPatterns.mockImplementation(() => ({ isLoading: false, indexPatterns: stubIndexPattern, + getExtendedFields: () => Promise.resolve([]), })); mockUseSignalIndex.mockImplementation(() => ({ @@ -153,6 +154,7 @@ describe('When the add exception modal is opened', () => { mockFetchIndexPatterns.mockImplementation(() => ({ isLoading: true, indexPatterns: { fields: [], title: 'foo' }, + getExtendedFields: () => Promise.resolve([]), })); wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx index 198653576c142..b22596ce6b653 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx @@ -114,7 +114,7 @@ export const AddExceptionFlyout = memo(function AddExceptionFlyout({ onCancel, onConfirm, }: AddExceptionFlyoutProps) { - const { isLoading, indexPatterns } = useFetchIndexPatterns(rules); + const { isLoading, indexPatterns, getExtendedFields } = useFetchIndexPatterns(rules); const [isSubmitting, submitNewExceptionItems] = useAddNewExceptionItems(); const [isClosingAlerts, closeAlerts] = useCloseAlertsFromExceptions(); const invalidateFetchRuleByIdQuery = useInvalidateFetchRuleByIdQuery(); @@ -501,6 +501,7 @@ export const AddExceptionFlyout = memo(function AddExceptionFlyout({ onExceptionItemAdd={setExceptionItemsToAdd} onSetErrorExists={setConditionsValidationError} onFilterIndexPatterns={filterIndexPatterns} + getExtendedFields={getExtendedFields} /> {listType !== ExceptionListTypeEnum.ENDPOINT && !sharedListToAddTo?.length && ( diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx index 09ed03130ef08..19a4aa0ac8f75 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx @@ -124,6 +124,7 @@ describe('When the edit exception modal is opened', () => { mockFetchIndexPatterns.mockImplementation(() => ({ isLoading: false, indexPatterns: stubIndexPattern, + getExtendedFields: () => Promise.resolve([]), })); mockUseFindExceptionListReferences.mockImplementation(() => [ false, @@ -168,6 +169,7 @@ describe('When the edit exception modal is opened', () => { mockFetchIndexPatterns.mockImplementation(() => ({ isLoading: true, indexPatterns: { fields: [], title: 'foo' }, + getExtendedFields: () => Promise.resolve([]), })); const wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx index 29b7d6908d875..8370d8fdca6ea 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx @@ -109,7 +109,7 @@ const EditExceptionFlyoutComponent: React.FC = ({ const rules = useMemo(() => (rule != null ? [rule] : null), [rule]); const listType = useMemo((): ExceptionListTypeEnum => list.type as ExceptionListTypeEnum, [list]); - const { isLoading, indexPatterns } = useFetchIndexPatterns(rules); + const { isLoading, indexPatterns, getExtendedFields } = useFetchIndexPatterns(rules); const [isSubmitting, submitEditExceptionItems] = useEditExceptionItems(); const [isClosingAlerts, closeAlerts] = useCloseAlertsFromExceptions(); @@ -370,6 +370,7 @@ const EditExceptionFlyoutComponent: React.FC = ({ onExceptionItemAdd={setExceptionItemsToAdd} onSetErrorExists={setConditionsValidationError} onFilterIndexPatterns={filterIndexPatterns} + getExtendedFields={getExtendedFields} /> {!openedFromListDetailPage && listType === ExceptionListTypeEnum.DETECTION && ( <> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.tsx index c1f11b17cbbd9..98983a708a815 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.tsx @@ -20,6 +20,7 @@ import type { } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import type { + DataViewField, ExceptionsBuilderExceptionItem, ExceptionsBuilderReturnExceptionItem, } from '@kbn/securitysolution-list-utils'; @@ -89,6 +90,8 @@ interface ExceptionsFlyoutConditionsComponentProps { type: ExceptionListType, osTypes?: Array<'linux' | 'macos' | 'windows'> | undefined ) => DataViewBase; + + getExtendedFields?: (fields: string[]) => Promise; } const ExceptionsConditionsComponent: React.FC = ({ @@ -105,6 +108,7 @@ const ExceptionsConditionsComponent: React.FC { const { http, unifiedSearch } = useKibana().services; const isEndpointException = useMemo( @@ -267,6 +271,7 @@ const ExceptionsConditionsComponent: React.FC ); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_exception_flyout_data.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_exception_flyout_data.tsx index d13ad7c2ed174..4c126311b6d18 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_exception_flyout_data.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_exception_flyout_data.tsx @@ -5,9 +5,11 @@ * 2.0. */ -import { useEffect, useState, useMemo } from 'react'; +import { useEffect, useState, useMemo, useCallback } from 'react'; import type { DataViewBase } from '@kbn/es-query'; +import type { FieldSpec, DataViewSpec } from '@kbn/data-views-plugin/common'; + import { useAppToasts } from '../../../common/hooks/use_app_toasts'; import type { Rule } from '../../rule_management/logic/types'; import { useGetInstalledJob } from '../../../common/components/ml/hooks/use_get_jobs'; @@ -19,6 +21,7 @@ import * as i18n from '../../../common/containers/source/translations'; export interface ReturnUseFetchExceptionFlyoutData { isLoading: boolean; indexPatterns: DataViewBase; + getExtendedFields: (fields: string[]) => Promise; } /** @@ -84,15 +87,14 @@ export const useFetchIndexPatterns = (rules: Rule[] | null): ReturnUseFetchExcep } }, [jobs, isMLRule, memoDataViewId, memoNonDataViewIndexPatterns]); - const [isIndexPatternLoading, { indexPatterns: indexIndexPatterns }] = useFetchIndex( - memoRuleIndices, - false, - 'indexFields', - true - ); + const [ + isIndexPatternLoading, + { indexPatterns: indexIndexPatterns, dataView: indexDataViewSpec }, + ] = useFetchIndex(memoRuleIndices, false, 'indexFields'); // Data view logic const [dataViewIndexPatterns, setDataViewIndexPatterns] = useState(null); + const [dataViewSpec, setDataViewSpec] = useState(null); useEffect(() => { const fetchSingleDataView = async () => { // ensure the memoized data view includes a space id, otherwise @@ -101,25 +103,36 @@ export const useFetchIndexPatterns = (rules: Rule[] | null): ReturnUseFetchExcep if (activeSpaceId !== '' && memoDataViewId) { setDataViewLoading(true); const dv = await data.dataViews.get(memoDataViewId); - let fieldsWithUnmappedInfo = null; - try { - fieldsWithUnmappedInfo = await data.dataViews.getFieldsForIndexPattern(dv, { - pattern: '', - includeUnmapped: true, - }); - } catch (error) { - addWarning(error, { title: i18n.FETCH_FIELDS_WITH_UNMAPPED_DATA_ERROR }); - } setDataViewLoading(false); - setDataViewIndexPatterns({ - ...dv, - ...(fieldsWithUnmappedInfo ? { fields: fieldsWithUnmappedInfo } : {}), - }); + setDataViewIndexPatterns(dv); + setDataViewSpec(dv.toSpec()); } }; fetchSingleDataView(); - }, [memoDataViewId, data.dataViews, setDataViewIndexPatterns, activeSpaceId, addWarning]); + }, [memoDataViewId, data.dataViews, setDataViewIndexPatterns, activeSpaceId]); + + // Fetch extended fields information + const getExtendedFields = useCallback( + async (fields: string[]) => { + let extendedFields: FieldSpec[] = []; + const dv = dataViewSpec ?? indexDataViewSpec; + if (!dv) { + return extendedFields; + } + try { + extendedFields = await data.dataViews.getFieldsForIndexPattern(dv, { + pattern: '', + includeUnmapped: true, + fields, + }); + } catch (error) { + addWarning(error, { title: i18n.FETCH_FIELDS_WITH_UNMAPPED_DATA_ERROR }); + } + return extendedFields; + }, + [addWarning, data.dataViews, dataViewSpec, indexDataViewSpec] + ); // Determine whether to use index patterns or data views const indexPatternsToUse = useMemo( @@ -131,5 +144,6 @@ export const useFetchIndexPatterns = (rules: Rule[] | null): ReturnUseFetchExcep return { isLoading: isIndexPatternLoading || mlJobLoading || dataViewLoading, indexPatterns: indexPatternsToUse, + getExtendedFields, }; }; From 439d00a7b7b30ed561b07160d2828da04c92e1cf Mon Sep 17 00:00:00 2001 From: Shahzad Date: Thu, 15 Jun 2023 15:17:18 +0200 Subject: [PATCH 03/59] Add io-ts in kb-ui-shared-bundle (#159792) --- packages/kbn-ui-shared-deps-npm/BUILD.bazel | 1 + packages/kbn-ui-shared-deps-npm/webpack.config.js | 1 + packages/kbn-ui-shared-deps-src/src/definitions.js | 1 + packages/kbn-ui-shared-deps-src/src/entry.js | 2 ++ 4 files changed, 5 insertions(+) diff --git a/packages/kbn-ui-shared-deps-npm/BUILD.bazel b/packages/kbn-ui-shared-deps-npm/BUILD.bazel index b7c41ebf0f386..e20aabc31a025 100644 --- a/packages/kbn-ui-shared-deps-npm/BUILD.bazel +++ b/packages/kbn-ui-shared-deps-npm/BUILD.bazel @@ -59,6 +59,7 @@ RUNTIME_DEPS = [ "@npm//styled-components", "@npm//tslib", "@npm//uuid", + "@npm//io-ts", ] webpack_cli( diff --git a/packages/kbn-ui-shared-deps-npm/webpack.config.js b/packages/kbn-ui-shared-deps-npm/webpack.config.js index 5f0d21e6350c7..6aa06bfd40977 100644 --- a/packages/kbn-ui-shared-deps-npm/webpack.config.js +++ b/packages/kbn-ui-shared-deps-npm/webpack.config.js @@ -88,6 +88,7 @@ module.exports = (_, argv) => { 'classnames', 'fflate', 'history', + 'io-ts', 'jquery', 'lodash', 'lodash/fp', diff --git a/packages/kbn-ui-shared-deps-src/src/definitions.js b/packages/kbn-ui-shared-deps-src/src/definitions.js index 6affd36252918..33ab7601dc86a 100644 --- a/packages/kbn-ui-shared-deps-src/src/definitions.js +++ b/packages/kbn-ui-shared-deps-src/src/definitions.js @@ -55,6 +55,7 @@ const externals = { '@kbn/monaco': '__kbnSharedDeps__.KbnMonaco', // this is how plugins/consumers from npm load monaco 'monaco-editor/esm/vs/editor/editor.api': '__kbnSharedDeps__.MonacoBarePluginApi', + 'io-ts': '__kbnSharedDeps__.IoTs', /** * big deps which are locked to a single version diff --git a/packages/kbn-ui-shared-deps-src/src/entry.js b/packages/kbn-ui-shared-deps-src/src/entry.js index 52ff9a2657a15..bb77344c5b0c7 100644 --- a/packages/kbn-ui-shared-deps-src/src/entry.js +++ b/packages/kbn-ui-shared-deps-src/src/entry.js @@ -21,6 +21,8 @@ export const EmotionCache = require('@emotion/cache'); export const EmotionReact = require('@emotion/react'); export const Moment = require('moment'); export const MomentTimezone = require('moment-timezone/moment-timezone'); + +export const IoTs = require('io-ts'); export const KbnMonaco = require('@kbn/monaco'); export const MonacoBarePluginApi = require('@kbn/monaco').BarePluginApi; export const React = require('react'); From e4349cd52a8a2076a0cd1cc88b6397ef9fbd3ef3 Mon Sep 17 00:00:00 2001 From: Elena Stoeva <59341489+ElenaStoeva@users.noreply.github.com> Date: Thu, 15 Jun 2023 14:20:44 +0100 Subject: [PATCH 04/59] [Console] Update autocomplete definitions (#159556) Closes https://github.com/elastic/kibana/issues/157753 ## Summary This PR updates the script-generated autocomplete definitions for Console. Tested all new autocompletions manually in Console - everything worked as expected except that the documentation links for all Synonyms requests (`synonyms.delete.json`, `synonyms.get.json`, `synonyms.put.json`, `synonyms_sets.get.json`) lead to 404 error pages, but it seems that's how these links were introduced in the [Es Rest API specs](https://github.com/elastic/elasticsearch/tree/main/rest-api-spec/src/main/resources/rest-api-spec/api). @carlosdelest I see that you added the specs for the Synonyms requests - do you know if their documentation pages will be active once 8.9 is released? --- .../_internal.delete_desired_balance.json | 11 ++++++++++ .../generated/cat.component_templates.json | 2 +- .../json/generated/cluster.info.json | 20 +++++++++++++++++ .../indices.delete_data_lifecycle.json | 22 +++++++++++++++++++ .../indices.explain_data_lifecycle.json | 15 +++++++++++++ .../generated/indices.get_data_lifecycle.json | 21 ++++++++++++++++++ .../generated/indices.put_data_lifecycle.json | 22 +++++++++++++++++++ .../indices.simulate_index_template.json | 3 ++- .../generated/indices.simulate_template.json | 3 ++- .../json/generated/logstash.get_pipeline.json | 1 + .../json/generated/ml.put_trained_model.json | 3 ++- .../ml.start_trained_model_deployment.json | 1 + .../json/generated/search.json | 3 ++- ...security.create_cross_cluster_api_key.json | 11 ++++++++++ ...security.update_cross_cluster_api_key.json | 11 ++++++++++ .../generated/transform.delete_transform.json | 1 + .../json/generated/watcher.get_settings.json | 11 ++++++++++ .../generated/watcher.update_settings.json | 11 ++++++++++ 18 files changed, 167 insertions(+), 5 deletions(-) create mode 100644 src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json create mode 100644 src/plugins/console/server/lib/spec_definitions/json/generated/cluster.info.json create mode 100644 src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json create mode 100644 src/plugins/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json create mode 100644 src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json create mode 100644 src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json create mode 100644 src/plugins/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json create mode 100644 src/plugins/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json create mode 100644 src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json create mode 100644 src/plugins/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json b/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json new file mode 100644 index 0000000000000..5b486895ad280 --- /dev/null +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json @@ -0,0 +1,11 @@ +{ + "_internal.delete_desired_balance": { + "methods": [ + "DELETE" + ], + "patterns": [ + "_internal/desired_balance" + ], + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-desired-balance.html" + } +} diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.component_templates.json b/src/plugins/console/server/lib/spec_definitions/json/generated/cat.component_templates.json index f2f8209675233..a254ac13ab442 100644 --- a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.component_templates.json +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/cat.component_templates.json @@ -16,6 +16,6 @@ "_cat/component_templates", "_cat/component_templates/{name}" ], - "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-compoentn-templates.html" + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-component-templates.html" } } diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.info.json b/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.info.json new file mode 100644 index 0000000000000..8d82e0013e797 --- /dev/null +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.info.json @@ -0,0 +1,20 @@ +{ + "cluster.info": { + "methods": [ + "GET" + ], + "patterns": [ + "_info/{target}" + ], + "url_components": { + "target": [ + "_all", + "http", + "ingest", + "script", + "thread_pool" + ] + }, + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/cluster-info.html" + } +} diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json new file mode 100644 index 0000000000000..974ad6ff5ced1 --- /dev/null +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json @@ -0,0 +1,22 @@ +{ + "indices.delete_data_lifecycle": { + "url_params": { + "expand_wildcards": [ + "open", + "closed", + "hidden", + "none", + "all" + ], + "timeout": "", + "master_timeout": "" + }, + "methods": [ + "DELETE" + ], + "patterns": [ + "_data_stream/{name}/_lifecycle" + ], + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/dlm-delete-lifecycle.html" + } +} diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json new file mode 100644 index 0000000000000..cc54bc49b571d --- /dev/null +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json @@ -0,0 +1,15 @@ +{ + "indices.explain_data_lifecycle": { + "url_params": { + "include_defaults": "__flag__", + "master_timeout": "" + }, + "methods": [ + "GET" + ], + "patterns": [ + "{indices}/_lifecycle/explain" + ], + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/dlm-explain-lifecycle.html" + } +} diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json new file mode 100644 index 0000000000000..4ec665ef8297b --- /dev/null +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json @@ -0,0 +1,21 @@ +{ + "indices.get_data_lifecycle": { + "url_params": { + "expand_wildcards": [ + "open", + "closed", + "hidden", + "none", + "all" + ], + "include_defaults": "__flag__" + }, + "methods": [ + "GET" + ], + "patterns": [ + "_data_stream/{name}/_lifecycle" + ], + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/dlm-get-lifecycle.html" + } +} diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json new file mode 100644 index 0000000000000..f888d749fcb76 --- /dev/null +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json @@ -0,0 +1,22 @@ +{ + "indices.put_data_lifecycle": { + "url_params": { + "expand_wildcards": [ + "open", + "closed", + "hidden", + "none", + "all" + ], + "timeout": "", + "master_timeout": "" + }, + "methods": [ + "PUT" + ], + "patterns": [ + "_data_stream/{name}/_lifecycle" + ], + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/dlm-put-lifecycle.html" + } +} diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json index e122bd844e9bc..a1cc4649acce8 100644 --- a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json @@ -3,7 +3,8 @@ "url_params": { "create": "__flag__", "cause": "", - "master_timeout": "" + "master_timeout": "", + "include_defaults": "__flag__" }, "methods": [ "POST" diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json index 9e174799e6c07..bf299a81cf8d3 100644 --- a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json @@ -3,7 +3,8 @@ "url_params": { "create": "__flag__", "cause": "", - "master_timeout": "" + "master_timeout": "", + "include_defaults": "__flag__" }, "methods": [ "POST" diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json b/src/plugins/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json index a6b3a69b53a60..db70713b88252 100644 --- a/src/plugins/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json @@ -4,6 +4,7 @@ "GET" ], "patterns": [ + "_logstash/pipeline", "_logstash/pipeline/{id}" ], "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/logstash-api-get-pipeline.html" diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json b/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json index a5b590908a7d9..abbe955e39011 100644 --- a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json @@ -1,7 +1,8 @@ { "ml.put_trained_model": { "url_params": { - "defer_definition_decompression": "__flag__" + "defer_definition_decompression": "__flag__", + "wait_for_completion": "__flag__" }, "methods": [ "PUT" diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json b/src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json index e2ab8305ea165..7afc63d150c84 100644 --- a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json @@ -2,6 +2,7 @@ "ml.start_trained_model_deployment": { "url_params": { "cache_size": "", + "deployment_id": "", "number_of_allocations": 0, "threads_per_allocation": 0, "priority": "", diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search.json b/src/plugins/console/server/lib/spec_definitions/json/generated/search.json index 5d889bd0b7033..bf3af69c177e7 100644 --- a/src/plugins/console/server/lib/spec_definitions/json/generated/search.json +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/search.json @@ -60,7 +60,8 @@ "max_concurrent_shard_requests": "", "pre_filter_shard_size": "", "rest_total_hits_as_int": "__flag__", - "min_compatible_shard_node": "" + "min_compatible_shard_node": "", + "include_named_queries_score": "__flag__" }, "methods": [ "GET", diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json b/src/plugins/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json new file mode 100644 index 0000000000000..6ef0434312d02 --- /dev/null +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json @@ -0,0 +1,11 @@ +{ + "security.create_cross_cluster_api_key": { + "methods": [ + "POST" + ], + "patterns": [ + "_security/cross_cluster/api_key" + ], + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-cross-cluster-api-key.html" + } +} diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json b/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json new file mode 100644 index 0000000000000..d41f28f9b6c14 --- /dev/null +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json @@ -0,0 +1,11 @@ +{ + "security.update_cross_cluster_api_key": { + "methods": [ + "PUT" + ], + "patterns": [ + "_security/cross_cluster/api_key/{id}" + ], + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-update-cross-cluster-api-key.html" + } +} diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json b/src/plugins/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json index df821d3c2fcca..82d997b3b8e52 100644 --- a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json @@ -2,6 +2,7 @@ "transform.delete_transform": { "url_params": { "force": "__flag__", + "delete_dest_index": "__flag__", "timeout": "" }, "methods": [ diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json b/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json new file mode 100644 index 0000000000000..cd81e30be1cdb --- /dev/null +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json @@ -0,0 +1,11 @@ +{ + "watcher.get_settings": { + "methods": [ + "GET" + ], + "patterns": [ + "_watcher/settings" + ], + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-get-settings.html" + } +} diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json b/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json new file mode 100644 index 0000000000000..8d8d743841d37 --- /dev/null +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json @@ -0,0 +1,11 @@ +{ + "watcher.update_settings": { + "methods": [ + "PUT" + ], + "patterns": [ + "_watcher/settings" + ], + "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-update-settings.html" + } +} From 5751f29f58cee681678a3ca0867ae8cab7e77c23 Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Thu, 15 Jun 2023 07:26:33 -0600 Subject: [PATCH 05/59] [ML] Explain Log Rate Spikes: allow sticky histogram (#159412) ## Summary Related issue: https://github.com/elastic/kibana/issues/156605 This PR adds some ELRS style updates: - adds options prop to allow 'stickyHistogram' - defaults to false for now - until page restructure work is done to allow for smooth interaction - Moves the 'Clear' functionality to 'Reset' button in line with the progress controls image ### Checklist Delete any items that are not applicable to this PR. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../progress_controls/progress_controls.tsx | 20 ++- .../document_count_content.tsx | 97 +++------- .../explain_log_rate_spikes_analysis.tsx | 71 +++++--- .../explain_log_rate_spikes_app_state.tsx | 5 +- .../explain_log_rate_spikes_content.tsx | 167 +++++++++--------- ...xplain_log_rate_spikes_content_wrapper.tsx | 8 +- .../explain_log_rate_spikes_page.tsx | 6 +- .../aiops/explain_log_rate_spikes.tsx | 2 + .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 11 files changed, 192 insertions(+), 187 deletions(-) diff --git a/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx b/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx index eaed41d29b0c6..43e51e9cc4c69 100644 --- a/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx +++ b/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx @@ -27,20 +27,24 @@ import { useAnimatedProgressBarBackground } from './use_animated_progress_bar_ba // `x-pack/plugins/apm/public/components/app/correlations/progress_controls.tsx` interface ProgressControlProps { + isBrushCleared: boolean; progress: number; progressMessage: string; onRefresh: () => void; onCancel: () => void; + onReset: () => void; isRunning: boolean; shouldRerunAnalysis: boolean; } export const ProgressControls: FC = ({ children, + isBrushCleared, progress, progressMessage, onRefresh, onCancel, + onReset, isRunning, shouldRerunAnalysis, }) => { @@ -49,7 +53,7 @@ export const ProgressControls: FC = ({ const analysisCompleteStyle = { display: 'none' }; return ( - + {!isRunning && ( = ({ )} + {(progress === 1 || isRunning === false) && !isBrushCleared ? ( + + + + + + ) : null} {progress === 1 ? ( - + diff --git a/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx b/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx index f14a5578281fa..01fa56b1470d9 100644 --- a/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx +++ b/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx @@ -5,11 +5,10 @@ * 2.0. */ -import React, { useEffect, useState, type FC } from 'react'; +import React, { type FC } from 'react'; -import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; import type { WindowParameters } from '@kbn/aiops-utils'; import { DocumentCountStats } from '../../../get_document_stats'; @@ -17,23 +16,15 @@ import { DocumentCountStats } from '../../../get_document_stats'; import { DocumentCountChart, DocumentCountChartPoint } from '../document_count_chart'; import { TotalCountHeader } from '../total_count_header'; -const clearSelectionLabel = i18n.translate( - 'xpack.aiops.documentCountContent.clearSelectionAriaLabel', - { - defaultMessage: 'Clear selection', - } -); - export interface DocumentCountContentProps { - brushSelectionUpdateHandler: (d: WindowParameters) => void; - clearSelectionHandler: () => void; + brushSelectionUpdateHandler: (d: WindowParameters, force: boolean) => void; documentCountStats?: DocumentCountStats; documentCountStatsSplit?: DocumentCountStats; documentCountStatsSplitLabel?: string; + isBrushCleared: boolean; totalCount: number; sampleProbability: number; - windowParameters?: WindowParameters; - incomingInitialAnalysisStart?: number | WindowParameters; + initialAnalysisStart?: number | WindowParameters; /** Optional color override for the default bar color for charts */ barColorOverride?: string; /** Optional color override for the highlighted bar color for charts */ @@ -42,26 +33,16 @@ export interface DocumentCountContentProps { export const DocumentCountContent: FC = ({ brushSelectionUpdateHandler, - clearSelectionHandler, documentCountStats, documentCountStatsSplit, documentCountStatsSplitLabel = '', + isBrushCleared, totalCount, sampleProbability, - windowParameters, - incomingInitialAnalysisStart, + initialAnalysisStart, barColorOverride, barHighlightColorOverride, }) => { - const [isBrushCleared, setIsBrushCleared] = useState(true); - const [initialAnalysisStart, setInitialAnalysisStart] = useState< - number | WindowParameters | undefined - >(incomingInitialAnalysisStart); - - useEffect(() => { - setIsBrushCleared(windowParameters === undefined); - }, [windowParameters]); - const bucketTimestamps = Object.keys(documentCountStats?.buckets ?? {}).map((time) => +time); const splitBucketTimestamps = Object.keys(documentCountStatsSplit?.buckets ?? {}).map( (time) => +time @@ -95,54 +76,28 @@ export const DocumentCountContent: FC = ({ })); } - function brushSelectionUpdate(d: WindowParameters, force: boolean) { - if (!isBrushCleared || force) { - brushSelectionUpdateHandler(d); - } - if (force) { - setIsBrushCleared(false); - } - } - - function clearSelection() { - setIsBrushCleared(true); - setInitialAnalysisStart(undefined); - clearSelectionHandler(); - } - return ( - <> - + + + + + {documentCountStats.interval !== undefined && ( - + - {!isBrushCleared && ( - - - {clearSelectionLabel} - - - )} - - {documentCountStats.interval !== undefined && ( - )} - + ); }; diff --git a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_analysis.tsx b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_analysis.tsx index ac7a727efa0e8..d939ad280126e 100644 --- a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_analysis.tsx +++ b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_analysis.tsx @@ -32,7 +32,6 @@ import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils'; import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; import { initialState, streamReducer } from '../../../common/api/stream_reducer'; import type { ApiExplainLogRateSpikes } from '../../../common/api'; - import { getGroupTableItems, SpikeAnalysisTable, @@ -85,6 +84,11 @@ interface ExplainLogRateSpikesAnalysisProps { earliest: number; /** End timestamp filter */ latest: number; + isBrushCleared: boolean; + /** Option to make main histogram sticky */ + stickyHistogram?: boolean; + /** Callback for resetting the analysis */ + onReset: () => void; /** Window parameters for the analysis */ windowParameters: WindowParameters; /** The search query to be applied to the analysis as a filter */ @@ -102,7 +106,10 @@ interface ExplainLogRateSpikesAnalysisProps { export const ExplainLogRateSpikesAnalysis: FC = ({ dataView, earliest, + isBrushCleared, latest, + stickyHistogram, + onReset, windowParameters, searchQuery, sampleProbability, @@ -277,11 +284,13 @@ export const ExplainLogRateSpikesAnalysis: FC return (
startHandler(false)} onCancel={cancel} + onReset={onReset} shouldRerunAnalysis={shouldRerunAnalysis} > @@ -382,29 +391,43 @@ export const ExplainLogRateSpikesAnalysis: FC } /> )} - {showSpikeAnalysisTable && groupResults ? ( - - ) : null} - {showSpikeAnalysisTable && !groupResults ? ( - - ) : null} + {/* Using inline style as Eui Table overwrites overflow settings */} +
+ {showSpikeAnalysisTable && groupResults ? ( + + ) : null} + {showSpikeAnalysisTable && !groupResults ? ( + + ) : null} +
); }; diff --git a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_app_state.tsx b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_app_state.tsx index 4d08d53448037..88a8cf0bc33dc 100644 --- a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_app_state.tsx +++ b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_app_state.tsx @@ -38,12 +38,15 @@ export interface ExplainLogRateSpikesAppStateProps { savedSearch: SavedSearch | null; /** App dependencies */ appDependencies: AiopsAppDependencies; + /** Option to make main histogram sticky */ + stickyHistogram?: boolean; } export const ExplainLogRateSpikesAppState: FC = ({ dataView, savedSearch, appDependencies, + stickyHistogram, }) => { if (!dataView) return null; @@ -80,7 +83,7 @@ export const ExplainLogRateSpikesAppState: FC - + diff --git a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_content/explain_log_rate_spikes_content.tsx b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_content/explain_log_rate_spikes_content.tsx index 1d61f75fce22d..f5b10309ef5c2 100644 --- a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_content/explain_log_rate_spikes_content.tsx +++ b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_content/explain_log_rate_spikes_content.tsx @@ -5,11 +5,11 @@ * 2.0. */ -import React, { useState, type FC } from 'react'; +import React, { useEffect, useState, type FC } from 'react'; +import { EuiEmptyPrompt, EuiHorizontalRule, EuiPanel } from '@elastic/eui'; import type { Moment } from 'moment'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { EuiEmptyPrompt, EuiHorizontalRule, EuiResizableContainer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -52,6 +52,8 @@ export interface ExplainLogRateSpikesContentProps { timeRange?: { min: Moment; max: Moment }; /** Elasticsearch query to pass to analysis endpoint */ esSearchQuery?: estypes.QueryDslQueryContainer; + /** Option to make the main histogram sticky */ + stickyHistogram?: boolean; /** Optional color override for the default bar color for charts */ barColorOverride?: string; /** Optional color override for the highlighted bar color for charts */ @@ -63,14 +65,23 @@ export interface ExplainLogRateSpikesContentProps { export const ExplainLogRateSpikesContent: FC = ({ dataView, setGlobalState, - initialAnalysisStart, + initialAnalysisStart: incomingInitialAnalysisStart, timeRange, esSearchQuery = DEFAULT_SEARCH_QUERY, + stickyHistogram, barColorOverride, barHighlightColorOverride, onAnalysisCompleted, }) => { const [windowParameters, setWindowParameters] = useState(); + const [initialAnalysisStart, setInitialAnalysisStart] = useState< + number | WindowParameters | undefined + >(incomingInitialAnalysisStart); + const [isBrushCleared, setIsBrushCleared] = useState(true); + + useEffect(() => { + setIsBrushCleared(windowParameters === undefined); + }, [windowParameters]); const { currentSelectedSignificantTerm, @@ -95,95 +106,87 @@ export const ExplainLogRateSpikesContent: FC = const { sampleProbability, totalCount, documentCountStats, documentCountStatsCompare } = documentStats; + function brushSelectionUpdate(d: WindowParameters, force: boolean) { + if (!isBrushCleared || force) { + setWindowParameters(d); + } + if (force) { + setIsBrushCleared(false); + } + } + function clearSelection() { setWindowParameters(undefined); setPinnedSignificantTerm(null); setPinnedGroup(null); setSelectedSignificantTerm(null); setSelectedGroup(null); + setIsBrushCleared(true); + setInitialAnalysisStart(undefined); } - // Note: Temporarily removed height and disabled sticky histogram until we can fix the scrolling issue in a follow up + return ( - - {(EuiResizablePanel, EuiResizableButton) => ( - <> - - {documentCountStats !== undefined && ( - - )} - - - {/* */} - - {earliest !== undefined && latest !== undefined && windowParameters !== undefined && ( - + {documentCountStats !== undefined && ( + + )} + + {earliest !== undefined && latest !== undefined && windowParameters !== undefined && ( + + )} + {windowParameters === undefined && ( + + - )} - {windowParameters === undefined && ( - - - - } - titleSize="xs" - body={ -

- -

- } - data-test-subj="aiopsNoWindowParametersEmptyPrompt" + + } + titleSize="xs" + body={ +

+ - )} - - +

+ } + data-test-subj="aiopsNoWindowParametersEmptyPrompt" + /> )} -
+ ); }; diff --git a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_content/explain_log_rate_spikes_content_wrapper.tsx b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_content/explain_log_rate_spikes_content_wrapper.tsx index 8f7122d3f8cc7..49409ecfd8dd1 100644 --- a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_content/explain_log_rate_spikes_content_wrapper.tsx +++ b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_content/explain_log_rate_spikes_content_wrapper.tsx @@ -27,16 +27,16 @@ import { DataSourceContext } from '../../../hooks/use_data_source'; import { AIOPS_STORAGE_KEYS } from '../../../types/storage'; import { SpikeAnalysisTableRowStateProvider } from '../../spike_analysis_table/spike_analysis_table_row_provider'; - -import type { ExplainLogRateSpikesAnalysisResults } from '../explain_log_rate_spikes_analysis'; - import { ExplainLogRateSpikesContent } from './explain_log_rate_spikes_content'; +import type { ExplainLogRateSpikesAnalysisResults } from '../explain_log_rate_spikes_analysis'; const localStorage = new Storage(window.localStorage); export interface ExplainLogRateSpikesContentWrapperProps { /** The data view to analyze. */ dataView: DataView; + /** Option to make main histogram sticky */ + stickyHistogram?: boolean; /** App dependencies */ appDependencies: AiopsAppDependencies; /** On global timefilter update */ @@ -61,6 +61,7 @@ export const ExplainLogRateSpikesContentWrapper: FC { +export const ExplainLogRateSpikesPage: FC = ({ stickyHistogram }) => { const { data: dataService } = useAiopsAppContext(); const { dataView, savedSearch } = useDataSource(); @@ -147,6 +150,7 @@ export const ExplainLogRateSpikesPage: FC = () => { dataView={dataView} setGlobalState={setGlobalState} esSearchQuery={searchQuery} + stickyHistogram={stickyHistogram} />
diff --git a/x-pack/plugins/ml/public/application/aiops/explain_log_rate_spikes.tsx b/x-pack/plugins/ml/public/application/aiops/explain_log_rate_spikes.tsx index 72400574ef44d..afdc648ac4918 100644 --- a/x-pack/plugins/ml/public/application/aiops/explain_log_rate_spikes.tsx +++ b/x-pack/plugins/ml/public/application/aiops/explain_log_rate_spikes.tsx @@ -39,6 +39,8 @@ export const ExplainLogRateSpikesPage: FC = () => { {dataView && ( Date: Thu, 15 Jun 2023 15:31:34 +0200 Subject: [PATCH 06/59] content management - event annotations (#159692) --- .../common/content_management/cm_services.ts | 21 ++ .../common/content_management/constants.ts | 11 + .../common/content_management/index.ts | 32 ++ .../common/content_management/latest.ts | 9 + .../common/content_management/types.ts | 9 + .../content_management/v1/cm_services.ts | 141 ++++++++ .../common/content_management/v1/index.ts | 27 ++ .../common/content_management/v1/types.ts | 125 +++++++ src/plugins/event_annotation/common/index.ts | 1 + src/plugins/event_annotation/kibana.jsonc | 3 +- .../public/event_annotation_service/index.tsx | 10 +- .../event_annotation_service/service.test.ts | 95 +++-- .../event_annotation_service/service.tsx | 111 ++++-- src/plugins/event_annotation/public/mocks.ts | 9 + src/plugins/event_annotation/public/plugin.ts | 24 +- .../event_annotation_group_storage.ts | 324 ++++++++++++++++++ .../server/content_management/index.ts | 9 + src/plugins/event_annotation/server/plugin.ts | 12 + .../event_annotation/server/saved_objects.ts | 5 +- src/plugins/event_annotation/tsconfig.json | 5 + 20 files changed, 899 insertions(+), 84 deletions(-) create mode 100644 src/plugins/event_annotation/common/content_management/cm_services.ts create mode 100644 src/plugins/event_annotation/common/content_management/constants.ts create mode 100644 src/plugins/event_annotation/common/content_management/index.ts create mode 100644 src/plugins/event_annotation/common/content_management/latest.ts create mode 100644 src/plugins/event_annotation/common/content_management/types.ts create mode 100644 src/plugins/event_annotation/common/content_management/v1/cm_services.ts create mode 100644 src/plugins/event_annotation/common/content_management/v1/index.ts create mode 100644 src/plugins/event_annotation/common/content_management/v1/types.ts create mode 100644 src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts create mode 100644 src/plugins/event_annotation/server/content_management/index.ts diff --git a/src/plugins/event_annotation/common/content_management/cm_services.ts b/src/plugins/event_annotation/common/content_management/cm_services.ts new file mode 100644 index 0000000000000..fa050138b35ff --- /dev/null +++ b/src/plugins/event_annotation/common/content_management/cm_services.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { + ContentManagementServicesDefinition as ServicesDefinition, + Version, +} from '@kbn/object-versioning'; + +// We export the versioned service definition from this file and not the barrel to avoid adding +// the schemas in the "public" js bundle + +import { serviceDefinition as v1 } from './v1/cm_services'; + +export const cmServicesDefinition: { [version: Version]: ServicesDefinition } = { + 1: v1, +}; diff --git a/src/plugins/event_annotation/common/content_management/constants.ts b/src/plugins/event_annotation/common/content_management/constants.ts new file mode 100644 index 0000000000000..45d44ab06145a --- /dev/null +++ b/src/plugins/event_annotation/common/content_management/constants.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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export const LATEST_VERSION = 1; + +export const CONTENT_ID = 'event-annotation-group'; diff --git a/src/plugins/event_annotation/common/content_management/index.ts b/src/plugins/event_annotation/common/content_management/index.ts new file mode 100644 index 0000000000000..821ff93f903d3 --- /dev/null +++ b/src/plugins/event_annotation/common/content_management/index.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { LATEST_VERSION, CONTENT_ID } from './constants'; + +export type { EventAnnotationGroupContentType } from './types'; + +export type { + EventAnnotationGroupSavedObject, + PartialEventAnnotationGroupSavedObject, + EventAnnotationGroupSavedObjectAttributes, + EventAnnotationGroupGetIn, + EventAnnotationGroupGetOut, + EventAnnotationGroupCreateIn, + EventAnnotationGroupCreateOut, + CreateOptions, + EventAnnotationGroupUpdateIn, + EventAnnotationGroupUpdateOut, + UpdateOptions, + EventAnnotationGroupDeleteIn, + EventAnnotationGroupDeleteOut, + EventAnnotationGroupSearchIn, + EventAnnotationGroupSearchOut, + EventAnnotationGroupSearchQuery, +} from './latest'; + +export * as EventAnnotationGroupV1 from './v1'; diff --git a/src/plugins/event_annotation/common/content_management/latest.ts b/src/plugins/event_annotation/common/content_management/latest.ts new file mode 100644 index 0000000000000..e9c79f0f50f93 --- /dev/null +++ b/src/plugins/event_annotation/common/content_management/latest.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './v1'; diff --git a/src/plugins/event_annotation/common/content_management/types.ts b/src/plugins/event_annotation/common/content_management/types.ts new file mode 100644 index 0000000000000..922a1977fff12 --- /dev/null +++ b/src/plugins/event_annotation/common/content_management/types.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type EventAnnotationGroupContentType = 'event-annotation-group'; diff --git a/src/plugins/event_annotation/common/content_management/v1/cm_services.ts b/src/plugins/event_annotation/common/content_management/v1/cm_services.ts new file mode 100644 index 0000000000000..44991124e472b --- /dev/null +++ b/src/plugins/event_annotation/common/content_management/v1/cm_services.ts @@ -0,0 +1,141 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { schema } from '@kbn/config-schema'; +import type { ContentManagementServicesDefinition as ServicesDefinition } from '@kbn/object-versioning'; + +const apiError = schema.object({ + error: schema.string(), + message: schema.string(), + statusCode: schema.number(), + metadata: schema.object({}, { unknowns: 'allow' }), +}); + +const referenceSchema = schema.object( + { + name: schema.maybe(schema.string()), + type: schema.string(), + id: schema.string(), + }, + { unknowns: 'forbid' } +); + +const referencesSchema = schema.arrayOf(referenceSchema); + +const eventAnnotationGroupAttributesSchema = schema.object( + { + title: schema.string(), + description: schema.maybe(schema.string()), + ignoreGlobalFilters: schema.boolean(), + annotations: schema.arrayOf(schema.any()), + dataViewSpec: schema.maybe(schema.any()), + }, + { unknowns: 'forbid' } +); + +const eventAnnotationGroupSavedObjectSchema = schema.object( + { + id: schema.string(), + type: schema.string(), + version: schema.maybe(schema.string()), + createdAt: schema.maybe(schema.string()), + updatedAt: schema.maybe(schema.string()), + error: schema.maybe(apiError), + attributes: eventAnnotationGroupAttributesSchema, + references: referencesSchema, + namespaces: schema.maybe(schema.arrayOf(schema.string())), + originId: schema.maybe(schema.string()), + }, + { unknowns: 'allow' } +); + +const getResultSchema = schema.object( + { + item: eventAnnotationGroupSavedObjectSchema, + meta: schema.object( + { + outcome: schema.oneOf([ + schema.literal('exactMatch'), + schema.literal('aliasMatch'), + schema.literal('conflict'), + ]), + aliasTargetId: schema.maybe(schema.string()), + aliasPurpose: schema.maybe( + schema.oneOf([ + schema.literal('savedObjectConversion'), + schema.literal('savedObjectImport'), + ]) + ), + }, + { unknowns: 'forbid' } + ), + }, + { unknowns: 'forbid' } +); + +const createOptionsSchema = schema.object({ + overwrite: schema.maybe(schema.boolean()), + references: schema.maybe(referencesSchema), +}); + +// Content management service definition. +// We need it for BWC support between different versions of the content +export const serviceDefinition: ServicesDefinition = { + get: { + out: { + result: { + schema: getResultSchema, + }, + }, + }, + create: { + in: { + options: { + schema: createOptionsSchema, + }, + data: { + schema: eventAnnotationGroupAttributesSchema, + }, + }, + out: { + result: { + schema: schema.object( + { + item: eventAnnotationGroupSavedObjectSchema, + }, + { unknowns: 'forbid' } + ), + }, + }, + }, + update: { + in: { + options: { + schema: createOptionsSchema, // same schema as "create" + }, + data: { + schema: eventAnnotationGroupAttributesSchema, + }, + }, + }, + search: { + in: { + options: { + schema: schema.maybe( + schema.object( + { + searchFields: schema.maybe(schema.arrayOf(schema.string())), + types: schema.maybe(schema.arrayOf(schema.string())), + }, + { unknowns: 'forbid' } + ) + ), + }, + }, + }, +}; diff --git a/src/plugins/event_annotation/common/content_management/v1/index.ts b/src/plugins/event_annotation/common/content_management/v1/index.ts new file mode 100644 index 0000000000000..d05d743a199a8 --- /dev/null +++ b/src/plugins/event_annotation/common/content_management/v1/index.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { + EventAnnotationGroupSavedObject as EventAnnotationGroupSavedObject, + PartialEventAnnotationGroupSavedObject, + EventAnnotationGroupSavedObjectAttributes, + EventAnnotationGroupGetIn, + EventAnnotationGroupGetOut, + EventAnnotationGroupCreateIn, + EventAnnotationGroupCreateOut, + CreateOptions, + EventAnnotationGroupUpdateIn, + EventAnnotationGroupUpdateOut, + UpdateOptions, + EventAnnotationGroupDeleteIn, + EventAnnotationGroupDeleteOut, + EventAnnotationGroupSearchIn, + EventAnnotationGroupSearchOut, + EventAnnotationGroupSearchQuery, + Reference, +} from './types'; diff --git a/src/plugins/event_annotation/common/content_management/v1/types.ts b/src/plugins/event_annotation/common/content_management/v1/types.ts new file mode 100644 index 0000000000000..a5c2306100821 --- /dev/null +++ b/src/plugins/event_annotation/common/content_management/v1/types.ts @@ -0,0 +1,125 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { + GetIn, + CreateIn, + SearchIn, + UpdateIn, + DeleteIn, + DeleteResult, + SearchResult, + GetResult, + CreateResult, + UpdateResult, +} from '@kbn/content-management-plugin/common'; + +import type { DataViewSpec } from '@kbn/data-views-plugin/common'; +import { EventAnnotationGroupContentType } from '../types'; +import { EventAnnotationConfig } from '../../types'; + +export interface Reference { + type: string; + id: string; + name: string; +} + +export interface EventAnnotationGroupSavedObjectAttributes { + title: string; + description: string; + ignoreGlobalFilters: boolean; + annotations: EventAnnotationConfig[]; + dataViewSpec?: DataViewSpec; +} + +export interface EventAnnotationGroupSavedObject { + id: string; + type: string; + version?: string; + updatedAt?: string; + createdAt?: string; + attributes: EventAnnotationGroupSavedObjectAttributes; + references: Reference[]; + namespaces?: string[]; + originId?: string; + error?: { + error: string; + message: string; + statusCode: number; + metadata?: Record; + }; +} + +export type PartialEventAnnotationGroupSavedObject = Omit< + EventAnnotationGroupSavedObject, + 'attributes' | 'references' +> & { + attributes: Partial; + references: Reference[] | undefined; +}; +// ----------- GET -------------- + +export type EventAnnotationGroupGetIn = GetIn; + +export type EventAnnotationGroupGetOut = GetResult< + EventAnnotationGroupSavedObject, + { + outcome: 'exactMatch' | 'aliasMatch' | 'conflict'; + aliasTargetId?: string; + aliasPurpose?: 'savedObjectConversion' | 'savedObjectImport'; + } +>; + +// ----------- CREATE -------------- + +export interface CreateOptions { + /** If a document with the given `id` already exists, overwrite it's contents (default=false). */ + overwrite?: boolean; + /** Array of referenced saved objects. */ + references?: Reference[]; +} + +export type EventAnnotationGroupCreateIn = CreateIn< + EventAnnotationGroupContentType, + EventAnnotationGroupSavedObjectAttributes, + CreateOptions +>; + +export type EventAnnotationGroupCreateOut = CreateResult; + +// ----------- UPDATE -------------- + +export interface UpdateOptions { + /** Array of referenced saved objects. */ + references?: Reference[]; +} + +export type EventAnnotationGroupUpdateIn = UpdateIn< + EventAnnotationGroupContentType, + EventAnnotationGroupSavedObjectAttributes, + UpdateOptions +>; + +export type EventAnnotationGroupUpdateOut = UpdateResult; + +// ----------- DELETE -------------- + +export type EventAnnotationGroupDeleteIn = DeleteIn; + +export type EventAnnotationGroupDeleteOut = DeleteResult; + +// ----------- SEARCH -------------- + +export interface EventAnnotationGroupSearchQuery { + types?: string[]; + searchFields?: string[]; +} + +export type EventAnnotationGroupSearchIn = SearchIn; + +export type EventAnnotationGroupSearchOut = SearchResult; diff --git a/src/plugins/event_annotation/common/index.ts b/src/plugins/event_annotation/common/index.ts index 0341a9e5ed4a2..e0d773b4c996e 100644 --- a/src/plugins/event_annotation/common/index.ts +++ b/src/plugins/event_annotation/common/index.ts @@ -44,4 +44,5 @@ export type { EventAnnotationGroupAttributes, } from './types'; +export type { EventAnnotationGroupSavedObjectAttributes } from './content_management'; export { EVENT_ANNOTATION_GROUP_TYPE, ANNOTATIONS_LISTING_VIEW_ID } from './constants'; diff --git a/src/plugins/event_annotation/kibana.jsonc b/src/plugins/event_annotation/kibana.jsonc index 1099c467d502f..17f62e739e6c4 100644 --- a/src/plugins/event_annotation/kibana.jsonc +++ b/src/plugins/event_annotation/kibana.jsonc @@ -16,7 +16,8 @@ "dataViews", "unifiedSearch", "kibanaUtils", - "visualizationUiComponents" + "visualizationUiComponents", + "contentManagement" ], "optionalPlugins": [ "savedObjectsTagging", diff --git a/src/plugins/event_annotation/public/event_annotation_service/index.tsx b/src/plugins/event_annotation/public/event_annotation_service/index.tsx index 18ef89681d621..5e509ac857218 100644 --- a/src/plugins/event_annotation/public/event_annotation_service/index.tsx +++ b/src/plugins/event_annotation/public/event_annotation_service/index.tsx @@ -8,6 +8,7 @@ import { CoreStart } from '@kbn/core/public'; import { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; +import { ContentManagementPublicStart } from '@kbn/content-management-plugin/public'; import { EventAnnotationServiceType } from './types'; export class EventAnnotationService { @@ -15,9 +16,15 @@ export class EventAnnotationService { private core: CoreStart; private savedObjectsManagement: SavedObjectsManagementPluginStart; + private contentManagement: ContentManagementPublicStart; - constructor(core: CoreStart, savedObjectsManagement: SavedObjectsManagementPluginStart) { + constructor( + core: CoreStart, + contentManagement: ContentManagementPublicStart, + savedObjectsManagement: SavedObjectsManagementPluginStart + ) { this.core = core; + this.contentManagement = contentManagement; this.savedObjectsManagement = savedObjectsManagement; } @@ -26,6 +33,7 @@ export class EventAnnotationService { const { getEventAnnotationService } = await import('./service'); this.eventAnnotationService = getEventAnnotationService( this.core, + this.contentManagement, this.savedObjectsManagement ); } diff --git a/src/plugins/event_annotation/public/event_annotation_service/service.test.ts b/src/plugins/event_annotation/public/event_annotation_service/service.test.ts index 905435bc4f4d0..b446e454636b4 100644 --- a/src/plugins/event_annotation/public/event_annotation_service/service.test.ts +++ b/src/plugins/event_annotation/public/event_annotation_service/service.test.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { SavedObjectsFindResponse } from '@kbn/core-saved-objects-api-browser'; import { CoreStart, SimpleSavedObject } from '@kbn/core/public'; +import { ContentClient, ContentManagementPublicStart } from '@kbn/content-management-plugin/public'; import { coreMock } from '@kbn/core/public/mocks'; import { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; import { EventAnnotationConfig, EventAnnotationGroupAttributes } from '../../common'; @@ -131,28 +131,35 @@ const annotationResolveMocks = { }, }; +const contentClient = { + get: jest.fn(), + search: jest.fn(), + create: jest.fn(), + update: jest.fn(), + delete: jest.fn(), +} as unknown as ContentClient; + let core: CoreStart; describe('Event Annotation Service', () => { let eventAnnotationService: EventAnnotationServiceType; beforeEach(() => { core = coreMock.createStart(); - (core.savedObjects.client.create as jest.Mock).mockImplementation(() => { - return annotationGroupResolveMocks.multiAnnotations; + (contentClient.create as jest.Mock).mockImplementation(() => { + return { item: annotationGroupResolveMocks.multiAnnotations }; }); - (core.savedObjects.client.get as jest.Mock).mockImplementation((_type, id) => { + (contentClient.get as jest.Mock).mockImplementation(({ contentTypeId, id }) => { const typedId = id as keyof typeof annotationGroupResolveMocks; - return annotationGroupResolveMocks[typedId]; + return { item: annotationGroupResolveMocks[typedId] }; }); - (core.savedObjects.client.find as jest.Mock).mockResolvedValue({ - total: 10, - savedObjects: Object.values(annotationGroupResolveMocks), - } as Pick, 'total' | 'savedObjects'>); - (core.savedObjects.client.bulkCreate as jest.Mock).mockImplementation(() => { - return annotationResolveMocks.multiAnnotations; + (contentClient.search as jest.Mock).mockResolvedValue({ + pagination: { total: 10 }, + hits: Object.values(annotationGroupResolveMocks), }); + (contentClient.delete as jest.Mock).mockResolvedValue({}); eventAnnotationService = getEventAnnotationService( core, + { client: contentClient } as ContentManagementPublicStart, {} as SavedObjectsManagementPluginStart ); }); @@ -512,28 +519,14 @@ describe('Event Annotation Service', () => { expect(content).toMatchSnapshot(); - expect((core.savedObjects.client.find as jest.Mock).mock.calls).toMatchInlineSnapshot(` + expect((contentClient.search as jest.Mock).mock.calls).toMatchInlineSnapshot(` Array [ Array [ Object { - "defaultSearchOperator": "AND", - "hasNoReference": undefined, - "hasReference": Array [ - Object { - "id": "1234", - "type": "mytype", - }, - ], - "page": 1, - "perPage": 20, - "search": "my search*", - "searchFields": Array [ - "title^3", - "description", - ], - "type": Array [ - "event-annotation-group", - ], + "contentTypeId": "event-annotation-group", + "query": Object { + "text": "my search*", + }, }, ], ] @@ -543,10 +536,14 @@ describe('Event Annotation Service', () => { describe('deleteAnnotationGroups', () => { it('deletes annotation group along with annotations that reference them', async () => { await eventAnnotationService.deleteAnnotationGroups(['id1', 'id2']); - expect(core.savedObjects.client.bulkDelete).toHaveBeenCalledWith([ - { id: 'id1', type: 'event-annotation-group' }, - { id: 'id2', type: 'event-annotation-group' }, - ]); + expect(contentClient.delete).toHaveBeenCalledWith({ + id: 'id1', + contentTypeId: 'event-annotation-group', + }); + expect(contentClient.delete).toHaveBeenCalledWith({ + id: 'id2', + contentTypeId: 'event-annotation-group', + }); }); }); describe('createAnnotationGroup', () => { @@ -563,16 +560,16 @@ describe('Event Annotation Service', () => { ignoreGlobalFilters: false, annotations, }); - expect(core.savedObjects.client.create).toHaveBeenCalledWith( - 'event-annotation-group', - { + expect(contentClient.create).toHaveBeenCalledWith({ + contentTypeId: 'event-annotation-group', + data: { title: 'newGroupTitle', description: 'my description', ignoreGlobalFilters: false, - dataViewSpec: null, + dataViewSpec: undefined, annotations, }, - { + options: { references: [ { id: 'ipid', @@ -595,8 +592,8 @@ describe('Event Annotation Service', () => { type: 'tag', }, ], - } - ); + }, + }); }); }); describe('updateAnnotationGroup', () => { @@ -612,17 +609,17 @@ describe('Event Annotation Service', () => { }, 'multiAnnotations' ); - expect(core.savedObjects.client.update).toHaveBeenCalledWith( - 'event-annotation-group', - 'multiAnnotations', - { + expect(contentClient.update).toHaveBeenCalledWith({ + contentTypeId: 'event-annotation-group', + id: 'multiAnnotations', + data: { title: 'newTitle', description: '', annotations: [], - dataViewSpec: null, + dataViewSpec: undefined, ignoreGlobalFilters: false, } as EventAnnotationGroupAttributes, - { + options: { references: [ { id: 'newId', @@ -630,8 +627,8 @@ describe('Event Annotation Service', () => { type: 'index-pattern', }, ], - } - ); + }, + }); }); }); }); diff --git a/src/plugins/event_annotation/public/event_annotation_service/service.tsx b/src/plugins/event_annotation/public/event_annotation_service/service.tsx index 65c2b9146df1c..724b1093145fc 100644 --- a/src/plugins/event_annotation/public/event_annotation_service/service.tsx +++ b/src/plugins/event_annotation/public/event_annotation_service/service.tsx @@ -13,18 +13,16 @@ import { ExpressionAstExpression } from '@kbn/expressions-plugin/common'; import { CoreStart, SavedObjectReference, - SavedObjectsClientContract, SavedObjectsFindOptions, SavedObjectsFindOptionsReference, - SimpleSavedObject, } from '@kbn/core/public'; import { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; import { DataViewPersistableStateService } from '@kbn/data-views-plugin/common'; +import { ContentManagementPublicStart } from '@kbn/content-management-plugin/public'; import { defaultAnnotationLabel } from '../../common/manual_event_annotation'; import { EventAnnotationGroupContent } from '../../common/types'; import { EventAnnotationConfig, - EventAnnotationGroupAttributes, EventAnnotationGroupConfig, EVENT_ANNOTATION_GROUP_TYPE, } from '../../common'; @@ -36,6 +34,20 @@ import { isQueryAnnotationConfig, } from './helpers'; import { EventAnnotationGroupSavedObjectFinder } from '../components/event_annotation_group_saved_object_finder'; +import { + EventAnnotationGroupCreateIn, + EventAnnotationGroupCreateOut, + EventAnnotationGroupDeleteIn, + EventAnnotationGroupDeleteOut, + EventAnnotationGroupGetIn, + EventAnnotationGroupGetOut, + EventAnnotationGroupSavedObject, + EventAnnotationGroupSavedObjectAttributes, + EventAnnotationGroupSearchIn, + EventAnnotationGroupSearchOut, + EventAnnotationGroupUpdateIn, + EventAnnotationGroupUpdateOut, +} from '../../common/content_management'; export function hasIcon(icon: string | undefined): icon is string { return icon != null && icon !== 'empty'; @@ -43,12 +55,13 @@ export function hasIcon(icon: string | undefined): icon is string { export function getEventAnnotationService( core: CoreStart, + contentManagement: ContentManagementPublicStart, savedObjectsManagement: SavedObjectsManagementPluginStart ): EventAnnotationServiceType { - const client: SavedObjectsClientContract = core.savedObjects.client; + const client = contentManagement.client; const mapSavedObjectToGroupConfig = ( - savedObject: SimpleSavedObject + savedObject: EventAnnotationGroupSavedObject ): EventAnnotationGroupConfig => { const adHocDataViewSpec = savedObject.attributes.dataViewSpec ? DataViewPersistableStateService.inject( @@ -71,7 +84,7 @@ export function getEventAnnotationService( }; const mapSavedObjectToGroupContent = ( - savedObject: SimpleSavedObject + savedObject: EventAnnotationGroupSavedObject ): EventAnnotationGroupContent => { const groupConfig = mapSavedObjectToGroupConfig(savedObject); @@ -92,16 +105,16 @@ export function getEventAnnotationService( const loadAnnotationGroup = async ( savedObjectId: string ): Promise => { - const savedObject = await client.get( - EVENT_ANNOTATION_GROUP_TYPE, - savedObjectId - ); + const savedObject = await client.get({ + contentTypeId: EVENT_ANNOTATION_GROUP_TYPE, + id: savedObjectId, + }); - if (savedObject.error) { - throw savedObject.error; + if (savedObject.item.error) { + throw savedObject.item.error; } - return mapSavedObjectToGroupConfig(savedObject); + return mapSavedObjectToGroupConfig(savedObject.item); }; const findAnnotationGroupContent = async ( @@ -121,18 +134,29 @@ export function getEventAnnotationService( hasNoReference: referencesToExclude, }; - const { total, savedObjects } = await client.find( - searchOptions - ); + const { pagination, hits } = await client.search< + EventAnnotationGroupSearchIn, + EventAnnotationGroupSearchOut + >({ + contentTypeId: EVENT_ANNOTATION_GROUP_TYPE, + query: { + text: searchOptions.search, + }, + }); return { - total, - hits: savedObjects.map(mapSavedObjectToGroupContent), + total: pagination.total, + hits: hits.map(mapSavedObjectToGroupContent), }; }; const deleteAnnotationGroups = async (ids: string[]): Promise => { - await client.bulkDelete([...ids.map((id) => ({ type: EVENT_ANNOTATION_GROUP_TYPE, id }))]); + for (const id of ids) { + await client.delete({ + contentTypeId: EVENT_ANNOTATION_GROUP_TYPE, + id, + }); + } }; const extractDataViewInformation = (group: EventAnnotationGroupConfig) => { @@ -165,7 +189,10 @@ export function getEventAnnotationService( const getAnnotationGroupAttributesAndReferences = ( group: EventAnnotationGroupConfig - ): { attributes: EventAnnotationGroupAttributes; references: SavedObjectReference[] } => { + ): { + attributes: EventAnnotationGroupSavedObjectAttributes; + references: SavedObjectReference[]; + } => { const { references, dataViewSpec } = extractDataViewInformation(group); const { title, description, tags, ignoreGlobalFilters, annotations } = group; @@ -178,7 +205,13 @@ export function getEventAnnotationService( ); return { - attributes: { title, description, ignoreGlobalFilters, annotations, dataViewSpec }, + attributes: { + title, + description, + ignoreGlobalFilters, + annotations, + dataViewSpec: dataViewSpec || undefined, + }, references, }; }; @@ -189,10 +222,16 @@ export function getEventAnnotationService( const { attributes, references } = getAnnotationGroupAttributesAndReferences(group); const groupSavedObjectId = ( - await client.create(EVENT_ANNOTATION_GROUP_TYPE, attributes, { - references, + await client.create({ + contentTypeId: EVENT_ANNOTATION_GROUP_TYPE, + data: { + ...attributes, + }, + options: { + references, + }, }) - ).id; + ).item.id; return { id: groupSavedObjectId }; }; @@ -203,18 +242,30 @@ export function getEventAnnotationService( ): Promise => { const { attributes, references } = getAnnotationGroupAttributesAndReferences(group); - await client.update(EVENT_ANNOTATION_GROUP_TYPE, annotationGroupId, attributes, { - references, + await client.update({ + contentTypeId: EVENT_ANNOTATION_GROUP_TYPE, + id: annotationGroupId, + data: { + ...attributes, + }, + options: { + references, + }, }); }; const checkHasAnnotationGroups = async (): Promise => { - const response = await client.find({ - type: EVENT_ANNOTATION_GROUP_TYPE, - perPage: 0, + const response = await client.search< + EventAnnotationGroupSearchIn, + EventAnnotationGroupSearchOut + >({ + contentTypeId: EVENT_ANNOTATION_GROUP_TYPE, + query: { + text: '*', + }, }); - return response.total > 0; + return response.pagination.total > 0; }; return { diff --git a/src/plugins/event_annotation/public/mocks.ts b/src/plugins/event_annotation/public/mocks.ts index 100b5d3f1c3e2..f0e4dc34b876c 100644 --- a/src/plugins/event_annotation/public/mocks.ts +++ b/src/plugins/event_annotation/public/mocks.ts @@ -8,10 +8,19 @@ import { coreMock } from '@kbn/core/public/mocks'; import { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; +import { ContentManagementPublicStart } from '@kbn/content-management-plugin/public'; import { getEventAnnotationService } from './event_annotation_service/service'; // not really mocking but avoiding async loading export const eventAnnotationServiceMock = getEventAnnotationService( coreMock.createStart(), + { + client: { + get: jest.fn(), + search: jest.fn(), + create: jest.fn(), + update: jest.fn(), + }, + } as unknown as ContentManagementPublicStart, {} as SavedObjectsManagementPluginStart ); diff --git a/src/plugins/event_annotation/public/plugin.ts b/src/plugins/event_annotation/public/plugin.ts index 576f8a3b2a8f0..b58423b790b3d 100644 --- a/src/plugins/event_annotation/public/plugin.ts +++ b/src/plugins/event_annotation/public/plugin.ts @@ -12,6 +12,10 @@ import type { SavedObjectTaggingPluginStart } from '@kbn/saved-objects-tagging-p import type { ExpressionsSetup } from '@kbn/expressions-plugin/public'; import { Storage } from '@kbn/kibana-utils-plugin/public'; import type { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; +import { + ContentManagementPublicSetup, + ContentManagementPublicStart, +} from '@kbn/content-management-plugin/public'; import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public/types'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { VisualizationsSetup } from '@kbn/visualizations-plugin/public'; @@ -27,6 +31,7 @@ import { import { getFetchEventAnnotations } from './fetch_event_annotations'; import type { EventAnnotationListingPageServices } from './get_table_list'; import { ANNOTATIONS_LISTING_VIEW_ID } from '../common/constants'; +import { CONTENT_ID, LATEST_VERSION } from '../common/content_management'; export interface EventAnnotationStartDependencies { savedObjectsManagement: SavedObjectsManagementPluginStart; @@ -35,11 +40,13 @@ export interface EventAnnotationStartDependencies { presentationUtil: PresentationUtilPluginStart; dataViews: DataViewsPublicPluginStart; unifiedSearch: UnifiedSearchPublicPluginStart; + contentManagement: ContentManagementPublicStart; } interface SetupDependencies { expressions: ExpressionsSetup; visualizations: VisualizationsSetup; + contentManagement: ContentManagementPublicSetup; } /** @public */ @@ -62,6 +69,16 @@ export class EventAnnotationPlugin getFetchEventAnnotations({ getStartServices: core.getStartServices }) ); + dependencies.contentManagement.registry.register({ + id: CONTENT_ID, + version: { + latest: LATEST_VERSION, + }, + name: i18n.translate('eventAnnotation.content.name', { + defaultMessage: 'Annotation group', + }), + }); + dependencies.visualizations.listingViewRegistry.add({ title: i18n.translate('eventAnnotation.listingViewTitle', { defaultMessage: 'Annotation groups', @@ -72,6 +89,7 @@ export class EventAnnotationPlugin const eventAnnotationService = await new EventAnnotationService( coreStart, + pluginsStart.contentManagement, pluginsStart.savedObjectsManagement ).getService(); @@ -107,6 +125,10 @@ export class EventAnnotationPlugin core: CoreStart, startDependencies: EventAnnotationStartDependencies ): EventAnnotationService { - return new EventAnnotationService(core, startDependencies.savedObjectsManagement); + return new EventAnnotationService( + core, + startDependencies.contentManagement, + startDependencies.savedObjectsManagement + ); } } diff --git a/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts b/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts new file mode 100644 index 0000000000000..ce032374e7b53 --- /dev/null +++ b/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts @@ -0,0 +1,324 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import Boom from '@hapi/boom'; +import type { SearchQuery } from '@kbn/content-management-plugin/common'; +import type { ContentStorage, StorageContext } from '@kbn/content-management-plugin/server'; +import type { + SavedObject, + SavedObjectReference, + SavedObjectsFindOptions, +} from '@kbn/core-saved-objects-api-server'; + +import { EVENT_ANNOTATION_GROUP_TYPE } from '../../common'; +import { cmServicesDefinition } from '../../common/content_management/cm_services'; +import type { + EventAnnotationGroupSavedObjectAttributes, + EventAnnotationGroupSavedObject, + PartialEventAnnotationGroupSavedObject, + EventAnnotationGroupGetOut, + EventAnnotationGroupCreateIn, + EventAnnotationGroupCreateOut, + CreateOptions, + EventAnnotationGroupUpdateIn, + EventAnnotationGroupUpdateOut, + UpdateOptions, + EventAnnotationGroupDeleteOut, + EventAnnotationGroupSearchQuery, + EventAnnotationGroupSearchOut, +} from '../../common/content_management'; + +const savedObjectClientFromRequest = async (ctx: StorageContext) => { + if (!ctx.requestHandlerContext) { + throw new Error('Storage context.requestHandlerContext missing.'); + } + + const { savedObjects } = await ctx.requestHandlerContext.core; + return savedObjects.client; +}; + +type PartialSavedObject = Omit>, 'references'> & { + references: SavedObjectReference[] | undefined; +}; + +function savedObjectToEventAnnotationGroupSavedObject( + savedObject: SavedObject, + partial: false +): EventAnnotationGroupSavedObject; + +function savedObjectToEventAnnotationGroupSavedObject( + savedObject: PartialSavedObject, + partial: true +): PartialEventAnnotationGroupSavedObject; + +function savedObjectToEventAnnotationGroupSavedObject( + savedObject: + | SavedObject + | PartialSavedObject +): EventAnnotationGroupSavedObject | PartialEventAnnotationGroupSavedObject { + const { + id, + type, + updated_at: updatedAt, + created_at: createdAt, + attributes: { title, description, annotations, ignoreGlobalFilters, dataViewSpec }, + references, + error, + namespaces, + } = savedObject; + + return { + id, + type, + updatedAt, + createdAt, + attributes: { + title, + description, + annotations, + ignoreGlobalFilters, + dataViewSpec, + }, + references, + error, + namespaces, + }; +} + +const SO_TYPE = EVENT_ANNOTATION_GROUP_TYPE; + +export class EventAnnotationGroupStorage + implements + ContentStorage +{ + constructor() {} + + async get(ctx: StorageContext, id: string): Promise { + const { + utils: { getTransforms }, + version: { request: requestVersion }, + } = ctx; + const transforms = getTransforms(cmServicesDefinition, requestVersion); + const soClient = await savedObjectClientFromRequest(ctx); + + // Save data in DB + const { + saved_object: savedObject, + alias_purpose: aliasPurpose, + alias_target_id: aliasTargetId, + outcome, + } = await soClient.resolve(SO_TYPE, id); + + const response: EventAnnotationGroupGetOut = { + item: savedObjectToEventAnnotationGroupSavedObject(savedObject, false), + meta: { + aliasPurpose, + aliasTargetId, + outcome, + }, + }; + + // Validate DB response and DOWN transform to the request version + const { value, error: resultError } = transforms.get.out.result.down< + EventAnnotationGroupGetOut, + EventAnnotationGroupGetOut + >(response); + + if (resultError) { + throw Boom.badRequest(`Invalid response. ${resultError.message}`); + } + + return value; + } + + async bulkGet(): Promise { + // Not implemented. EventAnnotationGroup does not use bulkGet + throw new Error(`[bulkGet] has not been implemented. See EventAnnotationGroupStorage class.`); + } + + async create( + ctx: StorageContext, + data: EventAnnotationGroupCreateIn['data'], + options: CreateOptions + ): Promise { + const { + utils: { getTransforms }, + version: { request: requestVersion }, + } = ctx; + const transforms = getTransforms(cmServicesDefinition, requestVersion); + + // Validate input (data & options) & UP transform them to the latest version + const { value: dataToLatest, error: dataError } = transforms.create.in.data.up< + EventAnnotationGroupSavedObjectAttributes, + EventAnnotationGroupSavedObjectAttributes + >(data); + if (dataError) { + throw Boom.badRequest(`Invalid data. ${dataError.message}`); + } + + const { value: optionsToLatest, error: optionsError } = transforms.create.in.options.up< + CreateOptions, + CreateOptions + >(options); + if (optionsError) { + throw Boom.badRequest(`Invalid options. ${optionsError.message}`); + } + + // Save data in DB + const soClient = await savedObjectClientFromRequest(ctx); + const savedObject = await soClient.create( + SO_TYPE, + dataToLatest, + optionsToLatest + ); + + // Validate DB response and DOWN transform to the request version + const { value, error: resultError } = transforms.create.out.result.down< + EventAnnotationGroupCreateOut, + EventAnnotationGroupCreateOut + >({ + item: savedObjectToEventAnnotationGroupSavedObject(savedObject, false), + }); + + if (resultError) { + throw Boom.badRequest(`Invalid response. ${resultError.message}`); + } + + return value; + } + + async update( + ctx: StorageContext, + id: string, + data: EventAnnotationGroupUpdateIn['data'], + options: UpdateOptions + ): Promise { + const { + utils: { getTransforms }, + version: { request: requestVersion }, + } = ctx; + const transforms = getTransforms(cmServicesDefinition, requestVersion); + + // Validate input (data & options) & UP transform them to the latest version + const { value: dataToLatest, error: dataError } = transforms.update.in.data.up< + EventAnnotationGroupSavedObjectAttributes, + EventAnnotationGroupSavedObjectAttributes + >(data); + if (dataError) { + throw Boom.badRequest(`Invalid data. ${dataError.message}`); + } + + const { value: optionsToLatest, error: optionsError } = transforms.update.in.options.up< + CreateOptions, + CreateOptions + >(options); + if (optionsError) { + throw Boom.badRequest(`Invalid options. ${optionsError.message}`); + } + + // Save data in DB + const soClient = await savedObjectClientFromRequest(ctx); + const partialSavedObject = await soClient.update( + SO_TYPE, + id, + dataToLatest, + optionsToLatest + ); + + // Validate DB response and DOWN transform to the request version + const { value, error: resultError } = transforms.update.out.result.down< + EventAnnotationGroupUpdateOut, + EventAnnotationGroupUpdateOut + >({ + item: savedObjectToEventAnnotationGroupSavedObject(partialSavedObject, true), + }); + + if (resultError) { + throw Boom.badRequest(`Invalid response. ${resultError.message}`); + } + + return value; + } + + async delete(ctx: StorageContext, id: string): Promise { + const soClient = await savedObjectClientFromRequest(ctx); + await soClient.delete(SO_TYPE, id); + return { success: true }; + } + + async search( + ctx: StorageContext, + query: SearchQuery, + options: EventAnnotationGroupSearchQuery = {} + ): Promise { + const { + utils: { getTransforms }, + version: { request: requestVersion }, + } = ctx; + const transforms = getTransforms(cmServicesDefinition, requestVersion); + const soClient = await savedObjectClientFromRequest(ctx); + + // Validate and UP transform the options + const { value: optionsToLatest, error: optionsError } = transforms.search.in.options.up< + EventAnnotationGroupSearchQuery, + EventAnnotationGroupSearchQuery + >(options); + if (optionsError) { + throw Boom.badRequest(`Invalid payload. ${optionsError.message}`); + } + const { searchFields = ['title^3', 'description'], types = [SO_TYPE] } = optionsToLatest; + + const { included, excluded } = query.tags ?? {}; + const hasReference: SavedObjectsFindOptions['hasReference'] = included + ? included.map((id) => ({ + id, + type: 'tag', + })) + : undefined; + + const hasNoReference: SavedObjectsFindOptions['hasNoReference'] = excluded + ? excluded.map((id) => ({ + id, + type: 'tag', + })) + : undefined; + + const soQuery: SavedObjectsFindOptions = { + type: types, + search: query.text, + perPage: query.limit, + page: query.cursor ? Number(query.cursor) : undefined, + defaultSearchOperator: 'AND', + searchFields, + hasReference, + hasNoReference, + }; + + // Execute the query in the DB + const response = await soClient.find(soQuery); + + // Validate the response and DOWN transform to the request version + const { value, error: resultError } = transforms.search.out.result.down< + EventAnnotationGroupSearchOut, + EventAnnotationGroupSearchOut + >({ + hits: response.saved_objects.map((so) => + savedObjectToEventAnnotationGroupSavedObject(so, false) + ), + pagination: { + total: response.total, + }, + }); + + if (resultError) { + throw Boom.badRequest(`Invalid response. ${resultError.message}`); + } + + return value; + } +} diff --git a/src/plugins/event_annotation/server/content_management/index.ts b/src/plugins/event_annotation/server/content_management/index.ts new file mode 100644 index 0000000000000..6d896aa292dfa --- /dev/null +++ b/src/plugins/event_annotation/server/content_management/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { EventAnnotationGroupStorage } from './event_annotation_group_storage'; diff --git a/src/plugins/event_annotation/server/plugin.ts b/src/plugins/event_annotation/server/plugin.ts index d5e2fee433230..8cd24f8938466 100644 --- a/src/plugins/event_annotation/server/plugin.ts +++ b/src/plugins/event_annotation/server/plugin.ts @@ -9,6 +9,7 @@ import { CoreSetup, Plugin } from '@kbn/core/server'; import { ExpressionsServerSetup } from '@kbn/expressions-plugin/server'; import { PluginStart as DataPluginStart } from '@kbn/data-plugin/server'; +import { ContentManagementServerSetup } from '@kbn/content-management-plugin/server'; import { manualPointEventAnnotation, eventAnnotationGroup, @@ -16,9 +17,12 @@ import { queryPointEventAnnotation, } from '../common'; import { setupSavedObjects } from './saved_objects'; +import { EventAnnotationGroupStorage } from './content_management'; +import { CONTENT_ID, LATEST_VERSION } from '../common/content_management'; interface SetupDependencies { expressions: ExpressionsServerSetup; + contentManagement: ContentManagementServerSetup; } export interface EventAnnotationStartDependencies { data: DataPluginStart; @@ -36,6 +40,14 @@ export class EventAnnotationServerPlugin implements Plugin { setupSavedObjects(core); + dependencies.contentManagement.register({ + id: CONTENT_ID, + storage: new EventAnnotationGroupStorage(), + version: { + latest: LATEST_VERSION, + }, + }); + return {}; } diff --git a/src/plugins/event_annotation/server/saved_objects.ts b/src/plugins/event_annotation/server/saved_objects.ts index ef357aae0c546..f5b23b0bdd598 100644 --- a/src/plugins/event_annotation/server/saved_objects.ts +++ b/src/plugins/event_annotation/server/saved_objects.ts @@ -16,7 +16,7 @@ import { import { DataViewPersistableStateService } from '@kbn/data-views-plugin/common'; import { VISUALIZE_APP_NAME } from '@kbn/visualizations-plugin/common/constants'; import { ANNOTATIONS_LISTING_VIEW_ID, EVENT_ANNOTATION_GROUP_TYPE } from '../common/constants'; -import { EventAnnotationGroupAttributes } from '../common/types'; +import { EventAnnotationGroupSavedObjectAttributes } from '../common'; export function setupSavedObjects(coreSetup: CoreSetup) { coreSetup.savedObjects.registerType({ @@ -28,7 +28,8 @@ export function setupSavedObjects(coreSetup: CoreSetup) { icon: 'flag', defaultSearchField: 'title', importableAndExportable: true, - getTitle: (obj: { attributes: EventAnnotationGroupAttributes }) => obj.attributes.title, + getTitle: (obj: { attributes: EventAnnotationGroupSavedObjectAttributes }) => + obj.attributes.title, getInAppUrl: (obj: { id: string }) => ({ // TODO link to specific object path: `/app/${VISUALIZE_APP_NAME}#/${ANNOTATIONS_LISTING_VIEW_ID}`, diff --git a/src/plugins/event_annotation/tsconfig.json b/src/plugins/event_annotation/tsconfig.json index d8d9d61af2ac3..fe28ccf07262a 100644 --- a/src/plugins/event_annotation/tsconfig.json +++ b/src/plugins/event_annotation/tsconfig.json @@ -44,6 +44,11 @@ "@kbn/content-management-tabbed-table-list-view", "@kbn/core-notifications-browser", "@kbn/core-notifications-browser-mocks", + "@kbn/core-saved-objects-server", + "@kbn/object-versioning", + "@kbn/config-schema", + "@kbn/content-management-plugin", + "@kbn/core-saved-objects-api-server" ], "exclude": [ "target/**/*", From 4573874fab2d836dfada102b5b3eba16ead6810c Mon Sep 17 00:00:00 2001 From: Adam Demjen Date: Thu, 15 Jun 2023 09:49:05 -0400 Subject: [PATCH 07/59] [8.9] Add ESRE landing page placeholder and navigation (#159589) ## Summary This PR adds the ESRE landing page to the left hand nav and the hamburger menu. The page is just a placeholder for now, but it will be filled with a complete step-by-step guide in follow-up PRs. cc @julianrosado on ordering of menu items. ![Screenshot 2023-06-13 at 10 33 07](https://github.com/elastic/kibana/assets/14224983/07cbcb84-6494-44e2-a09b-fcaf4d816b5b) ![Screenshot 2023-06-13 at 10 32 56](https://github.com/elastic/kibana/assets/14224983/978ad272-3735-42ac-a3f8-20649485d687) ### Checklist Delete any items that are not applicable to this PR. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../collectors/application_usage/schema.ts | 1 + src/plugins/telemetry/schema/oss_plugins.json | 131 ++++++++++++++++++ .../enterprise_search/common/constants.ts | 16 +++ .../esre/components/esre_guide/esre_guide.tsx | 29 ++++ .../components/layout/page_template.test.tsx | 73 ++++++++++ .../esre/components/layout/page_template.tsx | 37 +++++ .../public/applications/esre/index.test.tsx | 28 ++++ .../public/applications/esre/index.tsx | 45 ++++++ .../public/applications/esre/routes.ts | 8 ++ .../kibana_chrome/generate_breadcrumbs.ts | 4 + .../shared/kibana_chrome/generate_title.ts | 3 + .../shared/kibana_chrome/index.ts | 1 + .../shared/kibana_chrome/set_chrome.tsx | 19 +++ .../applications/shared/layout/nav.test.tsx | 15 ++ .../public/applications/shared/layout/nav.tsx | 11 ++ .../enterprise_search/public/plugin.ts | 22 +++ .../enterprise_search/server/plugin.ts | 2 + .../security_and_spaces/tests/catalogue.ts | 2 + .../security_and_spaces/tests/nav_links.ts | 2 + .../spaces_only/tests/catalogue.ts | 1 + .../spaces_only/tests/nav_links.ts | 1 + 21 files changed, 451 insertions(+) create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/components/layout/page_template.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/components/layout/page_template.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/index.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/index.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/routes.ts diff --git a/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts b/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts index 73ef96c8efad4..2042b95d1c927 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts @@ -137,6 +137,7 @@ export const applicationUsageSchema = { enterpriseSearchContent: commonSchema, enterpriseSearchAnalytics: commonSchema, enterpriseSearchApplications: commonSchema, + enterpriseSearchEsre: commonSchema, elasticsearch: commonSchema, appSearch: commonSchema, workplaceSearch: commonSchema, diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index 4e23aa4d347ac..5dabe95f027b2 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -2360,6 +2360,137 @@ } } }, + "enterpriseSearchEsre": { + "properties": { + "appId": { + "type": "keyword", + "_meta": { + "description": "The application being tracked" + } + }, + "viewId": { + "type": "keyword", + "_meta": { + "description": "Always `main`" + } + }, + "clicks_total": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application since we started counting them" + } + }, + "clicks_7_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application over the last 7 days" + } + }, + "clicks_30_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application over the last 30 days" + } + }, + "clicks_90_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application over the last 90 days" + } + }, + "minutes_on_screen_total": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen since we started counting them." + } + }, + "minutes_on_screen_7_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen over the last 7 days" + } + }, + "minutes_on_screen_30_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen over the last 30 days" + } + }, + "minutes_on_screen_90_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen over the last 90 days" + } + }, + "views": { + "type": "array", + "items": { + "properties": { + "appId": { + "type": "keyword", + "_meta": { + "description": "The application being tracked" + } + }, + "viewId": { + "type": "keyword", + "_meta": { + "description": "The application view being tracked" + } + }, + "clicks_total": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application sub view since we started counting them" + } + }, + "clicks_7_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the active application sub view over the last 7 days" + } + }, + "clicks_30_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the active application sub view over the last 30 days" + } + }, + "clicks_90_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the active application sub view over the last 90 days" + } + }, + "minutes_on_screen_total": { + "type": "float", + "_meta": { + "description": "Minutes the application sub view is active and on-screen since we started counting them." + } + }, + "minutes_on_screen_7_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen active application sub view over the last 7 days" + } + }, + "minutes_on_screen_30_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen active application sub view over the last 30 days" + } + }, + "minutes_on_screen_90_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen active application sub view over the last 90 days" + } + } + } + } + } + } + }, "elasticsearch": { "properties": { "appId": { diff --git a/x-pack/plugins/enterprise_search/common/constants.ts b/x-pack/plugins/enterprise_search/common/constants.ts index b81617607eb5a..f90de0151b6c0 100644 --- a/x-pack/plugins/enterprise_search/common/constants.ts +++ b/x-pack/plugins/enterprise_search/common/constants.ts @@ -42,6 +42,22 @@ export const ENTERPRISE_SEARCH_CONTENT_PLUGIN = { SUPPORT_URL: 'https://discuss.elastic.co/c/enterprise-search/', }; +export const ESRE_PLUGIN = { + ID: 'enterpriseSearchEsre', + NAME: i18n.translate('xpack.enterpriseSearch.esre.productName', { + defaultMessage: 'ESRE', + }), + NAV_TITLE: i18n.translate('xpack.enterpriseSearch.esre.navTitle', { + defaultMessage: 'ESRE', + }), + DESCRIPTION: i18n.translate('xpack.enterpriseSearch.esre.description', { + defaultMessage: + 'Toolkit for enabling developers to build AI search-powered applications using the Elastic platform.', + }), + URL: '/app/enterprise_search/esre', + LOGO: 'logoEnterpriseSearch', +}; + export const ANALYTICS_PLUGIN = { ID: 'enterpriseSearchAnalytics', NAME: i18n.translate('xpack.enterpriseSearch.analytics.productName', { diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide.tsx new file mode 100644 index 0000000000000..4286c136f2fda --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide.tsx @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { i18n } from '@kbn/i18n'; + +import { SetEsreChrome as SetPageChrome } from '../../../shared/kibana_chrome'; +import { EnterpriseSearchEsrePageTemplate } from '../layout/page_template'; + +export const EsreGuide: React.FC = () => { + return ( + + +

ESRE placeholder

+
+ ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/components/layout/page_template.test.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/components/layout/page_template.test.tsx new file mode 100644 index 0000000000000..43516b499de42 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/components/layout/page_template.test.tsx @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +jest.mock('../../../shared/layout/nav', () => ({ + useEnterpriseSearchNav: () => [], +})); + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { SetEsreChrome } from '../../../shared/kibana_chrome'; +import { EnterpriseSearchPageTemplateWrapper } from '../../../shared/layout'; +import { SendEnterpriseSearchTelemetry } from '../../../shared/telemetry'; + +import { EnterpriseSearchEsrePageTemplate } from './page_template'; + +describe('EnterpriseSearchEsrePageTemplate', () => { + it('renders', () => { + const wrapper = shallow( + +
world
+
+ ); + + expect(wrapper.type()).toEqual(EnterpriseSearchPageTemplateWrapper); + expect(wrapper.prop('solutionNav')).toEqual({ name: 'ESRE', items: [] }); + expect(wrapper.find('.hello').text()).toEqual('world'); + }); + + describe('page chrome', () => { + it('takes a breadcrumb array & renders a product-specific page chrome', () => { + const wrapper = shallow(); + const setPageChrome = wrapper + .find(EnterpriseSearchPageTemplateWrapper) + .prop('setPageChrome') as any; + + expect(setPageChrome.type).toEqual(SetEsreChrome); + expect(setPageChrome.props.trail).toEqual(['Some page']); + }); + }); + + describe('page telemetry', () => { + it('takes a metric & renders product-specific telemetry viewed event', () => { + const wrapper = shallow(); + + expect(wrapper.find(SendEnterpriseSearchTelemetry).prop('action')).toEqual('viewed'); + expect(wrapper.find(SendEnterpriseSearchTelemetry).prop('metric')).toEqual('some_page'); + }); + }); + + describe('props', () => { + it('passes down any ...pageTemplateProps that EnterpriseSearchPageTemplateWrapper accepts', () => { + const wrapper = shallow( + } + /> + ); + + expect( + wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('pageHeader')!.pageTitle + ).toEqual('hello world'); + expect(wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('isLoading')).toEqual(false); + expect(wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('emptyState')).toEqual(
); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/components/layout/page_template.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/components/layout/page_template.tsx new file mode 100644 index 0000000000000..052619a7f6cf3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/components/layout/page_template.tsx @@ -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 React from 'react'; + +import { ESRE_PLUGIN } from '../../../../../common/constants'; +import { SetEsreChrome } from '../../../shared/kibana_chrome'; +import { EnterpriseSearchPageTemplateWrapper, PageTemplateProps } from '../../../shared/layout'; +import { useEnterpriseSearchNav } from '../../../shared/layout'; +import { SendEnterpriseSearchTelemetry } from '../../../shared/telemetry'; + +export const EnterpriseSearchEsrePageTemplate: React.FC = ({ + children, + pageChrome, + pageViewTelemetry, + ...pageTemplateProps +}) => { + return ( + } + > + {pageViewTelemetry && ( + + )} + {children} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/index.test.tsx new file mode 100644 index 0000000000000..197dfeefca45d --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/index.test.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockValues } from '../__mocks__/kea_logic'; + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { EsreGuide } from './components/esre_guide/esre_guide'; + +import { EnterpriseSearchEsre } from '.'; + +describe('SearchExperiences', () => { + it('renders the ESRE guide', () => { + setMockValues({ + errorConnectingMessage: '', + config: { host: 'localhost' }, + }); + const wrapper = shallow(); + + expect(wrapper.find(EsreGuide)).toHaveLength(1); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/index.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/index.tsx new file mode 100644 index 0000000000000..99ed324a144e9 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/index.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { Switch } from 'react-router-dom'; + +import { Route } from '@kbn/shared-ux-router'; + +import { isVersionMismatch } from '../../../common/is_version_mismatch'; +import { InitialAppData } from '../../../common/types'; +import { VersionMismatchPage } from '../shared/version_mismatch'; + +import { EsreGuide } from './components/esre_guide/esre_guide'; + +import { ROOT_PATH } from './routes'; + +export const EnterpriseSearchEsre: React.FC = (props) => { + const { enterpriseSearchVersion, kibanaVersion } = props; + const incompatibleVersions = isVersionMismatch(enterpriseSearchVersion, kibanaVersion); + + const showView = () => { + if (incompatibleVersions) { + return ( + + ); + } + + return ; + }; + + return ( + + + {showView()} + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/routes.ts b/x-pack/plugins/enterprise_search/public/applications/esre/routes.ts new file mode 100644 index 0000000000000..d6b0b0a669281 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/routes.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 const ROOT_PATH = '/'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts index ff2c05c4c8566..2897b968bf9b1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts @@ -16,6 +16,7 @@ import { WORKPLACE_SEARCH_PLUGIN, ENTERPRISE_SEARCH_CONTENT_PLUGIN, SEARCH_EXPERIENCES_PLUGIN, + ESRE_PLUGIN, } from '../../../../common/constants'; import { stripLeadingSlash } from '../../../../common/strip_slashes'; @@ -139,3 +140,6 @@ export const useSearchExperiencesBreadcrumbs = (breadcrumbs: Breadcrumbs = []) = export const useEnterpriseSearchEnginesBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => useEnterpriseSearchBreadcrumbs(breadcrumbs); + +export const useEsreBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => + useEnterpriseSearchBreadcrumbs([{ text: ESRE_PLUGIN.NAME, path: '/' }, ...breadcrumbs]); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.ts index 49279881ef00e..124ac8ee91578 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.ts @@ -11,6 +11,7 @@ import { APP_SEARCH_PLUGIN, WORKPLACE_SEARCH_PLUGIN, SEARCH_EXPERIENCES_PLUGIN, + ESRE_PLUGIN, } from '../../../../common/constants'; /** @@ -47,3 +48,5 @@ export const workplaceSearchTitle = (page: Title = []) => export const searchExperiencesTitle = (page: Title = []) => generateTitle([...page, SEARCH_EXPERIENCES_PLUGIN.NAME]); + +export const esreTitle = (page: Title = []) => generateTitle([...page, ESRE_PLUGIN.NAME]); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/index.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/index.ts index 5936e3873fe4a..f924307c15d39 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/index.ts @@ -10,6 +10,7 @@ export { SetAnalyticsChrome, SetEnterpriseSearchContentChrome, SetElasticsearchChrome, + SetEsreChrome, SetAppSearchChrome, SetWorkplaceSearchChrome, SetSearchExperiencesChrome, diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx index 681d815bd536f..7b2323c6d2a38 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx @@ -19,6 +19,7 @@ import { useEnterpriseSearchEnginesBreadcrumbs, useAnalyticsBreadcrumbs, useEnterpriseSearchContentBreadcrumbs, + useEsreBreadcrumbs, useElasticsearchBreadcrumbs, useAppSearchBreadcrumbs, useWorkplaceSearchBreadcrumbs, @@ -32,6 +33,7 @@ import { appSearchTitle, workplaceSearchTitle, searchExperiencesTitle, + esreTitle, } from './generate_title'; /** @@ -121,6 +123,23 @@ export const SetAppSearchChrome: React.FC = ({ trail = [] }) => return null; }; +export const SetEsreChrome: React.FC = ({ trail = [] }) => { + const { setBreadcrumbs, setDocTitle } = useValues(KibanaLogic); + + const title = reverseArray(trail); + const docTitle = esreTitle(title); + + const crumbs = useGenerateBreadcrumbs(trail); + const breadcrumbs = useEsreBreadcrumbs(crumbs); + + useEffect(() => { + setBreadcrumbs(breadcrumbs); + setDocTitle(docTitle); + }, [trail]); + + return null; +}; + export const SetWorkplaceSearchChrome: React.FC = ({ trail = [] }) => { const { setBreadcrumbs, setDocTitle } = useValues(KibanaLogic); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx index 9c30aab9dfa56..8aeb5557baa48 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx @@ -51,6 +51,11 @@ describe('useEnterpriseSearchContentNav', () => { id: 'elasticsearch', name: 'Elasticsearch', }, + { + href: '/app/enterprise_search/esre', + id: 'esre', + name: 'ESRE', + }, { href: '/app/enterprise_search/search_experiences', id: 'searchExperiences', @@ -210,6 +215,11 @@ describe('useEnterpriseSearchEngineNav', () => { id: 'elasticsearch', name: 'Elasticsearch', }, + { + href: '/app/enterprise_search/esre', + id: 'esre', + name: 'ESRE', + }, { href: '/app/enterprise_search/search_experiences', id: 'searchExperiences', @@ -397,6 +407,11 @@ describe('useEnterpriseSearchAnalyticsNav', () => { id: 'elasticsearch', name: 'Elasticsearch', }, + { + href: '/app/enterprise_search/esre', + id: 'esre', + name: 'ESRE', + }, { href: '/app/enterprise_search/search_experiences', id: 'searchExperiences', diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx index ce293cbc29c59..89bd7ed369139 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx @@ -19,6 +19,7 @@ import { ELASTICSEARCH_PLUGIN, ENTERPRISE_SEARCH_CONTENT_PLUGIN, ENTERPRISE_SEARCH_OVERVIEW_PLUGIN, + ESRE_PLUGIN, SEARCH_EXPERIENCES_PLUGIN, WORKPLACE_SEARCH_PLUGIN, } from '../../../../common/constants'; @@ -53,6 +54,16 @@ export const useEnterpriseSearchNav = () => { to: ELASTICSEARCH_PLUGIN.URL, }), }, + { + id: 'esre', + name: i18n.translate('xpack.enterpriseSearch.nav.esreTitle', { + defaultMessage: 'ESRE', + }), + ...generateNavLink({ + shouldNotCreateHref: true, + to: ESRE_PLUGIN.URL, + }), + }, { id: 'searchExperiences', name: i18n.translate('xpack.enterpriseSearch.nav.searchExperiencesTitle', { diff --git a/x-pack/plugins/enterprise_search/public/plugin.ts b/x-pack/plugins/enterprise_search/public/plugin.ts index 7e85545d581e9..a3fd3b47497fd 100644 --- a/x-pack/plugins/enterprise_search/public/plugin.ts +++ b/x-pack/plugins/enterprise_search/public/plugin.ts @@ -30,6 +30,7 @@ import { APPLICATIONS_PLUGIN, APP_SEARCH_PLUGIN, ELASTICSEARCH_PLUGIN, + ESRE_PLUGIN, ENTERPRISE_SEARCH_CONTENT_PLUGIN, ENTERPRISE_SEARCH_OVERVIEW_PLUGIN, WORKPLACE_SEARCH_PLUGIN, @@ -141,6 +142,27 @@ export class EnterpriseSearchPlugin implements Plugin { title: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.NAV_TITLE, }); + core.application.register({ + appRoute: ESRE_PLUGIN.URL, + category: DEFAULT_APP_CATEGORIES.enterpriseSearch, + euiIconType: ESRE_PLUGIN.LOGO, + id: ESRE_PLUGIN.ID, + mount: async (params: AppMountParameters) => { + const kibanaDeps = await this.getKibanaDeps(core, params, cloud); + const { chrome, http } = kibanaDeps.core; + chrome.docTitle.change(ESRE_PLUGIN.NAME); + + await this.getInitialData(http); + const pluginData = this.getPluginData(); + + const { renderApp } = await import('./applications'); + const { EnterpriseSearchEsre } = await import('./applications/esre'); + + return renderApp(EnterpriseSearchEsre, kibanaDeps, pluginData); + }, + title: ESRE_PLUGIN.NAV_TITLE, + }); + core.application.register({ appRoute: ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL, category: DEFAULT_APP_CATEGORIES.enterpriseSearch, diff --git a/x-pack/plugins/enterprise_search/server/plugin.ts b/x-pack/plugins/enterprise_search/server/plugin.ts index f699d4c4d3708..acf99772fe9b6 100644 --- a/x-pack/plugins/enterprise_search/server/plugin.ts +++ b/x-pack/plugins/enterprise_search/server/plugin.ts @@ -185,6 +185,7 @@ export class EnterpriseSearchPlugin implements Plugin { enterpriseSearchContent: showEnterpriseSearch, enterpriseSearchAnalytics: showEnterpriseSearch, enterpriseSearchApplications: showEnterpriseSearch, + enterpriseSearchEsre: showEnterpriseSearch, elasticsearch: showEnterpriseSearch, appSearch: hasAppSearchAccess && config.canDeployEntSearch, workplaceSearch: hasWorkplaceSearchAccess && config.canDeployEntSearch, @@ -195,6 +196,7 @@ export class EnterpriseSearchPlugin implements Plugin { enterpriseSearchContent: showEnterpriseSearch, enterpriseSearchAnalytics: showEnterpriseSearch, enterpriseSearchApplications: showEnterpriseSearch, + enterpriseSearchEsre: showEnterpriseSearch, elasticsearch: showEnterpriseSearch, appSearch: hasAppSearchAccess && config.canDeployEntSearch, workplaceSearch: hasWorkplaceSearchAccess && config.canDeployEntSearch, diff --git a/x-pack/test/ui_capabilities/security_and_spaces/tests/catalogue.ts b/x-pack/test/ui_capabilities/security_and_spaces/tests/catalogue.ts index 9de7628648a1f..397d4c533405e 100644 --- a/x-pack/test/ui_capabilities/security_and_spaces/tests/catalogue.ts +++ b/x-pack/test/ui_capabilities/security_and_spaces/tests/catalogue.ts @@ -67,6 +67,7 @@ export default function catalogueTests({ getService }: FtrProviderContext) { 'enterpriseSearchContent', 'enterpriseSearchAnalytics', 'enterpriseSearchApplications', + 'enterpriseSearchEsre', 'elasticsearch', 'appSearch', 'workplaceSearch', @@ -95,6 +96,7 @@ export default function catalogueTests({ getService }: FtrProviderContext) { 'enterpriseSearchContent', 'enterpriseSearchAnalytics', 'enterpriseSearchApplications', + 'enterpriseSearchEsre', 'elasticsearch', 'appSearch', 'workplaceSearch', diff --git a/x-pack/test/ui_capabilities/security_and_spaces/tests/nav_links.ts b/x-pack/test/ui_capabilities/security_and_spaces/tests/nav_links.ts index 27e469e928fc5..d56f8b5da5324 100644 --- a/x-pack/test/ui_capabilities/security_and_spaces/tests/nav_links.ts +++ b/x-pack/test/ui_capabilities/security_and_spaces/tests/nav_links.ts @@ -54,6 +54,7 @@ export default function navLinksTests({ getService }: FtrProviderContext) { 'enterpriseSearchContent', 'enterpriseSearchAnalytics', 'enterpriseSearchApplications', + 'enterpriseSearchEsre', 'appSearch', 'workplaceSearch' ) @@ -71,6 +72,7 @@ export default function navLinksTests({ getService }: FtrProviderContext) { 'enterpriseSearchContent', 'enterpriseSearchAnalytics', 'enterpriseSearchApplications', + 'enterpriseSearchEsre', 'appSearch', 'workplaceSearch', 'guidedOnboardingFeature' diff --git a/x-pack/test/ui_capabilities/spaces_only/tests/catalogue.ts b/x-pack/test/ui_capabilities/spaces_only/tests/catalogue.ts index 2f90e0aaa570b..0fe1b4fcc3142 100644 --- a/x-pack/test/ui_capabilities/spaces_only/tests/catalogue.ts +++ b/x-pack/test/ui_capabilities/spaces_only/tests/catalogue.ts @@ -31,6 +31,7 @@ export default function catalogueTests({ getService }: FtrProviderContext) { 'enterpriseSearchContent', 'enterpriseSearchAnalytics', 'enterpriseSearchApplications', + 'enterpriseSearchEsre', 'elasticsearch', 'appSearch', 'workplaceSearch', diff --git a/x-pack/test/ui_capabilities/spaces_only/tests/nav_links.ts b/x-pack/test/ui_capabilities/spaces_only/tests/nav_links.ts index 73d6a706f07b4..f56863d8ff1f4 100644 --- a/x-pack/test/ui_capabilities/spaces_only/tests/nav_links.ts +++ b/x-pack/test/ui_capabilities/spaces_only/tests/nav_links.ts @@ -23,6 +23,7 @@ export default function navLinksTests({ getService }: FtrProviderContext) { 'enterpriseSearchContent', 'enterpriseSearchAnalytics', 'enterpriseSearchApplications', + 'enterpriseSearchEsre', 'appSearch', 'workplaceSearch', ]; From 1da01d14beee63e01fd56abf86478d9165432cb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20G=C3=BCrkan=20YALAMAN?= Date: Thu, 15 Jun 2023 16:02:31 +0200 Subject: [PATCH 08/59] [Enterprise Search] Add License popover to the DLS switches (#159734) ## Summary - Add license checks for DLS enable widget. - Add license checks for Access Control Sync widget. https://github.com/elastic/kibana/assets/1410658/e7ca5c18-e2f6-4684-9a90-964774ccb100 ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [x] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) --- .../connector_configuration_field.tsx | 49 +++++++- .../connector/connector_scheduling.tsx | 8 +- .../connector_cron_editor.tsx | 8 +- .../connector_scheduling/full_content.tsx | 107 ++++++++++++++---- 4 files changed, 146 insertions(+), 26 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_field.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_field.tsx index cf2db8f80b1ed..c1c54d9b5cbfd 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_field.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_field.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React from 'react'; +import React, { useState } from 'react'; import { useActions, useValues } from 'kea'; @@ -21,13 +21,19 @@ import { EuiIcon, EuiFlexGroup, EuiFlexItem, + EuiButtonIcon, } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + import { Status } from '../../../../../../common/types/api'; import { DisplayType } from '../../../../../../common/types/connectors'; +import { LicensingLogic } from '../../../../shared/licensing'; import { ConnectorConfigurationApiLogic } from '../../../api/connector/update_connector_configuration_api_logic'; +import { PlatinumLicensePopover } from '../../shared/platinum_license_popover/platinum_license_popover'; + import { ConnectorConfigurationLogic, ConfigEntryView, @@ -64,6 +70,8 @@ export const ConnectorConfigurationFieldType: React.FC { const { status } = useValues(ConnectorConfigurationApiLogic); const { setLocalConfigEntry } = useActions(ConnectorConfigurationLogic); + const { hasPlatinumLicense } = useValues(LicensingLogic); + const [isPopoverOpen, setIsPopoverOpen] = useState(false); const { key, @@ -145,10 +153,45 @@ export const ConnectorConfigurationFieldType: React.FC + + +

{label}

+ + } + onChange={(event) => { + setLocalConfigEntry({ ...configEntry, value: event.target.checked }); + }} + /> +
+ + setIsPopoverOpen(!isPopoverOpen)} + /> + } + closePopover={() => setIsPopoverOpen(false)} + isPopoverOpen={isPopoverOpen} + /> + + + ) : (

{label}

diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling.tsx index 97f130f1932ce..56a225fea19ab 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling.tsx @@ -27,6 +27,7 @@ import { ConnectorStatus, SyncJobType } from '../../../../../../common/types/con import { generateEncodedPath } from '../../../../shared/encode_path_params'; import { KibanaLogic } from '../../../../shared/kibana'; +import { LicensingLogic } from '../../../../shared/licensing'; import { EuiButtonTo } from '../../../../shared/react_router_helpers'; import { UnsavedChangesPrompt } from '../../../../shared/unsaved_changes_prompt'; import { SEARCH_INDEX_TAB_PATH } from '../../../routes'; @@ -70,6 +71,7 @@ export const ConnectorSchedulingComponent: React.FC = () => { useValues(IndexViewLogic); const { index } = useValues(IndexViewLogic); const { hasChanges } = useValues(ConnectorSchedulingLogic); + const { hasPlatinumLicense } = useValues(LicensingLogic); const shouldShowIncrementalSync = hasIncrementalSyncFeature && productFeatures.hasIncrementalSyncEnabled; @@ -211,7 +213,11 @@ export const ConnectorSchedulingComponent: React.FC = () => { } )} > - + )} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling/connector_cron_editor.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling/connector_cron_editor.tsx index 78cfb5459463f..6ddc393c45fad 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling/connector_cron_editor.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling/connector_cron_editor.tsx @@ -21,6 +21,7 @@ import { UpdateConnectorSchedulingApiLogic } from '../../../../api/connector/upd import { ConnectorSchedulingLogic } from '../connector_scheduling_logic'; interface ConnectorCronEditorProps { + disabled?: boolean; onReset?(): void; onSave?(interval: ConnectorScheduling['interval']): void; scheduling: ConnectorScheduling; @@ -28,6 +29,7 @@ interface ConnectorCronEditorProps { } export const ConnectorCronEditor: React.FC = ({ + disabled = false, scheduling, onSave, onReset, @@ -58,7 +60,7 @@ export const ConnectorCronEditor: React.FC = ({ = ({ { setNewInterval(scheduling.interval); setSimpleCron({ @@ -105,7 +107,7 @@ export const ConnectorCronEditor: React.FC = ({ onSave && onSave(newInterval)} > {i18n.translate( diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling/full_content.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling/full_content.tsx index 4bd336763dd92..ae95b3161d043 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling/full_content.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_scheduling/full_content.tsx @@ -17,6 +17,8 @@ import { EuiPanel, EuiAccordion, EuiTitle, + EuiButtonIcon, + EuiSwitchProps, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -25,11 +27,13 @@ import { SyncJobType } from '../../../../../../../common/types/connectors'; import { ConnectorViewIndex, CrawlerViewIndex } from '../../../../types'; +import { PlatinumLicensePopover } from '../../../shared/platinum_license_popover/platinum_license_popover'; import { ConnectorSchedulingLogic } from '../connector_scheduling_logic'; import { ConnectorCronEditor } from './connector_cron_editor'; export interface ConnectorContentSchedulingProps { + hasPlatinumLicense?: boolean; index: CrawlerViewIndex | ConnectorViewIndex; type: SyncJobType; } @@ -81,9 +85,26 @@ const getDescriptionText = (type: ConnectorContentSchedulingProps['type']) => { } }; +const EnableSwitch: React.FC<{ + checked: boolean; + disabled: boolean; + onChange: EuiSwitchProps['onChange']; +}> = ({ disabled, checked, onChange }) => ( + +); + export const ConnectorContentScheduling: React.FC = ({ type, index, + hasPlatinumLicense = false, }) => { const { setHasChanges, updateScheduling } = useActions(ConnectorSchedulingLogic); const schedulingInput = index.connector.scheduling; @@ -91,6 +112,9 @@ export const ConnectorContentScheduling: React.FC( scheduling[type].enabled ? 'open' : 'closed' ); + const [isPlatinumPopoverOpen, setIsPlatinumPopoverOpen] = useState(false); + + const isGated = !hasPlatinumLicense && type === SyncJobType.ACCESS_CONTROL; return ( <> @@ -117,30 +141,75 @@ export const ConnectorContentScheduling: React.FC { - if (e.target.checked) { - setIsAccordionOpen('open'); - } - setScheduling({ - ...scheduling, - ...{ - [type]: { enabled: e.target.checked, interval: scheduling[type].interval }, - }, - }); - setHasChanges(type); - }} - /> + isGated ? ( + + + setIsPlatinumPopoverOpen(!isPlatinumPopoverOpen)} + button={ + setIsPlatinumPopoverOpen(!isPlatinumPopoverOpen)} + /> + } + /> + + + { + if (e.target.checked) { + setIsAccordionOpen('open'); + } + setScheduling({ + ...scheduling, + ...{ + [type]: { + enabled: e.target.checked, + interval: scheduling[type].interval, + }, + }, + }); + setHasChanges(type); + }} + /> + + + ) : ( + { + if (e.target.checked) { + setIsAccordionOpen('open'); + } + setScheduling({ + ...scheduling, + ...{ + [type]: { + enabled: e.target.checked, + interval: scheduling[type].interval, + }, + }, + }); + setHasChanges(type); + }} + /> + ) } > { From 29bffbece27ee26217a243280f2a9c108340963e Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Thu, 15 Jun 2023 07:21:02 -0700 Subject: [PATCH 09/59] [DOCS] Remove broken links from email connector (#159759) --- .../connectors/action-types/email.asciidoc | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/management/connectors/action-types/email.asciidoc b/docs/management/connectors/action-types/email.asciidoc index 7d6cc75282a2f..3e498f600e37c 100644 --- a/docs/management/connectors/action-types/email.asciidoc +++ b/docs/management/connectors/action-types/email.asciidoc @@ -3,6 +3,10 @@ ++++ Email ++++ +:frontmatter-description: Add a connector that can send email from your server. +:frontmatter-tags-products: [kibana] +:frontmatter-tags-content-type: [how-to] +:frontmatter-tags-user-goals: [configure] The email connector uses the SMTP protocol to send mail messages, using an integration of https://nodemailer.com/[Nodemailer]. An exception is Microsoft @@ -13,7 +17,7 @@ message text is sent as both plain text and html text. [NOTE] ==== * For emails to have a footer with a link back to {kib}, set the -<> configuration setting. +<> configuration setting. * When the <> configuration setting is used, the email addresses used for all of the Sender @@ -50,8 +54,7 @@ https://nodemailer.com/message/addresses/[Nodemailer address documentation] for more information. Service:: -The name of the email service. If `service` is one of Nodemailer's -https://nodemailer.com/smtp/well-known/[well-known email service providers], the +The name of the email service. If `service` is one of Nodemailer's well-known email service providers, the `host`, `port`, and `secure` properties are defined with the default values and disabled for modification. If `service` is `MS Exchange Server`, the `host`, `port`, and `secure` properties are ignored and `tenantId`, `clientId`, @@ -60,7 +63,7 @@ disabled for modification. If `service` is `MS Exchange Server`, the `host`, Host:: Host name of the service provider. If you are using the -<> setting, make sure this +<> setting, make sure this hostname is added to the allowed hosts. Port:: @@ -126,9 +129,8 @@ Config defines information for the connector type. `service`:: The name of the email service. If `service` is `elastic_cloud` (for Elastic -Cloud notifications) or one of Nodemailer's -https://nodemailer.com/smtp/well-known/[well-known email service providers], the -`host`, `port`, and `secure` properties are ignored. If `service` is `other`, +Cloud notifications) or one of Nodemailer's well-known email service providers, +the `host`, `port`, and `secure` properties are ignored. If `service` is `other`, the `host` and `port` properties must be defined. For more information on the `gmail` service value, refer to https://nodemailer.com/usage/using-gmail/[Nodemailer Gmail documentation]. If @@ -167,11 +169,11 @@ A string that corresponds to *Username*. Required if `hasAuth` is set to `true`. `password`:: A string that corresponds to *Password*. Should be stored in the -<>. Required if `hasAuth` is set to `true`. +<>. Required if `hasAuth` is set to `true`. `clientSecret`:: A string that corresponds to *Client Secret*. Should be stored in the -<>. Required if `service` is set to +<>. Required if `service` is set to `exchange_server`, which uses OAuth 2.0 Client Credentials Authentication. [float] @@ -203,7 +205,7 @@ The message text of the email. Markdown format is supported. [[email-connector-networking-configuration]] === Connector networking configuration -Use the <> to customize +Use the <> to customize connector networking configurations, such as proxies, certificates, or TLS settings. You can set configurations that apply to all your connectors or use `xpack.actions.customHostSettings` to set per-host configurations. @@ -225,7 +227,7 @@ different email systems, refer to: * <> For other email servers, you can check the list of well-known services that -Nodemailer supports in the JSON file +Nodemailer supports in the JSON file https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json[well-known/services.json]. The properties of the objects in those files — `host`, `port`, and `secure` — correspond to the same email connector configuration @@ -434,4 +436,3 @@ secrets: <1> This application information is on the https://go.microsoft.com/fwlink/?linkid=2083908[Azure portal – App registrations]. <2> Some organizations configure Exchange to validate that the `from` field is a valid local email account. - From 5792c2772ec73df004ac119133f7be28d127061e Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Thu, 15 Jun 2023 07:22:27 -0700 Subject: [PATCH 10/59] [DOCS] Clarify Jira connector compatibility (#159757) --- .../connectors/action-types/jira.asciidoc | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/management/connectors/action-types/jira.asciidoc b/docs/management/connectors/action-types/jira.asciidoc index cfa6f7f7eec89..e57fdd87b432f 100644 --- a/docs/management/connectors/action-types/jira.asciidoc +++ b/docs/management/connectors/action-types/jira.asciidoc @@ -3,8 +3,18 @@ ++++ Jira ++++ +:frontmatter-description: Add a connector that can create indicidents in Jira. +:frontmatter-tags-products: [kibana] +:frontmatter-tags-content-type: [how-to] +:frontmatter-tags-user-goals: [configure] -The Jira connector uses the https://developer.atlassian.com/cloud/jira/platform/rest/v2/[REST API v2] to create Jira issues. +The Jira connector uses the https://developer.atlassian.com/cloud/jira/platform/rest/v2/[REST API v2] to create Atlassian Jira issues. + +[float] +[[jira-compatibility]] +=== Compatibility + +Jira on-premise deployments (Server and Data Center) are not supported. [float] [[define-jira-ui]] @@ -86,9 +96,3 @@ Additional comments:: Additional information for the client, such as how to trou === Connector networking configuration Use the <> to customize connector networking configurations, such as proxies, certificates, or TLS settings. You can set configurations that apply to all your connectors or use `xpack.actions.customHostSettings` to set per-host configurations. - -[float] -[[configuring-jira]] -=== Configure Jira - -Jira offers free https://www.atlassian.com/software/jira/free[Instances], which you can use to test incidents. From 64ab4fda321b5076e90f9ef63f4837d6c3424b1a Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Thu, 15 Jun 2023 07:24:38 -0700 Subject: [PATCH 11/59] [DOCS] Fix formatting in alerting settings (#159753) --- docs/settings/alert-action-settings.asciidoc | 24 ++++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/docs/settings/alert-action-settings.asciidoc b/docs/settings/alert-action-settings.asciidoc index a5174a972c7dd..49ff0673386f7 100644 --- a/docs/settings/alert-action-settings.asciidoc +++ b/docs/settings/alert-action-settings.asciidoc @@ -36,9 +36,9 @@ Be sure to back up the encryption key value somewhere safe, as your alerting rul === Action settings `xpack.actions.allowedHosts` {ess-icon}:: -A list of hostnames that {kib} is allowed to connect to when built-in actions are triggered. It defaults to `[*]`, allowing any host, but keep in mind the potential for SSRF attacks when hosts are not explicitly added to the allowed hosts. An empty list `[]` can be used to block built-in actions from making any external connections. +A list of hostnames that {kib} is allowed to connect to when built-in actions are triggered. It defaults to `["*"]`, allowing any host, but keep in mind the potential for SSRF attacks when hosts are not explicitly added to the allowed hosts. An empty list `[]` can be used to block built-in actions from making any external connections. + -Note that hosts associated with built-in actions, such as Slack and PagerDuty, are not automatically added to allowed hosts. If you are not using the default `[*]` setting, you must ensure that the corresponding endpoints are added to the allowed hosts as well. +Note that hosts associated with built-in actions, such as Slack and PagerDuty, are not automatically added to allowed hosts. If you are not using the default `["*"]` setting, you must ensure that the corresponding endpoints are added to the allowed hosts as well. `xpack.actions.customHostSettings` {ess-icon}:: A list of custom host settings to override existing global settings. @@ -138,7 +138,7 @@ WARNING: This feature is available in {kib} 7.17.4 and 8.3.0 onwards but is not A boolean value indicating that a footer with a relevant link should be added to emails sent as alerting actions. Default: true. `xpack.actions.enabledActionTypes` {ess-icon}:: -A list of action types that are enabled. It defaults to `[*]`, enabling all types. The names for built-in {kib} action types are prefixed with a `.` and include: `.email`, `.index`, `.jira`, `.opsgenie`, `.pagerduty`, `.resilient`, `.server-log`, `.servicenow`, .`servicenow-itom`, `.servicenow-sir`, `.slack`, `.swimlane`, `.teams`, `.tines`, `.torq`, `.xmatters`, `.gen-ai`, `.d3security`, and `.webhook`. An empty list `[]` will disable all action types. +A list of action types that are enabled. It defaults to `["*"]`, enabling all types. The names for built-in {kib} action types are prefixed with a `.` and include: `.email`, `.index`, `.jira`, `.opsgenie`, `.pagerduty`, `.resilient`, `.server-log`, `.servicenow`, .`servicenow-itom`, `.servicenow-sir`, `.slack`, `.swimlane`, `.teams`, `.tines`, `.torq`, `.xmatters`, `.gen-ai`, `.d3security`, and `.webhook`. An empty list `[]` will disable all action types. + Disabled action types will not appear as an option when creating new connectors, but existing connectors and actions of that type will remain in {kib} and will not function. @@ -198,10 +198,8 @@ This setting can be overridden for specific URLs by using the setting Specifies the max number of bytes of the http response for requests to external resources. Default: 1000000 (1MB). `xpack.actions.responseTimeout` {ess-icon}:: -Specifies the time allowed for requests to external resources. Requests that take longer are aborted. The time is formatted as: -+ -`[ms,s,m,h,d,w,M,Y]` -+ +Specifies the time allowed for requests to external resources. Requests that take longer are canceled. +The time is formatted as a number and a time unit (`ms`, `s`, `m`, `h`, `d`, `w`, `M`, or `Y`). For example, `20m`, `24h`, `7d`, `1w`. Default: `60s`. `xpack.actions.run.maxAttempts` {ess-icon}:: @@ -235,10 +233,8 @@ processing was cancelled due to a timeout. Default: `true`. This setting can be overridden by individual rule types. `xpack.alerting.rules.minimumScheduleInterval.value` {ess-icon}:: -Specifies the minimum schedule interval for rules. This minimum is applied to all rules created or updated after you set this value. The time is formatted as: -+ -`[s,m,h,d]` -+ +Specifies the minimum schedule interval for rules. This minimum is applied to all rules created or updated after you set this value. +The time is formatted as a number and a time unit (`s`, `m`, `h`, or `d`). For example, `20m`, `24h`, `7d`. This duration cannot exceed `1d`. Default: `1m`. `xpack.alerting.rules.minimumScheduleInterval.enforce` {ess-icon}:: @@ -251,10 +247,8 @@ Specifies the maximum number of actions that a rule can generate each time detec Specifies the maximum number of alerts that a rule can generate each time detection checks run. Default: 1000. `xpack.alerting.rules.run.timeout` {ess-icon}:: -Specifies the default timeout for tasks associated with all types of rules. The time is formatted as: -+ -`[ms,s,m,h,d,w,M,Y]` -+ +Specifies the default timeout for tasks associated with all types of rules. +The time is formatted as a number and a time unit (`ms`, `s`, `m`, `h`, `d`, `w`, `M`, or `Y`). For example, `20m`, `24h`, `7d`, `1w`. Default: `5m`. `xpack.alerting.rules.run.ruleTypeOverrides` {ess-icon}:: From d240154af1a0764e1bb420fa38dd7b069bce5a74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Thu, 15 Jun 2023 16:28:54 +0200 Subject: [PATCH 12/59] [Serverless Snapshot Telemetry] Fallback ES version (#159600) --- .../get_local_stats.test.ts | 17 +++++++++++++++-- .../telemetry_collection/get_local_stats.ts | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/plugins/telemetry/server/telemetry_collection/get_local_stats.test.ts b/src/plugins/telemetry/server/telemetry_collection/get_local_stats.test.ts index 35577923f66bf..c30a548b23cb2 100644 --- a/src/plugins/telemetry/server/telemetry_collection/get_local_stats.test.ts +++ b/src/plugins/telemetry/server/telemetry_collection/get_local_stats.test.ts @@ -192,12 +192,25 @@ describe('get_local_stats', () => { expect(result.cluster_uuid).toStrictEqual(combinedStatsResult.cluster_uuid); expect(result.cluster_name).toStrictEqual(combinedStatsResult.cluster_name); expect(result.cluster_stats).toStrictEqual(combinedStatsResult.cluster_stats); - expect(result.version).toEqual('2.3.4'); + expect(result.version).toEqual(version); expect(result.collection).toEqual('local'); expect(Object.keys(result)).not.toContain('license'); expect(result.stack_stats).toEqual({ kibana: undefined, data: undefined }); }); + it('fallbacks to Kibana version if ES does not respond with it', () => { + const { version: _, ...clusterInfoWithoutVersion } = clusterInfo; + const result = handleLocalStats( + clusterInfoWithoutVersion as estypes.InfoResponse, + clusterStatsWithNodesUsage, + void 0, + void 0, + context + ); + + expect(result.version).toEqual(context.version); + }); + it('returns expected object with xpack', () => { const result = handleLocalStats( clusterInfo as estypes.InfoResponse, @@ -234,7 +247,7 @@ describe('get_local_stats', () => { expect(result.cluster_name).toEqual(combinedStatsResult.cluster_name); expect(result.cluster_stats).toEqual(combinedStatsResult.cluster_stats); expect(result.cluster_stats.nodes).toEqual(combinedStatsResult.cluster_stats.nodes); - expect(result.version).toBe('2.3.4'); + expect(result.version).toBe(version); expect(result.collection).toBe('local'); expect(Object.keys(result).indexOf('license')).toBeLessThan(0); expect(Object.keys(result.stack_stats).indexOf('xpack')).toBeLessThan(0); diff --git a/src/plugins/telemetry/server/telemetry_collection/get_local_stats.ts b/src/plugins/telemetry/server/telemetry_collection/get_local_stats.ts index ccd03f26fe5b5..43d52aae12596 100644 --- a/src/plugins/telemetry/server/telemetry_collection/get_local_stats.ts +++ b/src/plugins/telemetry/server/telemetry_collection/get_local_stats.ts @@ -38,7 +38,7 @@ export function handleLocalStats Date: Thu, 15 Jun 2023 15:31:41 +0100 Subject: [PATCH 13/59] skip flaky suite (#151056) --- test/functional/apps/console/_misc_console_behavior.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/functional/apps/console/_misc_console_behavior.ts b/test/functional/apps/console/_misc_console_behavior.ts index f4380617728cc..2920813f2cca0 100644 --- a/test/functional/apps/console/_misc_console_behavior.ts +++ b/test/functional/apps/console/_misc_console_behavior.ts @@ -26,7 +26,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.console.clearTextArea(); }); - describe('collapsible JSON blocks', () => { + // FLAKY: https://github.com/elastic/kibana/issues/151056 + describe.skip('collapsible JSON blocks', () => { it('should collapse and expand JSON blocks', async () => { const blockNumber = 1; await PageObjects.console.enterRequest( From ee6a9745542287ee9940d92ce8638a6700940e0e Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 15 Jun 2023 15:36:31 +0100 Subject: [PATCH 14/59] chore(NA): update optimizer limits --- packages/kbn-optimizer/limits.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 58441b7e54bf4..fe708fe8c95c5 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -38,7 +38,7 @@ pageLoadAssetSize: discoverEnhanced: 42730 embeddable: 87309 embeddableEnhanced: 22107 - enterpriseSearch: 35741 + enterpriseSearch: 50858 essSecurity: 16573 esUiShared: 326654 eventAnnotation: 48565 From 3f55d18b38e417922c17079d8212e48147f00c0b Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 15 Jun 2023 15:37:57 +0100 Subject: [PATCH 15/59] skip flaky suite (#156061) --- x-pack/plugins/event_log/server/es/init.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/event_log/server/es/init.test.ts b/x-pack/plugins/event_log/server/es/init.test.ts index 87ab9cb9b048f..154a98fcb194c 100644 --- a/x-pack/plugins/event_log/server/es/init.test.ts +++ b/x-pack/plugins/event_log/server/es/init.test.ts @@ -455,7 +455,8 @@ describe('parseIndexAliases', () => { }); }); -describe('retries', () => { +// FLAKY: https://github.com/elastic/kibana/issues/156061 +describe.skip('retries', () => { let esContext = contextMock.create(); // set up context APIs to return defaults indicating already created beforeEach(() => { From a13ac775b3ebec817d234aeeaddcf47780472612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Thu, 15 Jun 2023 16:38:34 +0200 Subject: [PATCH 16/59] [FullStory] Limit number of pageVars (#159725) Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../fullstory/src/fullstory_shipper.test.ts | 8 +- .../fullstory/src/fullstory_shipper.ts | 82 ++++++++++++++----- .../shippers/fullstory/tsconfig.json | 3 +- 3 files changed, 66 insertions(+), 27 deletions(-) diff --git a/packages/analytics/shippers/fullstory/src/fullstory_shipper.test.ts b/packages/analytics/shippers/fullstory/src/fullstory_shipper.test.ts index 6707c509a7e83..4e874b405add1 100644 --- a/packages/analytics/shippers/fullstory/src/fullstory_shipper.test.ts +++ b/packages/analytics/shippers/fullstory/src/fullstory_shipper.test.ts @@ -85,7 +85,6 @@ describe('FullStoryShipper', () => { expect(fullStoryApiMock.setVars).toHaveBeenCalledWith('page', { // eslint-disable-next-line @typescript-eslint/naming-convention cloudId_str: 'test-es-org-id', - org_id_str: 'test-es-org-id', }); }); @@ -94,7 +93,6 @@ describe('FullStoryShipper', () => { expect(fullStoryApiMock.setVars).toHaveBeenCalledWith('page', { // eslint-disable-next-line @typescript-eslint/naming-convention cloudId_str: 'test-es-org-id', - org_id_str: 'test-es-org-id', version_str: '1.2.3', version_major_int: 1, version_minor_int: 2, @@ -102,11 +100,12 @@ describe('FullStoryShipper', () => { }); }); - test('adds the rest of the context to `setVars`', () => { + test('adds the rest of the context to `setVars` (only if they match one of the valid keys)', () => { const context = { userId: 'test-user-id', version: '1.2.3', cloudId: 'test-es-org-id', + labels: { serverless: 'test' }, foo: 'bar', }; fullstoryShipper.extendContext(context); @@ -117,8 +116,7 @@ describe('FullStoryShipper', () => { version_patch_int: 3, // eslint-disable-next-line @typescript-eslint/naming-convention cloudId_str: 'test-es-org-id', - org_id_str: 'test-es-org-id', - foo_str: 'bar', + labels: { serverless_str: 'test' }, }); }); }); diff --git a/packages/analytics/shippers/fullstory/src/fullstory_shipper.ts b/packages/analytics/shippers/fullstory/src/fullstory_shipper.ts index e60686937884a..6c1e11c36542d 100644 --- a/packages/analytics/shippers/fullstory/src/fullstory_shipper.ts +++ b/packages/analytics/shippers/fullstory/src/fullstory_shipper.ts @@ -12,12 +12,39 @@ import type { Event, IShipper, } from '@kbn/analytics-client'; +import { get, has } from 'lodash'; +import { set } from '@kbn/safer-lodash-set'; import type { FullStoryApi } from './types'; import type { FullStorySnippetConfig } from './load_snippet'; import { formatPayload } from './format_payload'; import { loadSnippet } from './load_snippet'; import { getParsedVersion } from './get_parsed_version'; +const PAGE_VARS_KEYS = [ + // Page-specific keys + 'pageName', + 'page', + 'entityId', + 'applicationId', + + // Deployment-specific keys + 'version', // x4, split to version_major, version_minor, version_patch for easier filtering + 'buildNum', // May be useful for Serverless + 'cloudId', + 'deploymentId', + 'cluster_name', + 'cluster_uuid', + 'cluster_version', + 'labels.serverless', + 'license_id', + 'license_status', + 'license_type', + + // Session-specific + 'session_id', + 'preferred_languages', +] as const; + /** * FullStory shipper configuration. */ @@ -62,7 +89,13 @@ export class FullStoryShipper implements IShipper { this.initContext.logger.debug(`Received context ${JSON.stringify(newContext)}`); // FullStory requires different APIs for different type of contexts. - const { userId, isElasticCloudUser, ...nonUserContext } = newContext; + const { + userId, + isElasticCloudUser, + cloudIsElasticStaffOwned, + cloudTrialEndDate, + ...nonUserContext + } = newContext; // Call it only when the userId changes if (userId && userId !== this.lastUserId) { @@ -73,30 +106,37 @@ export class FullStoryShipper implements IShipper { } // User-level context - if (typeof isElasticCloudUser === 'boolean') { - this.initContext.logger.debug( - `Calling FS.setUserVars with isElasticCloudUser ${isElasticCloudUser}` - ); - this.fullStoryApi.setUserVars( - formatPayload({ - isElasticCloudUser, - }) - ); + if ( + typeof isElasticCloudUser === 'boolean' || + typeof cloudIsElasticStaffOwned === 'boolean' || + cloudTrialEndDate + ) { + const userVars = { + isElasticCloudUser, + cloudIsElasticStaffOwned, + cloudTrialEndDate, + }; + this.initContext.logger.debug(`Calling FS.setUserVars with ${JSON.stringify(userVars)}`); + this.fullStoryApi.setUserVars(formatPayload(userVars)); } + // Cherry-picking fields because FS limits the number of fields that can be sent. + // > Note: You can capture up to 20 unique page properties (exclusive of pageName) for any given page + // > and up to 500 unique page properties across all pages. + // https://help.fullstory.com/hc/en-us/articles/1500004101581-FS-setVars-API-Sending-custom-page-data-to-FullStory + const pageVars = PAGE_VARS_KEYS.reduce((acc, key) => { + if (has(nonUserContext, key)) { + set(acc, key, get(nonUserContext, key)); + } + return acc; + }, {} as Partial> & Record); + // Event-level context. At the moment, only the scope `page` is supported by FullStory for webapps. - if (Object.keys(nonUserContext).length) { - // Keeping these fields for backwards compatibility. - if (nonUserContext.applicationId) nonUserContext.app_id = nonUserContext.applicationId; - if (nonUserContext.entityId) nonUserContext.ent_id = nonUserContext.entityId; - if (nonUserContext.cloudId) nonUserContext.org_id = nonUserContext.cloudId; - - this.initContext.logger.debug( - `Calling FS.setVars with context ${JSON.stringify(nonUserContext)}` - ); + if (Object.keys(pageVars).length) { + this.initContext.logger.debug(`Calling FS.setVars with context ${JSON.stringify(pageVars)}`); this.fullStoryApi.setVars('page', { - ...formatPayload(nonUserContext), - ...(nonUserContext.version ? getParsedVersion(nonUserContext.version) : {}), + ...formatPayload(pageVars), + ...(pageVars.version ? getParsedVersion(pageVars.version) : {}), }); } } diff --git a/packages/analytics/shippers/fullstory/tsconfig.json b/packages/analytics/shippers/fullstory/tsconfig.json index f3b62b9be125f..00a680d9c6f2c 100644 --- a/packages/analytics/shippers/fullstory/tsconfig.json +++ b/packages/analytics/shippers/fullstory/tsconfig.json @@ -12,7 +12,8 @@ ], "kbn_references": [ "@kbn/analytics-client", - "@kbn/logging-mocks" + "@kbn/logging-mocks", + "@kbn/safer-lodash-set" ], "exclude": [ "target/**/*", From 9ebe5d5f53735dd7a5900d293132c56520ccde09 Mon Sep 17 00:00:00 2001 From: Wafaa Nasr Date: Thu, 15 Jun 2023 16:16:53 +0100 Subject: [PATCH 17/59] =?UTF-8?q?[Security=20Solution]=20[Exceptions]=20Au?= =?UTF-8?q?to-populate=20exception=20flyout=20with=20alert=E2=80=99s=20?= =?UTF-8?q?=E2=80=9Chighlighted=20fields=E2=80=9D=20values=20(#159029)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Addresses https://github.com/elastic/security-team/issues/6405 **Contents of this PR:** - Exports the `getEventFieldsToDisplay` function from the AlertSummary component, which retrieves the Highlighted Fields based on the Event data and Rule [get_alert_summary_rows.tsx](https://github.com/elastic/kibana/compare/main...WafaaNasr:kibana:6405-autopopulate-rule-exception-with-highlightedfields?expand=1#diff-6e544b31b8762fba87b411f14aa58742469ec5a9c62249ae8d030d2c62e6b023) - Introduces helper functions to populate the highlighted fields from the `alertData` in the [add_exception_flyout](https://github.com/elastic/kibana/compare/main...WafaaNasr:kibana:6405-autopopulate-rule-exception-with-highlightedfields?expand=1#diff-10f41a69a528b4fee8e9c3a0308519b55d34e6a8d7bf5a245113a59477883e5a) component. - Adds [highlighted_fields_config.ts](https://github.com/elastic/kibana/compare/main...WafaaNasr:kibana:6405-autopopulate-rule-exception-with-highlightedfields?expand=1#diff-70943899e3414daa47b9cc1e308f9556d9f4ceb3d537013d4b0f078a35f88735) configuration file, which contains the fields to be filtered out from the Exceptions and the fields used to obtain the highlighted fields. - Auto-populate the `Rule Exception` [add_exception_flyout](https://github.com/elastic/kibana/compare/main...WafaaNasr:kibana:6405-autopopulate-rule-exception-with-highlightedfields?expand=1#diff-10f41a69a528b4fee8e9c3a0308519b55d34e6a8d7bf5a245113a59477883e5a) on initiation, if alertData is provided and listType is `RuleException`, with the highlighted fields from the Alert. ## Screenshots ![image](https://github.com/elastic/kibana/assets/12671903/9872d8fb-9818-4b21-913c-353bc165812f) **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 --- .../endpoint_exceptions.cy.ts | 23 +- .../alerts_table_flow/rule_exceptions.cy.ts | 68 ++- .../cypress/tasks/exceptions.ts | 14 +- .../event_details/get_alert_summary_rows.tsx | 9 +- .../add_exception_flyout/index.test.tsx | 56 ++- .../components/add_exception_flyout/index.tsx | 28 +- .../add_exception_flyout/translations.ts | 9 + .../components/item_comments/index.tsx | 3 + .../rule_exceptions/utils/helpers.test.tsx | 419 +++++++++++++++++- .../rule_exceptions/utils/helpers.tsx | 127 +++++- .../utils/highlighted_fields_config.ts | 20 + 11 files changed, 731 insertions(+), 45 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/highlighted_fields_config.ts diff --git a/x-pack/plugins/security_solution/cypress/e2e/exceptions/alerts_table_flow/endpoint_exceptions.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/exceptions/alerts_table_flow/endpoint_exceptions.cy.ts index a9963e2aa4e72..7497316927ee3 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/exceptions/alerts_table_flow/endpoint_exceptions.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/exceptions/alerts_table_flow/endpoint_exceptions.cy.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { deleteAlertsAndRules } from '../../../tasks/common'; import { goToClosedAlertsOnRuleDetailsPage, goToOpenedAlertsOnRuleDetailsPage, @@ -28,13 +29,10 @@ import { addExceptionFlyoutItemName, selectCloseSingleAlerts, submitNewExceptionItem, + validateExceptionConditionField, } from '../../../tasks/exceptions'; import { ALERTS_COUNT, EMPTY_ALERT_TABLE } from '../../../screens/alerts'; -import { - EXCEPTION_ITEM_CONTAINER, - FIELD_INPUT_PARENT, - NO_EXCEPTIONS_EXIST_PROMPT, -} from '../../../screens/exceptions'; +import { NO_EXCEPTIONS_EXIST_PROMPT } from '../../../screens/exceptions'; import { removeException, goToAlertsTab, @@ -43,10 +41,13 @@ import { describe('Endpoint Exceptions workflows from Alert', () => { const expectedNumberOfAlerts = 1; - beforeEach(() => { + before(() => { esArchiverResetKibana(); - esArchiverLoad('endpoint'); + }); + beforeEach(() => { login(); + deleteAlertsAndRules(); + esArchiverLoad('endpoint'); createRule(getEndpointRule()); visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); goToRuleDetails(); @@ -64,12 +65,8 @@ describe('Endpoint Exceptions workflows from Alert', () => { openAddEndpointExceptionFromFirstAlert(); // As the endpoint.alerts-* is used to trigger the alert the - // file.Ext.code_signature will be populated as the first item - cy.get(EXCEPTION_ITEM_CONTAINER) - .eq(0) - .find(FIELD_INPUT_PARENT) - .eq(0) - .should('have.text', 'file.Ext.code_signature'); + // file.Ext.code_signature will be auto-populated + validateExceptionConditionField('file.Ext.code_signature'); selectCloseSingleAlerts(); addExceptionFlyoutItemName('Sample Exception'); diff --git a/x-pack/plugins/security_solution/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions.cy.ts index cb54925e2704a..935da49546b49 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions.cy.ts @@ -6,7 +6,7 @@ */ import { LOADING_INDICATOR } from '../../../screens/security_header'; -import { getNewRule } from '../../../objects/rule'; +import { getNewRule, getEndpointRule } from '../../../objects/rule'; import { ALERTS_COUNT, EMPTY_ALERT_TABLE } from '../../../screens/alerts'; import { createRule } from '../../../tasks/api_calls/rules'; import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; @@ -24,6 +24,8 @@ import { submitNewExceptionItem, validateExceptionItemFirstAffectedRuleNameInRulePage, validateExceptionItemAffectsTheCorrectRulesInRulePage, + validateExceptionConditionField, + validateExceptionCommentCountAndText, } from '../../../tasks/exceptions'; import { esArchiverLoad, @@ -47,19 +49,22 @@ describe('Rule Exceptions workflows from Alert', () => { const EXPECTED_NUMBER_OF_ALERTS = '1 alert'; const ITEM_NAME = 'Sample Exception List Item'; const newRule = getNewRule(); - before(() => { + + beforeEach(() => { esArchiverResetKibana(); - esArchiverLoad('exceptions'); - login(); - postDataView('exceptions-*'); + deleteAlertsAndRules(); }); - after(() => { esArchiverUnload('exceptions'); }); + afterEach(() => { + esArchiverUnload('exceptions_2'); + }); - beforeEach(() => { - deleteAlertsAndRules(); + it('Creates an exception item from alert actions overflow menu and close all matching alerts', () => { + esArchiverLoad('exceptions'); + login(); + postDataView('exceptions-*'); createRule({ ...newRule, query: 'agent.name:*', @@ -70,13 +75,7 @@ describe('Rule Exceptions workflows from Alert', () => { visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); goToRuleDetails(); waitForAlertsToPopulate(); - }); - afterEach(() => { - esArchiverUnload('exceptions_2'); - }); - - it('Creates an exception item from alert actions overflow menu and close all matching alerts', () => { cy.get(LOADING_INDICATOR).should('not.exist'); addExceptionFromFirstAlert(); @@ -120,4 +119,45 @@ describe('Rule Exceptions workflows from Alert', () => { cy.get(ALERTS_COUNT).should('have.text', '2 alerts'); }); + + it('Creates an exception item from alert actions overflow menu and auto populate the conditions using alert Highlighted fields ', () => { + esArchiverLoad('endpoint'); + login(); + createRule(getEndpointRule()); + visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); + goToRuleDetails(); + waitForAlertsToPopulate(); + + cy.get(LOADING_INDICATOR).should('not.exist'); + addExceptionFromFirstAlert(); + + const highlightedFieldsBasedOnAlertDoc = [ + 'host.name', + 'agent.id', + 'user.name', + 'process.executable', + 'file.path', + ]; + + /** + * Validate the highlighted fields are auto populated, these + * fields are based on the alert document that should be generated + * when the endpoint rule runs + */ + highlightedFieldsBasedOnAlertDoc.forEach((field, index) => { + validateExceptionConditionField(field); + }); + + /** + * Validate that the comments are opened by default with one comment added + * showing a text contains information about the pre-filled conditions + */ + validateExceptionCommentCountAndText( + 1, + 'Exception conditions are pre-filled with relevant data from' + ); + + addExceptionFlyoutItemName(ITEM_NAME); + submitNewExceptionItem(); + }); }); diff --git a/x-pack/plugins/security_solution/cypress/tasks/exceptions.ts b/x-pack/plugins/security_solution/cypress/tasks/exceptions.ts index 73db3a9dd3df5..884c4521985fc 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/exceptions.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/exceptions.ts @@ -164,6 +164,9 @@ export const addExceptionConditions = (exception: Exception) => { }); }; +export const validateExceptionConditionField = (value: string) => { + cy.get(EXCEPTION_ITEM_CONTAINER).contains('span', value); +}; export const submitNewExceptionItem = () => { cy.get(CONFIRM_BTN).click(); cy.get(CONFIRM_BTN).should('not.exist'); @@ -193,14 +196,13 @@ export const selectOs = (os: string) => { export const addExceptionComment = (comment: string) => { cy.get(EXCEPTION_COMMENTS_ACCORDION_BTN).click(); cy.get(EXCEPTION_COMMENT_TEXT_AREA).type(`${comment}`); - // cy.root() - // .pipe(($el) => { - // return $el.find(EXCEPTION_COMMENT_TEXT_AREA); - // }) - // .clear() - // .type(`${comment}`) cy.get(EXCEPTION_COMMENT_TEXT_AREA).should('have.value', comment); }; + +export const validateExceptionCommentCountAndText = (count: number, comment: string) => { + cy.get(EXCEPTION_COMMENTS_ACCORDION_BTN).contains('h3', count); + cy.get(EXCEPTION_COMMENT_TEXT_AREA).contains('textarea', comment); +}; export const clickOnShowComments = () => { cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER_SHOW_COMMENTS_BTN).click(); }; diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx index f591fad6a6629..88ffb7a6cbbc6 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx @@ -215,10 +215,17 @@ function getFieldsByRuleType(ruleType?: string): EventSummaryField[] { } } +/** + This function is exported because it is used in the Exception Component to + populate the conditions with the Highlighted Fields. Additionally, the new + Alert Summary Flyout also requires access to these fields. + As the Alert Summary components will undergo changes soon we will go with + exporting the function only for now. + */ /** * Assembles a list of fields to display based on the event */ -function getEventFieldsToDisplay({ +export function getEventFieldsToDisplay({ eventCategories, eventCode, eventRuleType, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx index 3d47ae518e48b..367092cfb3d68 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx @@ -8,11 +8,11 @@ import React from 'react'; import type { ReactWrapper } from 'enzyme'; import { mount, shallow } from 'enzyme'; -import { waitFor } from '@testing-library/react'; +import { waitFor, render } from '@testing-library/react'; import { getExceptionListSchemaMock } from '@kbn/lists-plugin/common/schemas/response/exception_list_schema.mock'; import { getExceptionBuilderComponentLazy } from '@kbn/lists-plugin/public'; -import type { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; +import type { EntriesArray, EntryMatch } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { getExceptionListItemSchemaMock } from '@kbn/lists-plugin/common/schemas/response/exception_list_item_schema.mock'; import { createStubIndexPattern, stubIndexPattern } from '@kbn/data-plugin/common/stubs'; @@ -612,6 +612,58 @@ describe('When the add exception modal is opened', () => { }); }); + describe('Auto populate rule exception', () => { + beforeEach(() => { + mockGetExceptionBuilderComponentLazy.mockImplementation((props) => { + return ( + + {props.exceptionListItems && + props.exceptionListItems[0] && + props.exceptionListItems[0].entries.map( + ({ field, operator, type, value }: EntryMatch) => ( + <> + {field} + {operator} + {type} + {value} + + ) + )} + + ); + }); + }); + it('should auto populate the exception from alert highlighted fields', () => { + const wrapper = render( + (() => ( + + + + ))() + ); + const { getByTestId } = wrapper; + expect(getByTestId('alertExceptionBuilder')).toBeInTheDocument(); + expect(getByTestId('entryField')).toHaveTextContent('file.path'); + expect(getByTestId('entryOperator')).toHaveTextContent('included'); + expect(getByTestId('entryType')).toHaveTextContent('match'); + expect(getByTestId('entryValue')).toHaveTextContent('test/path'); + }); + }); describe('bulk closeable alert data is passed in', () => { let wrapper: ReactWrapper; beforeEach(async () => { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx index b22596ce6b653..57d800204628f 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx @@ -41,6 +41,7 @@ import { defaultEndpointExceptionItems, retrieveAlertOsTypes, filterIndexPatterns, + getPrepopulatedRuleExceptionWithHighlightFields, } from '../../utils/helpers'; import type { AlertData } from '../../utils/types'; import { initialState, createExceptionItemsReducer } from './reducer'; @@ -335,12 +336,26 @@ export const AddExceptionFlyout = memo(function AddExceptionFlyout({ ); useEffect((): void => { - if (listType === ExceptionListTypeEnum.ENDPOINT && alertData != null) { - setInitialExceptionItems( - defaultEndpointExceptionItems(ENDPOINT_LIST_ID, exceptionItemName, alertData) - ); + if (alertData) { + switch (listType) { + case ExceptionListTypeEnum.ENDPOINT: { + return setInitialExceptionItems( + defaultEndpointExceptionItems(ENDPOINT_LIST_ID, exceptionItemName, alertData) + ); + } + case ExceptionListTypeEnum.RULE_DEFAULT: { + const populatedException = getPrepopulatedRuleExceptionWithHighlightFields({ + alertData, + exceptionItemName, + }); + if (populatedException) { + setComment(i18n.ADD_RULE_EXCEPTION_FROM_ALERT_COMMENT(alertData._id)); + return setInitialExceptionItems([populatedException]); + } + } + } } - }, [listType, exceptionItemName, alertData, setInitialExceptionItems]); + }, [listType, exceptionItemName, alertData, setInitialExceptionItems, setComment]); const osTypesSelection = useMemo((): OsTypeArray => { return hasAlertData ? retrieveAlertOsTypes(alertData) : selectedOs ? [...selectedOs] : []; @@ -521,9 +536,10 @@ export const AddExceptionFlyout = memo(function AddExceptionFlyout({ -

{i18n.COMMENTS_SECTION_TITLE(0)}

+

{i18n.COMMENTS_SECTION_TITLE(newComment ? 1 : 0)}

} + initialIsOpen={!!newComment} newCommentValue={newComment} newCommentOnChange={setComment} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/translations.ts index eea7f90d07e5c..4b4ad1dac1b5e 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/translations.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/translations.ts @@ -83,3 +83,12 @@ export const COMMENTS_SECTION_TITLE = (comments: number) => values: { comments }, defaultMessage: 'Add comments ({comments})', }); + +export const ADD_RULE_EXCEPTION_FROM_ALERT_COMMENT = (alertId: string) => + i18n.translate( + 'xpack.securitySolution.ruleExceptions.addExceptionFlyout.addRuleExceptionFromAlertComment', + { + values: { alertId }, + defaultMessage: 'Exception conditions are pre-filled with relevant data from {alertId}.', + } + ); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx index a3553c78f8b30..38ece2d1ba43c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx @@ -26,6 +26,7 @@ interface ExceptionItemCommentsProps { exceptionItemComments?: Comment[]; newCommentValue: string; accordionTitle?: JSX.Element; + initialIsOpen?: boolean; newCommentOnChange: (value: string) => void; } @@ -50,6 +51,7 @@ export const ExceptionItemComments = memo(function ExceptionItemComments({ exceptionItemComments, newCommentValue, accordionTitle, + initialIsOpen = false, newCommentOnChange, }: ExceptionItemCommentsProps) { const [shouldShowComments, setShouldShowComments] = useState(false); @@ -107,6 +109,7 @@ export const ExceptionItemComments = memo(function ExceptionItemComments({ return (
({ v4: jest.fn().mockReturnValue('123'), })); @@ -1472,4 +1478,415 @@ describe('Exception helpers', () => { ]); }); }); + + describe('Auto-populate Rule Exceptions with Alert highlighted fields', () => { + const name = 'Exception name'; + const endpointCapabilties = [ + 'isolation', + 'kill_process', + 'suspend_process', + 'running_processes', + 'get_file', + 'execute', + 'upload_file', + ]; + const alertData = { + 'kibana.alert.rule.category': 'Custom Query Rule', + 'kibana.alert.rule.consumer': 'siem', + 'kibana.alert.rule.execution.uuid': '28b687e3-8e16-48aa-91b8-bf044d366c2d', + '@timestamp': '2023-06-05T11:11:32.870Z', + agent: { + id: 'f4f86e7c-29bd-4655-b7d0-a3d08ad0c322', + type: 'endpoint', + }, + process: { + parent: { + pid: 1, + }, + group_leader: { + name: 'fake leader', + entity_id: 'ubi00k5f1o', + }, + name: 'malware writer', + pid: 2, + entity_id: 'ycrj6wvrt4', + executable: 'C:/malware.exe', + hash: { + sha1: 'fake sha1', + sha256: 'fake sha256', + md5: 'fake md5', + }, + }, + 'event.agent_id_status': 'auth_metadata_missing', + 'event.sequence': 57, + 'event.ingested': '2023-06-05T11:10:27Z', + 'event.code': 'malicious_file', + 'event.kind': 'signal', + 'event.module': 'endpoint', + 'event.action': 'deletion', + 'event.id': 'c3b60ce3-6569-4136-854a-f0cc9f546339', + 'event.category': 'malware', + 'event.type': 'creation', + 'event.dataset': 'endpoint', + 'kibana.alert.rule.exceptions_list': [ + { + id: 'endpoint_list', + list_id: 'endpoint_list', + namespace_type: 'agnostic', + type: 'endpoint', + }, + ], + Endpoint: { + capabilities: endpointCapabilties, + }, + _id: 'b9edb05a090729be2077b99304542d6844973843dec43177ac618f383df44a6d', + }; + const expectedHighlightedFields = [ + { + id: 'host.name', + }, + { + id: 'agent.id', + overrideField: 'agent.status', + label: 'Agent status', + }, + { + id: 'user.name', + }, + { + id: 'cloud.provider', + }, + { + id: 'cloud.region', + }, + { + id: 'process.executable', + }, + { + id: 'process.name', + }, + { + id: 'file.path', + }, + { + id: 'kibana.alert.threshold_result.cardinality.field', + label: 'Event Cardinality', + }, + ]; + const operator = ListOperatorEnum.INCLUDED; + const type = ListOperatorTypeEnum.MATCH; + const exceptionEntries: EntriesArray = [ + { + field: 'host.name', + operator, + type, + value: 'Host-yxnnos4lo3', + }, + { + field: 'agent.id', + operator, + type, + value: 'f4f86e7c-29bd-4655-b7d0-a3d08ad0c322', + }, + { + field: 'user.name', + operator, + type, + value: 'c09uzcpj0c', + }, + { + field: 'process.executable', + operator, + type, + value: 'C:/malware.exe', + }, + { + field: 'file.path', + operator, + type, + value: 'C:/fake_malware.exe', + }, + + { + field: 'process.name', + operator, + type, + value: 'malware writer', + }, + ]; + const defaultAlertData = { + '@timestamp': '', + _id: '', + }; + const expectedExceptionEntries = [ + { + field: 'agent.id', + operator: 'included', + type: 'match', + value: 'f4f86e7c-29bd-4655-b7d0-a3d08ad0c322', + }, + { + field: 'process.executable', + operator: 'included', + type: 'match', + value: 'C:/malware.exe', + }, + { field: 'process.name', operator: 'included', type: 'match', value: 'malware writer' }, + ]; + const entriesWithMatchAny = { + field: 'Endpoint.capabilities', + operator, + type: ListOperatorTypeEnum.MATCH_ANY, + value: endpointCapabilties, + }; + describe('buildRuleExceptionWithConditions', () => { + it('should build conditions, name and namespace for exception correctly', () => { + const exception = buildRuleExceptionWithConditions({ name, exceptionEntries }); + expect(exception.entries).toEqual( + expect.arrayContaining([ + { + field: 'host.name', + id: '123', + operator: 'included', + type: 'match', + value: 'Host-yxnnos4lo3', + }, + { + field: 'agent.id', + id: '123', + operator: 'included', + type: 'match', + value: 'f4f86e7c-29bd-4655-b7d0-a3d08ad0c322', + }, + { + field: 'user.name', + id: '123', + operator: 'included', + type: 'match', + value: 'c09uzcpj0c', + }, + { + field: 'process.executable', + id: '123', + operator: 'included', + type: 'match', + value: 'C:/malware.exe', + }, + ]) + ); + expect(exception.name).toEqual(name); + expect(exception.namespace_type).toEqual('single'); + }); + }); + describe('buildExceptionEntriesFromAlertFields', () => { + it('should return empty entries if highlightedFields values are empty', () => { + const entries = buildExceptionEntriesFromAlertFields({ highlightedFields: [], alertData }); + expect(entries).toEqual([]); + }); + it('should return empty entries if alertData values are empty', () => { + const entries = buildExceptionEntriesFromAlertFields({ + highlightedFields: expectedHighlightedFields, + alertData: defaultAlertData, + }); + expect(entries).toEqual([]); + }); + it('should build exception entries with "match" operator in case the field key has single value', () => { + const entries = buildExceptionEntriesFromAlertFields({ + highlightedFields: expectedHighlightedFields, + alertData, + }); + expect(entries).toEqual(expectedExceptionEntries); + }); + it('should build the exception entries with "match_any" in case the field key has multiple values', () => { + const entries = buildExceptionEntriesFromAlertFields({ + highlightedFields: [ + ...expectedHighlightedFields, + { + id: 'Endpoint.capabilities', + }, + ], + alertData, + }); + expect(entries).toEqual([...expectedExceptionEntries, entriesWithMatchAny]); + }); + }); + + describe('filterHighlightedFields', () => { + const prefixesToExclude = ['agent', 'cloud']; + it('should not filter any field if no prefixes passed ', () => { + const filteredFields = filterHighlightedFields(expectedHighlightedFields, []); + expect(filteredFields).toEqual(expectedHighlightedFields); + }); + it('should not filter any field if no fields passed ', () => { + const filteredFields = filterHighlightedFields([], prefixesToExclude); + expect(filteredFields).toEqual([]); + }); + it('should filter out the passed prefixes successfully', () => { + const filteredFields = filterHighlightedFields( + expectedHighlightedFields, + prefixesToExclude + ); + expect(filteredFields).not.toEqual( + expect.arrayContaining([ + { + id: 'agent.id', + overrideField: 'agent.status', + label: 'Agent status', + }, + { + id: 'cloud.provider', + }, + { + id: 'cloud.region', + }, + ]) + ); + }); + }); + describe('getAlertHighlightedFields', () => { + const baseGeneratedAlertHighlightedFields = [ + { + id: 'host.name', + }, + { + id: 'agent.id', + label: 'Agent status', + overrideField: 'agent.status', + }, + { + id: 'user.name', + }, + { + id: 'cloud.provider', + }, + { + id: 'cloud.region', + }, + { + id: 'orchestrator.cluster.id', + }, + { + id: 'orchestrator.cluster.name', + }, + { + id: 'container.image.name', + }, + { + id: 'container.image.tag', + }, + { + id: 'orchestrator.namespace', + }, + { + id: 'orchestrator.resource.parent.type', + }, + { + id: 'orchestrator.resource.type', + }, + { + id: 'process.executable', + }, + { + id: 'file.path', + }, + ]; + const allHighlightFields = [ + ...baseGeneratedAlertHighlightedFields, + { + id: 'file.name', + }, + { + id: 'file.hash.sha256', + }, + { + id: 'file.directory', + }, + { + id: 'process.name', + }, + { + id: 'file.Ext.quarantine_path', + label: 'Quarantined file path', + overrideField: 'quarantined.path', + }, + ]; + it('should return the highlighted fields correctly when eventCode, eventCategory and RuleType are in the alertData', () => { + const res = getAlertHighlightedFields(alertData); + expect(res).toEqual(allHighlightFields); + }); + it('should return highlighted fields without the file.Ext.quarantine_path when "event.code" is not in the alertData', () => { + const alertDataWithoutEventCode = { ...alertData, 'event.code': null }; + const res = getAlertHighlightedFields(alertDataWithoutEventCode); + expect(res).toEqual([ + ...baseGeneratedAlertHighlightedFields, + { + id: 'file.name', + }, + { + id: 'file.hash.sha256', + }, + { + id: 'file.directory', + }, + { + id: 'process.name', + }, + ]); + }); + it('should return highlighted fields without the file and process props when "event.category" is not in the alertData', () => { + const alertDataWithoutEventCategory = { ...alertData, 'event.category': null }; + const res = getAlertHighlightedFields(alertDataWithoutEventCategory); + expect(res).toEqual([ + ...baseGeneratedAlertHighlightedFields, + { + id: 'file.Ext.quarantine_path', + label: 'Quarantined file path', + overrideField: 'quarantined.path', + }, + ]); + }); + it('should return all highlighted fields even when the "kibana.alert.rule.type" is not in the alertData', () => { + const alertDataWithoutEventCategory = { ...alertData, 'kibana.alert.rule.type': null }; + const res = getAlertHighlightedFields(alertDataWithoutEventCategory); + expect(res).toEqual(allHighlightFields); + }); + it('should return all highlighted fields when there are no fields to be filtered out', () => { + jest.mock('./highlighted_fields_config', () => ({ highlightedFieldsPrefixToExclude: [] })); + + const res = getAlertHighlightedFields(alertData); + expect(res).toEqual(allHighlightFields); + }); + }); + describe('getPrepopulatedRuleExceptionWithHighlightFields', () => { + it('should not create any exception and return null if there are no highlighted fields', () => { + jest.spyOn(mockHelpers, 'getAlertHighlightedFields').mockReturnValue([]); + + const res = getPrepopulatedRuleExceptionWithHighlightFields({ + alertData: defaultAlertData, + exceptionItemName: '', + }); + expect(res).toBe(null); + }); + it('should not create any exception and return null if there are exception entries generated', () => { + jest.spyOn(mockHelpers, 'buildExceptionEntriesFromAlertFields').mockReturnValue([]); + + const res = getPrepopulatedRuleExceptionWithHighlightFields({ + alertData: defaultAlertData, + exceptionItemName: '', + }); + expect(res).toBe(null); + }); + it('should create a new exception and populate its entries with the highlighted fields', () => { + const exception = getPrepopulatedRuleExceptionWithHighlightFields({ + alertData, + exceptionItemName: name, + }); + + expect(exception?.entries).toEqual( + expectedExceptionEntries.map((entry) => ({ ...entry, id: '123' })) + ); + expect(exception?.name).toEqual(name); + }); + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx index 87d2e437baeed..396714258cd33 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx @@ -8,7 +8,7 @@ import React from 'react'; import type { EuiCommentProps } from '@elastic/eui'; import { EuiText, EuiAvatar } from '@elastic/eui'; -import { capitalize, omit } from 'lodash'; +import { capitalize, get, omit } from 'lodash'; import type { Moment } from 'moment'; import moment from 'moment'; @@ -24,8 +24,14 @@ import type { ExceptionListItemSchema, UpdateExceptionListItemSchema, ExceptionListSchema, + EntriesArray, +} from '@kbn/securitysolution-io-ts-list-types'; +import { + ListOperatorTypeEnum, + ListOperatorEnum, + comment, + osType, } from '@kbn/securitysolution-io-ts-list-types'; -import { comment, osType } from '@kbn/securitysolution-io-ts-list-types'; import type { ExceptionsBuilderExceptionItem, @@ -36,6 +42,8 @@ import type { DataViewBase } from '@kbn/es-query'; import { removeIdFromExceptionItemsEntries } from '@kbn/securitysolution-list-hooks'; import type { EcsSecurityExtension as Ecs, CodeSignature } from '@kbn/securitysolution-ecs'; +import type { EventSummaryField } from '../../../common/components/event_details/types'; +import { getEventFieldsToDisplay } from '../../../common/components/event_details/get_alert_summary_rows'; import * as i18n from './translations'; import type { AlertData, Flattened } from './types'; @@ -45,6 +53,13 @@ import exceptionableWindowsMacFields from './exceptionable_windows_mac_fields.js import exceptionableEndpointFields from './exceptionable_endpoint_fields.json'; import { EXCEPTIONABLE_ENDPOINT_EVENT_FIELDS } from '../../../../common/endpoint/exceptions/exceptionable_endpoint_event_fields'; import { ALERT_ORIGINAL_EVENT } from '../../../../common/field_maps/field_names'; +import { + EVENT_CODE, + EVENT_CATEGORY, + getKibanaAlertIdField, + highlightedFieldsPrefixToExclude, + KIBANA_ALERT_RULE_TYPE, +} from './highlighted_fields_config'; export const filterIndexPatterns = ( patterns: DataViewBase, @@ -870,3 +885,111 @@ export const enrichSharedExceptions = ( }); }); }; + +/** + * Creates new Rule exception item with passed in entries + */ +export const buildRuleExceptionWithConditions = ({ + name, + exceptionEntries, +}: { + name: string; + exceptionEntries: EntriesArray; +}): ExceptionsBuilderExceptionItem => { + return { + ...getNewExceptionItem({ listId: undefined, namespaceType: 'single', name }), + entries: addIdToEntries(exceptionEntries), + }; +}; + +/** + Generate exception conditions based on the highlighted fields of the alert that + have corresponding values in the alert data. + For the initial implementation the nested conditions are not considered + */ +export const buildExceptionEntriesFromAlertFields = ({ + highlightedFields, + alertData, +}: { + highlightedFields: EventSummaryField[]; + alertData: AlertData; +}): EntriesArray => { + return Object.values(highlightedFields).reduce((acc: EntriesArray, field) => { + const fieldKey = field.id; + const fieldValue = get(alertData, fieldKey) || get(alertData, getKibanaAlertIdField(fieldKey)); + + if (fieldValue) { + acc.push({ + field: fieldKey, + operator: ListOperatorEnum.INCLUDED, + type: Array.isArray(fieldValue) + ? ListOperatorTypeEnum.MATCH_ANY + : ListOperatorTypeEnum.MATCH, + value: fieldValue, + }); + } + return acc; + }, []); +}; +/** + * Prepopulate the Rule Exception with the highlighted fields from the Alert's Summary. + * @param alertData The Alert data object + * @param exceptionItemName The name of the Exception Item + * @returns A new Rule Exception Item with the highlighted fields as entries, + */ +export const getPrepopulatedRuleExceptionWithHighlightFields = ({ + alertData, + exceptionItemName, +}: { + alertData: AlertData; + exceptionItemName: string; +}): ExceptionsBuilderExceptionItem | null => { + const highlightedFields = getAlertHighlightedFields(alertData); + if (!highlightedFields.length) return null; + + const exceptionEntries = buildExceptionEntriesFromAlertFields({ highlightedFields, alertData }); + if (!exceptionEntries.length) return null; + + return buildRuleExceptionWithConditions({ + name: exceptionItemName, + exceptionEntries, + }); +}; + +/** + Filters out the irrelevant highlighted fields for Rule exceptions using + the "highlightedFieldsPrefixToExclude" array. +*/ +export const filterHighlightedFields = ( + fields: EventSummaryField[], + prefixesToExclude: string[] +): EventSummaryField[] => { + return fields.filter(({ id }) => { + return !prefixesToExclude.some((field: string) => id.startsWith(field)); + }); +}; + +/** + * Retrieve the highlighted fields from the Alert Summary based on the following Alert properties: + * * event.category + * * event.code + * * kibana.alert.rule.type + * @param alertData The Alert data object + */ +export const getAlertHighlightedFields = (alertData: AlertData): EventSummaryField[] => { + const eventCategory = get(alertData, EVENT_CATEGORY); + const eventCode = get(alertData, EVENT_CODE); + const eventRuleType = get(alertData, KIBANA_ALERT_RULE_TYPE); + + const eventCategories = { + primaryEventCategory: eventCategory, + allEventCategories: [eventCategory], + }; + + const fieldsToDisplay = getEventFieldsToDisplay({ + eventCategories, + eventCode, + eventRuleType, + }); + return filterHighlightedFields(fieldsToDisplay, highlightedFieldsPrefixToExclude); +}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/highlighted_fields_config.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/highlighted_fields_config.ts new file mode 100644 index 0000000000000..58c6c14b355ed --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/highlighted_fields_config.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. + */ + +/** + * The highlightedFieldsPrefixToExclude is an array of prefixes + * that should be disregarded in the Rule Exception.These prefixes + * are irrelevant to the exception and should be ignored,even if + * they were retrieved as Highlighted Fields from the "getEventFieldsToDisplay". + */ +export const highlightedFieldsPrefixToExclude = ['kibana.alert.rule', 'signal.rule', 'rule']; + +export const getKibanaAlertIdField = (id: string) => `kibana.alert.${id}`; + +export const EVENT_CATEGORY = 'event.category'; +export const EVENT_CODE = 'event.code'; +export const KIBANA_ALERT_RULE_TYPE = 'kibana.alert.rule.type'; From 2b81164ff99d59b039b7a0dab5dcfe561f484ad1 Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Thu, 15 Jun 2023 17:50:54 +0200 Subject: [PATCH 18/59] [http] Only allow `2023-10-31` when registering public versions (#159553) ## Summary Adds logic (and tests) to ensure that all registered public routes are set to `2023-10-31` for now. This check is only performed in dev mode which allows us to test our existing route default logic. ### Notes This works best as a runtime check given the versioned router API, but perhaps I missed a way to do this with just type checking? --- .../core_versioned_route.test.ts | 164 ++++++++++-------- .../versioned_router/core_versioned_route.ts | 11 +- .../is_valid_route_version.test.ts | 14 +- .../is_valid_route_version.ts | 16 +- .../src/test_types.ts | 2 +- .../http/versioned_router.test.ts | 24 ++- .../components/app/onboarding/index.tsx | 2 +- .../service_overview.stories.tsx | 2 +- .../service_page/service_page.tsx | 4 +- .../settings_page/save_config.ts | 2 +- .../settings/agent_configurations/index.tsx | 2 +- .../list/confirm_delete_modal.tsx | 4 +- .../agent_configurations/list/index.tsx | 2 +- .../settings/agent_keys/create_agent_key.tsx | 2 +- .../edit_agent_configuration_route_view.tsx | 2 +- .../annotations/annotations_context.tsx | 2 +- .../apm/server/routes/agent_keys/route.ts | 2 +- .../plugins/apm/server/routes/fleet/route.ts | 2 +- .../apm/server/routes/services/route.ts | 4 +- .../settings/agent_configuration/route.ts | 14 +- .../apm/server/routes/source_maps/route.ts | 6 +- .../services/ml_api_service/saved_objects.ts | 2 +- .../plugins/ml/server/routes/saved_objects.ts | 2 +- .../server/routes/rules/route.ts | 2 +- .../observability/server/routes/slo/route.ts | 14 +- .../apis/ml/saved_objects/sync_jobs.ts | 2 +- .../ml/saved_objects/sync_trained_models.ts | 2 +- .../tests/feature_controls.spec.ts | 8 +- .../tests/fleet/apm_package_policy.spec.ts | 10 +- .../tests/inspect/inspect.spec.ts | 2 +- .../tests/services/annotations.spec.ts | 10 +- .../services/derived_annotations.spec.ts | 4 +- .../agent_configuration.spec.ts | 18 +- .../settings/agent_keys/agent_keys.spec.ts | 2 +- .../tests/sourcemaps/sourcemaps.ts | 10 +- x-pack/test/functional/services/ml/api.ts | 2 +- 36 files changed, 211 insertions(+), 162 deletions(-) diff --git a/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts b/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts index 032914981ceb4..1afc0218a993e 100644 --- a/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts +++ b/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts @@ -116,7 +116,7 @@ describe('Versioned route', () => { ).not.toThrow(); }); - it('only allows versions date strings for public APIs', () => { + it('only allows correctly formatted version date strings for public APIs', () => { const versionedRouter = CoreVersionedRouter.from({ router }); expect(() => versionedRouter @@ -136,80 +136,10 @@ describe('Versioned route', () => { expect(() => versionedRouter .get({ path: '/test/{id}', access: 'public' }) - .addVersion({ version: '2020-02-02', validate: false }, handlerFn) + .addVersion({ version: '2023-10-31', validate: false }, handlerFn) ).not.toThrow(); }); - it('runs request and response validations', async () => { - let handler: RequestHandler; - - let validatedBody = false; - let validatedParams = false; - let validatedQuery = false; - let validatedOutputBody = false; - - (router.post as jest.Mock).mockImplementation((opts: unknown, fn) => (handler = fn)); - const versionedRouter = CoreVersionedRouter.from({ router, isDev: true }); - versionedRouter.post({ path: '/test/{id}', access: 'internal' }).addVersion( - { - version: '1', - validate: { - request: { - body: schema.object({ - foo: schema.number({ - validate: () => { - validatedBody = true; - }, - }), - }), - params: schema.object({ - foo: schema.number({ - validate: () => { - validatedParams = true; - }, - }), - }), - query: schema.object({ - foo: schema.number({ - validate: () => { - validatedQuery = true; - }, - }), - }), - }, - response: { - 200: { - body: schema.object({ - foo: schema.number({ - validate: () => { - validatedOutputBody = true; - }, - }), - }), - }, - }, - }, - }, - handlerFn - ); - - const kibanaResponse = await handler!( - {} as any, - createRequest({ - version: '1', - body: { foo: 1 }, - params: { foo: 1 }, - query: { foo: 1 }, - }), - responseFactory - ); - - expect(kibanaResponse.status).toBe(200); - expect(validatedBody).toBe(true); - expect(validatedParams).toBe(true); - expect(validatedQuery).toBe(true); - expect(validatedOutputBody).toBe(true); - }); it('passes through the expected values to the IRouter registrar', () => { const versionedRouter = CoreVersionedRouter.from({ router }); const opts: Parameters[0] = { @@ -238,4 +168,94 @@ describe('Versioned route', () => { expect.any(Function) ); }); + + it('allows public versions other than "2023-10-31"', () => { + expect(() => + CoreVersionedRouter.from({ router, isDev: false }) + .get({ access: 'public', path: '/foo' }) + .addVersion({ version: '2023-01-31', validate: false }, (ctx, req, res) => res.ok()) + ).not.toThrow(); + }); + + describe('when in dev', () => { + // NOTE: Temporary test to ensure single public API version is enforced + it('only allows "2023-10-31" as public route versions', () => { + expect(() => + CoreVersionedRouter.from({ router, isDev: true }) + .get({ access: 'public', path: '/foo' }) + .addVersion({ version: '2023-01-31', validate: false }, (ctx, req, res) => res.ok()) + ).toThrow(/Invalid public version/); + }); + + it('runs request AND response validations', async () => { + let handler: RequestHandler; + + let validatedBody = false; + let validatedParams = false; + let validatedQuery = false; + let validatedOutputBody = false; + + (router.post as jest.Mock).mockImplementation((opts: unknown, fn) => (handler = fn)); + const versionedRouter = CoreVersionedRouter.from({ router, isDev: true }); + versionedRouter.post({ path: '/test/{id}', access: 'internal' }).addVersion( + { + version: '1', + validate: { + request: { + body: schema.object({ + foo: schema.number({ + validate: () => { + validatedBody = true; + }, + }), + }), + params: schema.object({ + foo: schema.number({ + validate: () => { + validatedParams = true; + }, + }), + }), + query: schema.object({ + foo: schema.number({ + validate: () => { + validatedQuery = true; + }, + }), + }), + }, + response: { + 200: { + body: schema.object({ + foo: schema.number({ + validate: () => { + validatedOutputBody = true; + }, + }), + }), + }, + }, + }, + }, + handlerFn + ); + + const kibanaResponse = await handler!( + {} as any, + createRequest({ + version: '1', + body: { foo: 1 }, + params: { foo: 1 }, + query: { foo: 1 }, + }), + responseFactory + ); + + expect(kibanaResponse.status).toBe(200); + expect(validatedBody).toBe(true); + expect(validatedParams).toBe(true); + expect(validatedQuery).toBe(true); + expect(validatedOutputBody).toBe(true); + }); + }); }); diff --git a/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.ts b/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.ts index d757c2d457607..a3f9791de82db 100644 --- a/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.ts +++ b/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.ts @@ -24,7 +24,7 @@ import type { Method } from './types'; import type { CoreVersionedRouter } from './core_versioned_router'; import { validate } from './validate'; -import { isValidRouteVersion } from './is_valid_route_version'; +import { isAllowedPublicVersion, isValidRouteVersion } from './is_valid_route_version'; import { injectResponseHeaders } from './inject_response_headers'; import { resolvers } from './handler_resolvers'; @@ -195,6 +195,15 @@ export class CoreVersionedRoute implements VersionedRoute { } private validateVersion(version: string) { + // We do an additional check here while we only have a single allowed public version + // for all public Kibana HTTP APIs + if (this.router.isDev && this.isPublic) { + const message = isAllowedPublicVersion(version); + if (message) { + throw new Error(message); + } + } + const message = isValidRouteVersion(this.isPublic, version); if (message) { throw new Error(message); diff --git a/packages/core/http/core-http-router-server-internal/src/versioned_router/is_valid_route_version.test.ts b/packages/core/http/core-http-router-server-internal/src/versioned_router/is_valid_route_version.test.ts index 4394acfcaa2b4..5525858153732 100644 --- a/packages/core/http/core-http-router-server-internal/src/versioned_router/is_valid_route_version.test.ts +++ b/packages/core/http/core-http-router-server-internal/src/versioned_router/is_valid_route_version.test.ts @@ -6,7 +6,18 @@ * Side Public License, v 1. */ -import { isValidRouteVersion } from './is_valid_route_version'; +import { isValidRouteVersion, isAllowedPublicVersion } from './is_valid_route_version'; + +describe('isAllowedPublicVersion', () => { + test('allows 2023-10-31', () => { + expect(isAllowedPublicVersion('2023-10-31')).toBe(undefined); + }); + test('disallows non-"2023-10-31" strings', () => { + expect(isAllowedPublicVersion('2020-01-01')).toMatch(/Invalid public version/); + expect(isAllowedPublicVersion('foo')).toMatch(/Invalid public version/); + expect(isAllowedPublicVersion('')).toMatch(/Invalid public version/); + }); +}); describe('isValidRouteVersion', () => { describe('public', () => { @@ -37,6 +48,7 @@ describe('isValidRouteVersion', () => { ['11 '], [' 11 '], ['-1'], + ['010'], ])('%p returns an error message', (value: string) => { expect(isValidRouteVersion(false, value)).toMatch(/Invalid version number/); }); diff --git a/packages/core/http/core-http-router-server-internal/src/versioned_router/is_valid_route_version.ts b/packages/core/http/core-http-router-server-internal/src/versioned_router/is_valid_route_version.ts index 553ddd5fa9300..7b5a30d2a2bfb 100644 --- a/packages/core/http/core-http-router-server-internal/src/versioned_router/is_valid_route_version.ts +++ b/packages/core/http/core-http-router-server-internal/src/versioned_router/is_valid_route_version.ts @@ -5,11 +5,23 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - import moment from 'moment'; const PUBLIC_VERSION_REGEX = /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/; -const INTERNAL_VERSION_REGEX = /^[0-9]+$/; +const INTERNAL_VERSION_REGEX = /^[1-9][0-9]*$/; + +/** + * To bring all of Kibana's first public API versions in-sync with an initial + * release date we only allow one public version temporarily. + * @internal + */ +const ALLOWED_PUBLIC_VERSION = '2023-10-31'; + +export function isAllowedPublicVersion(version: string): undefined | string { + if (ALLOWED_PUBLIC_VERSION !== version) { + return `Invalid public version, for now please use "${ALLOWED_PUBLIC_VERSION}" as the version for all public routes. Received "${version}".}"`; + } +} /** * For public routes we must check that the version is a string that is YYYY-MM-DD. diff --git a/packages/kbn-server-route-repository/src/test_types.ts b/packages/kbn-server-route-repository/src/test_types.ts index 61909be0967be..46e9a258c0b35 100644 --- a/packages/kbn-server-route-repository/src/test_types.ts +++ b/packages/kbn-server-route-repository/src/test_types.ts @@ -81,7 +81,7 @@ createServerRouteFactory<{}, { options: { tags: string[] } }>()({ }); createServerRouteFactory<{}, { options: { tags: string[] } }>()({ - endpoint: 'GET /api/endpoint_with_params 2023-05-22', + endpoint: 'GET /api/endpoint_with_params 2023-10-31', options: { tags: [], }, diff --git a/src/core/server/integration_tests/http/versioned_router.test.ts b/src/core/server/integration_tests/http/versioned_router.test.ts index 89193c6568a6b..0fbd64acad9ce 100644 --- a/src/core/server/integration_tests/http/versioned_router.test.ts +++ b/src/core/server/integration_tests/http/versioned_router.test.ts @@ -172,8 +172,8 @@ describe('Routing versioned requests', () => { it('returns the version in response headers', async () => { router.versioned .get({ path: '/my-path', access: 'public' }) - .addVersion({ validate: false, version: '2020-02-02' }, async (ctx, req, res) => { - return res.ok({ body: { v: '2020-02-02' } }); + .addVersion({ validate: false, version: '2023-10-31' }, async (ctx, req, res) => { + return res.ok({ body: { foo: 'bar' } }); }); await server.start(); @@ -181,10 +181,10 @@ describe('Routing versioned requests', () => { await expect( supertest .get('/my-path') - .set('Elastic-Api-Version', '2020-02-02') + .set('Elastic-Api-Version', '2023-10-31') .expect(200) .then(({ header }) => header) - ).resolves.toEqual(expect.objectContaining({ 'elastic-api-version': '2020-02-02' })); + ).resolves.toEqual(expect.objectContaining({ 'elastic-api-version': '2023-10-31' })); }); it('runs response validation when in dev', async () => { @@ -259,19 +259,15 @@ describe('Routing versioned requests', () => { ).resolves.toMatch(/Please specify.+version/); }); - it.each([ - ['public', '2022-02-02', '2022-02-03'], - ['internal', '1', '2'], - ])('requires version headers to be set %p when in dev', async (access, v1, v2) => { + it('requires version headers to be set for public endpoints when in dev', async () => { await setupServer({ dev: true }); router.versioned - .get({ path: '/my-path', access: access as 'internal' | 'public' }) - .addVersion( - { version: v1, validate: { response: { 200: { body: schema.number() } } } }, - async (ctx, req, res) => res.ok() - ) + .get({ + path: '/my-path', + access: 'public', + }) .addVersion( - { version: v2, validate: { response: { 200: { body: schema.number() } } } }, + { version: '2023-10-31', validate: { response: { 200: { body: schema.number() } } } }, async (ctx, req, res) => res.ok() ); await server.start(); diff --git a/x-pack/plugins/apm/public/components/app/onboarding/index.tsx b/x-pack/plugins/apm/public/components/app/onboarding/index.tsx index 30c065e10b349..fdfc011a2d61f 100644 --- a/x-pack/plugins/apm/public/components/app/onboarding/index.tsx +++ b/x-pack/plugins/apm/public/components/app/onboarding/index.tsx @@ -40,7 +40,7 @@ export function Onboarding() { const privileges: PrivilegeType[] = [PrivilegeType.EVENT]; const { agentKey } = await callApmApi( - 'POST /api/apm/agent_keys 2023-05-22', + 'POST /api/apm/agent_keys 2023-10-31', { signal: null, params: { diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview.stories.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview.stories.tsx index 645e687ef80c2..21ff34057a795 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview.stories.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview.stories.tsx @@ -23,7 +23,7 @@ const stories: Meta<{}> = { const transactionTypeStatus = FETCH_STATUS.SUCCESS; mockApmApiCallResponse( - `GET /api/apm/services/{serviceName}/annotation/search 2023-05-22`, + `GET /api/apm/services/{serviceName}/annotation/search 2023-10-31`, () => ({ annotations: [] }) ); mockApmApiCallResponse( diff --git a/x-pack/plugins/apm/public/components/app/settings/agent_configurations/agent_configuration_create_edit/service_page/service_page.tsx b/x-pack/plugins/apm/public/components/app/settings/agent_configurations/agent_configuration_create_edit/service_page/service_page.tsx index 1ad7f3eb5aea2..9cb93b9adab4b 100644 --- a/x-pack/plugins/apm/public/components/app/settings/agent_configurations/agent_configuration_create_edit/service_page/service_page.tsx +++ b/x-pack/plugins/apm/public/components/app/settings/agent_configurations/agent_configuration_create_edit/service_page/service_page.tsx @@ -41,7 +41,7 @@ export function ServicePage({ newConfig, setNewConfig, onClickNext }: Props) { (callApmApi) => { if (newConfig.service.name) { return callApmApi( - 'GET /api/apm/settings/agent-configuration/environments 2023-05-22', + 'GET /api/apm/settings/agent-configuration/environments 2023-10-31', { params: { query: { serviceName: omitAllOption(newConfig.service.name) }, @@ -65,7 +65,7 @@ export function ServicePage({ newConfig, setNewConfig, onClickNext }: Props) { } const { agentName } = await callApmApi( - 'GET /api/apm/settings/agent-configuration/agent_name 2023-05-22', + 'GET /api/apm/settings/agent-configuration/agent_name 2023-10-31', { params: { query: { serviceName } }, } diff --git a/x-pack/plugins/apm/public/components/app/settings/agent_configurations/agent_configuration_create_edit/settings_page/save_config.ts b/x-pack/plugins/apm/public/components/app/settings/agent_configurations/agent_configuration_create_edit/settings_page/save_config.ts index a11dfc3d5b8c6..c23cd144ea8e8 100644 --- a/x-pack/plugins/apm/public/components/app/settings/agent_configurations/agent_configuration_create_edit/settings_page/save_config.ts +++ b/x-pack/plugins/apm/public/components/app/settings/agent_configurations/agent_configuration_create_edit/settings_page/save_config.ts @@ -25,7 +25,7 @@ export async function saveConfig({ toasts: NotificationsStart['toasts']; }) { try { - await callApmApi('PUT /api/apm/settings/agent-configuration 2023-05-22', { + await callApmApi('PUT /api/apm/settings/agent-configuration 2023-10-31', { signal: null, params: { query: { overwrite: isEditMode }, diff --git a/x-pack/plugins/apm/public/components/app/settings/agent_configurations/index.tsx b/x-pack/plugins/apm/public/components/app/settings/agent_configurations/index.tsx index deb377d087932..829433d707541 100644 --- a/x-pack/plugins/apm/public/components/app/settings/agent_configurations/index.tsx +++ b/x-pack/plugins/apm/public/components/app/settings/agent_configurations/index.tsx @@ -31,7 +31,7 @@ export function AgentConfigurations() { status, } = useFetcher( (callApmApi) => - callApmApi('GET /api/apm/settings/agent-configuration 2023-05-22'), + callApmApi('GET /api/apm/settings/agent-configuration 2023-10-31'), [], { preservePreviousData: false, showToastOnError: false } ); diff --git a/x-pack/plugins/apm/public/components/app/settings/agent_configurations/list/confirm_delete_modal.tsx b/x-pack/plugins/apm/public/components/app/settings/agent_configurations/list/confirm_delete_modal.tsx index 7fc1c25608425..9df13734fdf97 100644 --- a/x-pack/plugins/apm/public/components/app/settings/agent_configurations/list/confirm_delete_modal.tsx +++ b/x-pack/plugins/apm/public/components/app/settings/agent_configurations/list/confirm_delete_modal.tsx @@ -17,7 +17,7 @@ import { import { useApmPluginContext } from '../../../../../context/apm_plugin/use_apm_plugin_context'; type Config = - APIReturnType<'GET /api/apm/settings/agent-configuration 2023-05-22'>['configurations'][0]; + APIReturnType<'GET /api/apm/settings/agent-configuration 2023-10-31'>['configurations'][0]; interface Props { config: Config; @@ -72,7 +72,7 @@ async function deleteConfig( ) { try { await callApmApi( - 'DELETE /api/apm/settings/agent-configuration 2023-05-22', + 'DELETE /api/apm/settings/agent-configuration 2023-10-31', { signal: null, params: { diff --git a/x-pack/plugins/apm/public/components/app/settings/agent_configurations/list/index.tsx b/x-pack/plugins/apm/public/components/app/settings/agent_configurations/list/index.tsx index 630ba69fe894a..5a635b1ae92f1 100644 --- a/x-pack/plugins/apm/public/components/app/settings/agent_configurations/list/index.tsx +++ b/x-pack/plugins/apm/public/components/app/settings/agent_configurations/list/index.tsx @@ -29,7 +29,7 @@ import { TimestampTooltip } from '../../../../shared/timestamp_tooltip'; import { ConfirmDeleteModal } from './confirm_delete_modal'; type Config = - APIReturnType<'GET /api/apm/settings/agent-configuration 2023-05-22'>['configurations'][0]; + APIReturnType<'GET /api/apm/settings/agent-configuration 2023-10-31'>['configurations'][0]; interface Props { status: FETCH_STATUS; diff --git a/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key.tsx b/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key.tsx index 33d9820d3ed90..5a996d5dcbb3c 100644 --- a/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key.tsx +++ b/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key.tsx @@ -81,7 +81,7 @@ export function CreateAgentKeyFlyout({ onCancel, onSuccess, onError }: Props) { } const { agentKey } = await callApmApi( - 'POST /api/apm/agent_keys 2023-05-22', + 'POST /api/apm/agent_keys 2023-10-31', { signal: null, params: { diff --git a/x-pack/plugins/apm/public/components/routing/settings/edit_agent_configuration_route_view.tsx b/x-pack/plugins/apm/public/components/routing/settings/edit_agent_configuration_route_view.tsx index 0cd180890c680..36cf4fc9ab368 100644 --- a/x-pack/plugins/apm/public/components/routing/settings/edit_agent_configuration_route_view.tsx +++ b/x-pack/plugins/apm/public/components/routing/settings/edit_agent_configuration_route_view.tsx @@ -22,7 +22,7 @@ export function EditAgentConfigurationRouteView() { const res = useFetcher( (callApmApi) => { return callApmApi( - 'GET /api/apm/settings/agent-configuration/view 2023-05-22', + 'GET /api/apm/settings/agent-configuration/view 2023-10-31', { params: { query: { name, environment } }, } diff --git a/x-pack/plugins/apm/public/context/annotations/annotations_context.tsx b/x-pack/plugins/apm/public/context/annotations/annotations_context.tsx index 880298b253602..fbd2715b17bce 100644 --- a/x-pack/plugins/apm/public/context/annotations/annotations_context.tsx +++ b/x-pack/plugins/apm/public/context/annotations/annotations_context.tsx @@ -32,7 +32,7 @@ export function AnnotationsContextProvider({ (callApmApi) => { if (start && end && serviceName) { return callApmApi( - 'GET /api/apm/services/{serviceName}/annotation/search 2023-05-22', + 'GET /api/apm/services/{serviceName}/annotation/search 2023-10-31', { params: { path: { diff --git a/x-pack/plugins/apm/server/routes/agent_keys/route.ts b/x-pack/plugins/apm/server/routes/agent_keys/route.ts index 6977e1562d0ff..8e1fb7f77ca2f 100644 --- a/x-pack/plugins/apm/server/routes/agent_keys/route.ts +++ b/x-pack/plugins/apm/server/routes/agent_keys/route.ts @@ -96,7 +96,7 @@ const invalidateAgentKeyRoute = createApmServerRoute({ }); const createAgentKeyRoute = createApmServerRoute({ - endpoint: 'POST /api/apm/agent_keys 2023-05-22', + endpoint: 'POST /api/apm/agent_keys 2023-10-31', options: { tags: ['access:apm', 'access:apm_write'] }, params: t.type({ body: t.type({ diff --git a/x-pack/plugins/apm/server/routes/fleet/route.ts b/x-pack/plugins/apm/server/routes/fleet/route.ts index 4fa92a2275647..c786f7fd50cf1 100644 --- a/x-pack/plugins/apm/server/routes/fleet/route.ts +++ b/x-pack/plugins/apm/server/routes/fleet/route.ts @@ -69,7 +69,7 @@ const fleetAgentsRoute = createApmServerRoute({ }); const saveApmServerSchemaRoute = createApmServerRoute({ - endpoint: 'POST /api/apm/fleet/apm_server_schema 2023-05-22', + endpoint: 'POST /api/apm/fleet/apm_server_schema 2023-10-31', options: { tags: ['access:apm', 'access:apm_write'] }, params: t.type({ body: t.type({ diff --git a/x-pack/plugins/apm/server/routes/services/route.ts b/x-pack/plugins/apm/server/routes/services/route.ts index 649ed7490c4b4..e13c7564a3fff 100644 --- a/x-pack/plugins/apm/server/routes/services/route.ts +++ b/x-pack/plugins/apm/server/routes/services/route.ts @@ -382,7 +382,7 @@ const serviceNodeMetadataRoute = createApmServerRoute({ }); const serviceAnnotationsRoute = createApmServerRoute({ - endpoint: 'GET /api/apm/services/{serviceName}/annotation/search 2023-05-22', + endpoint: 'GET /api/apm/services/{serviceName}/annotation/search 2023-10-31', params: t.type({ path: t.type({ serviceName: t.string, @@ -433,7 +433,7 @@ const serviceAnnotationsRoute = createApmServerRoute({ }); const serviceAnnotationsCreateRoute = createApmServerRoute({ - endpoint: 'POST /api/apm/services/{serviceName}/annotation 2023-05-22', + endpoint: 'POST /api/apm/services/{serviceName}/annotation 2023-10-31', options: { tags: ['access:apm', 'access:apm_write'], }, diff --git a/x-pack/plugins/apm/server/routes/settings/agent_configuration/route.ts b/x-pack/plugins/apm/server/routes/settings/agent_configuration/route.ts index 55e03f3629f9c..64e580fab30ec 100644 --- a/x-pack/plugins/apm/server/routes/settings/agent_configuration/route.ts +++ b/x-pack/plugins/apm/server/routes/settings/agent_configuration/route.ts @@ -40,7 +40,7 @@ function throwNotFoundIfAgentConfigNotAvailable( // get list of configurations const agentConfigurationRoute = createApmServerRoute({ - endpoint: 'GET /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'GET /api/apm/settings/agent-configuration 2023-10-31', options: { tags: ['access:apm'] }, handler: async ( resources @@ -66,7 +66,7 @@ const agentConfigurationRoute = createApmServerRoute({ // get a single configuration const getSingleAgentConfigurationRoute = createApmServerRoute({ - endpoint: 'GET /api/apm/settings/agent-configuration/view 2023-05-22', + endpoint: 'GET /api/apm/settings/agent-configuration/view 2023-10-31', params: t.partial({ query: serviceRt, }), @@ -103,7 +103,7 @@ const getSingleAgentConfigurationRoute = createApmServerRoute({ // delete configuration const deleteAgentConfigurationRoute = createApmServerRoute({ - endpoint: 'DELETE /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'DELETE /api/apm/settings/agent-configuration 2023-10-31', options: { tags: ['access:apm', 'access:apm_write'], }, @@ -171,7 +171,7 @@ const deleteAgentConfigurationRoute = createApmServerRoute({ // create/update configuration const createOrUpdateAgentConfigurationRoute = createApmServerRoute({ - endpoint: 'PUT /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'PUT /api/apm/settings/agent-configuration 2023-10-31', options: { tags: ['access:apm', 'access:apm_write'], }, @@ -248,7 +248,7 @@ export type AgentConfigSearchParams = t.TypeOf; // Lookup single configuration (used by APM Server) const agentConfigurationSearchRoute = createApmServerRoute({ - endpoint: 'POST /api/apm/settings/agent-configuration/search 2023-05-22', + endpoint: 'POST /api/apm/settings/agent-configuration/search 2023-10-31', params: t.type({ body: searchParamsRt, }), @@ -319,7 +319,7 @@ const agentConfigurationSearchRoute = createApmServerRoute({ // get environments for service const listAgentConfigurationEnvironmentsRoute = createApmServerRoute({ - endpoint: 'GET /api/apm/settings/agent-configuration/environments 2023-05-22', + endpoint: 'GET /api/apm/settings/agent-configuration/environments 2023-10-31', params: t.partial({ query: t.partial({ serviceName: t.string }), }), @@ -368,7 +368,7 @@ const listAgentConfigurationEnvironmentsRoute = createApmServerRoute({ // get agentName for service const agentConfigurationAgentNameRoute = createApmServerRoute({ - endpoint: 'GET /api/apm/settings/agent-configuration/agent_name 2023-05-22', + endpoint: 'GET /api/apm/settings/agent-configuration/agent_name 2023-10-31', params: t.type({ query: t.type({ serviceName: t.string }), }), diff --git a/x-pack/plugins/apm/server/routes/source_maps/route.ts b/x-pack/plugins/apm/server/routes/source_maps/route.ts index f6955827a7ae9..ae29267644668 100644 --- a/x-pack/plugins/apm/server/routes/source_maps/route.ts +++ b/x-pack/plugins/apm/server/routes/source_maps/route.ts @@ -50,7 +50,7 @@ function throwNotImplementedIfSourceMapNotAvailable( } const listSourceMapRoute = createApmServerRoute({ - endpoint: 'GET /api/apm/sourcemaps 2023-05-22', + endpoint: 'GET /api/apm/sourcemaps 2023-10-31', options: { tags: ['access:apm'] }, params: t.partial({ query: t.partial({ @@ -88,7 +88,7 @@ const listSourceMapRoute = createApmServerRoute({ }); const uploadSourceMapRoute = createApmServerRoute({ - endpoint: 'POST /api/apm/sourcemaps 2023-05-22', + endpoint: 'POST /api/apm/sourcemaps 2023-10-31', options: { tags: ['access:apm', 'access:apm_write'], body: { accepts: ['multipart/form-data'] }, @@ -170,7 +170,7 @@ const uploadSourceMapRoute = createApmServerRoute({ }); const deleteSourceMapRoute = createApmServerRoute({ - endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-05-22', + endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-10-31', options: { tags: ['access:apm', 'access:apm_write'] }, params: t.type({ path: t.type({ diff --git a/x-pack/plugins/ml/public/application/services/ml_api_service/saved_objects.ts b/x-pack/plugins/ml/public/application/services/ml_api_service/saved_objects.ts index f87040a30e76e..62f61842031f3 100644 --- a/x-pack/plugins/ml/public/application/services/ml_api_service/saved_objects.ts +++ b/x-pack/plugins/ml/public/application/services/ml_api_service/saved_objects.ts @@ -61,7 +61,7 @@ export const savedObjectsApiProvider = (httpService: HttpService) => ({ path: `${ML_EXTERNAL_BASE_PATH}/saved_objects/sync`, method: 'GET', query: { simulate }, - version: '2023-05-15', + version: '2023-10-31', }); }, initSavedObjects(simulate: boolean = false) { diff --git a/x-pack/plugins/ml/server/routes/saved_objects.ts b/x-pack/plugins/ml/server/routes/saved_objects.ts index 4c9bc7a405efc..4deead5b1bf55 100644 --- a/x-pack/plugins/ml/server/routes/saved_objects.ts +++ b/x-pack/plugins/ml/server/routes/saved_objects.ts @@ -88,7 +88,7 @@ export function savedObjectsRoutes( }) .addVersion( { - version: '2023-05-15', + version: '2023-10-31', validate: { request: { query: syncJobObjects, diff --git a/x-pack/plugins/observability/server/routes/rules/route.ts b/x-pack/plugins/observability/server/routes/rules/route.ts index 21d055adf3764..c33f58f6ea75f 100644 --- a/x-pack/plugins/observability/server/routes/rules/route.ts +++ b/x-pack/plugins/observability/server/routes/rules/route.ts @@ -10,7 +10,7 @@ import { Dataset } from '@kbn/rule-registry-plugin/server'; import { createObservabilityServerRoute } from '../create_observability_server_route'; const alertsDynamicIndexPatternRoute = createObservabilityServerRoute({ - endpoint: 'GET /api/observability/rules/alerts/dynamic_index_pattern 2023-05-22', + endpoint: 'GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31', options: { tags: [], }, diff --git a/x-pack/plugins/observability/server/routes/slo/route.ts b/x-pack/plugins/observability/server/routes/slo/route.ts index 07f2fe0c306be..849630d368aa5 100644 --- a/x-pack/plugins/observability/server/routes/slo/route.ts +++ b/x-pack/plugins/observability/server/routes/slo/route.ts @@ -55,7 +55,7 @@ const isLicenseAtLeastPlatinum = async (context: ObservabilityRequestHandlerCont }; const createSLORoute = createObservabilityServerRoute({ - endpoint: 'POST /api/observability/slos 2023-05-22', + endpoint: 'POST /api/observability/slos 2023-10-31', options: { tags: ['access:slo_write'], }, @@ -82,7 +82,7 @@ const createSLORoute = createObservabilityServerRoute({ }); const updateSLORoute = createObservabilityServerRoute({ - endpoint: 'PUT /api/observability/slos/{id} 2023-05-22', + endpoint: 'PUT /api/observability/slos/{id} 2023-10-31', options: { tags: ['access:slo_write'], }, @@ -108,7 +108,7 @@ const updateSLORoute = createObservabilityServerRoute({ }); const deleteSLORoute = createObservabilityServerRoute({ - endpoint: 'DELETE /api/observability/slos/{id} 2023-05-22', + endpoint: 'DELETE /api/observability/slos/{id} 2023-10-31', options: { tags: ['access:slo_write'], }, @@ -140,7 +140,7 @@ const deleteSLORoute = createObservabilityServerRoute({ }); const getSLORoute = createObservabilityServerRoute({ - endpoint: 'GET /api/observability/slos/{id} 2023-05-22', + endpoint: 'GET /api/observability/slos/{id} 2023-10-31', options: { tags: ['access:slo_read'], }, @@ -165,7 +165,7 @@ const getSLORoute = createObservabilityServerRoute({ }); const enableSLORoute = createObservabilityServerRoute({ - endpoint: 'POST /api/observability/slos/{id}/enable 2023-05-22', + endpoint: 'POST /api/observability/slos/{id}/enable 2023-10-31', options: { tags: ['access:slo_write'], }, @@ -191,7 +191,7 @@ const enableSLORoute = createObservabilityServerRoute({ }); const disableSLORoute = createObservabilityServerRoute({ - endpoint: 'POST /api/observability/slos/{id}/disable 2023-05-22', + endpoint: 'POST /api/observability/slos/{id}/disable 2023-10-31', options: { tags: ['access:slo_write'], }, @@ -217,7 +217,7 @@ const disableSLORoute = createObservabilityServerRoute({ }); const findSLORoute = createObservabilityServerRoute({ - endpoint: 'GET /api/observability/slos 2023-05-22', + endpoint: 'GET /api/observability/slos 2023-10-31', options: { tags: ['access:slo_read'], }, diff --git a/x-pack/test/api_integration/apis/ml/saved_objects/sync_jobs.ts b/x-pack/test/api_integration/apis/ml/saved_objects/sync_jobs.ts index 2c1abcc7ab419..e93d3e894fcfd 100644 --- a/x-pack/test/api_integration/apis/ml/saved_objects/sync_jobs.ts +++ b/x-pack/test/api_integration/apis/ml/saved_objects/sync_jobs.ts @@ -27,7 +27,7 @@ export default ({ getService }: FtrProviderContext) => { const { body, status } = await supertest .get(`/s/${idSpace1}/api/ml/saved_objects/sync`) .auth(user, ml.securityCommon.getPasswordForUser(user)) - .set(getCommonRequestHeader('2023-05-15')); + .set(getCommonRequestHeader('2023-10-31')); ml.api.assertResponseStatusCode(expectedStatusCode, status, body); return body; diff --git a/x-pack/test/api_integration/apis/ml/saved_objects/sync_trained_models.ts b/x-pack/test/api_integration/apis/ml/saved_objects/sync_trained_models.ts index dfbe53851926b..33c5da4d2e01c 100644 --- a/x-pack/test/api_integration/apis/ml/saved_objects/sync_trained_models.ts +++ b/x-pack/test/api_integration/apis/ml/saved_objects/sync_trained_models.ts @@ -30,7 +30,7 @@ export default ({ getService }: FtrProviderContext) => { const { body, status } = await supertest .get(`/s/${idSpace1}/api/ml/saved_objects/sync`) .auth(user, ml.securityCommon.getPasswordForUser(user)) - .set(getCommonRequestHeader('2023-05-15')); + .set(getCommonRequestHeader('2023-10-31')); ml.api.assertResponseStatusCode(expectedStatusCode, status, body); return body; diff --git a/x-pack/test/apm_api_integration/tests/feature_controls.spec.ts b/x-pack/test/apm_api_integration/tests/feature_controls.spec.ts index 103cdcced09c7..1ba8a52ea789a 100644 --- a/x-pack/test/apm_api_integration/tests/feature_controls.spec.ts +++ b/x-pack/test/apm_api_integration/tests/feature_controls.spec.ts @@ -43,10 +43,10 @@ export default function featureControlsTests({ getService }: FtrProviderContext) } function createAgent( - body: APIClientRequestParamsOf<'PUT /api/apm/settings/agent-configuration 2023-05-22'>['params']['body'] + body: APIClientRequestParamsOf<'PUT /api/apm/settings/agent-configuration 2023-10-31'>['params']['body'] ) { return apmApiClient.writeUser({ - endpoint: 'PUT /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'PUT /api/apm/settings/agent-configuration 2023-10-31', params: { body, }, @@ -54,10 +54,10 @@ export default function featureControlsTests({ getService }: FtrProviderContext) } function deleteAgent( - body: APIClientRequestParamsOf<'DELETE /api/apm/settings/agent-configuration 2023-05-22'>['params']['body'] + body: APIClientRequestParamsOf<'DELETE /api/apm/settings/agent-configuration 2023-10-31'>['params']['body'] ) { return apmApiClient.writeUser({ - endpoint: 'DELETE /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'DELETE /api/apm/settings/agent-configuration 2023-10-31', params: { body, }, diff --git a/x-pack/test/apm_api_integration/tests/fleet/apm_package_policy.spec.ts b/x-pack/test/apm_api_integration/tests/fleet/apm_package_policy.spec.ts index 61e14bbad2b98..4d4488b674a05 100644 --- a/x-pack/test/apm_api_integration/tests/fleet/apm_package_policy.spec.ts +++ b/x-pack/test/apm_api_integration/tests/fleet/apm_package_policy.spec.ts @@ -53,14 +53,14 @@ export default function ApiTest(ftrProviderContext: FtrProviderContext) { async function createConfiguration(configuration: any) { return apmApiClient.writeUser({ - endpoint: 'PUT /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'PUT /api/apm/settings/agent-configuration 2023-10-31', params: { body: configuration }, }); } async function deleteConfiguration(configuration: any) { return apmApiClient.writeUser({ - endpoint: 'DELETE /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'DELETE /api/apm/settings/agent-configuration 2023-10-31', params: { body: { service: configuration.service } }, }); } @@ -77,7 +77,7 @@ export default function ApiTest(ftrProviderContext: FtrProviderContext) { sourcemap: SourceMap; }) { const response = await apmApiClient.writeUser({ - endpoint: 'POST /api/apm/sourcemaps 2023-05-22', + endpoint: 'POST /api/apm/sourcemaps 2023-10-31', type: 'form-data', params: { body: { @@ -202,11 +202,11 @@ export default function ApiTest(ftrProviderContext: FtrProviderContext) { }); describe('Source maps', () => { - let resp: APIReturnType<'POST /api/apm/sourcemaps 2023-05-22'>; + let resp: APIReturnType<'POST /api/apm/sourcemaps 2023-10-31'>; after(async () => { await apmApiClient.writeUser({ - endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-05-22', + endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-10-31', params: { path: { id: resp.id } }, }); }); diff --git a/x-pack/test/apm_api_integration/tests/inspect/inspect.spec.ts b/x-pack/test/apm_api_integration/tests/inspect/inspect.spec.ts index 7239a6b714308..c4e10fb877817 100644 --- a/x-pack/test/apm_api_integration/tests/inspect/inspect.spec.ts +++ b/x-pack/test/apm_api_integration/tests/inspect/inspect.spec.ts @@ -83,7 +83,7 @@ export default function customLinksTests({ getService }: FtrProviderContext) { it('for agent configs', async () => { const { status, body } = await apmApiClient.readUser({ - endpoint: 'GET /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'GET /api/apm/settings/agent-configuration 2023-10-31', params: { query: { _inspect: true, diff --git a/x-pack/test/apm_api_integration/tests/services/annotations.spec.ts b/x-pack/test/apm_api_integration/tests/services/annotations.spec.ts index 7068239edcdcb..5258eb98dd723 100644 --- a/x-pack/test/apm_api_integration/tests/services/annotations.spec.ts +++ b/x-pack/test/apm_api_integration/tests/services/annotations.spec.ts @@ -29,7 +29,7 @@ export default function annotationApiTests({ getService }: FtrProviderContext) { const es = getService('es'); function expectContainsObj( - source: APIReturnType<'POST /api/apm/services/{serviceName}/annotation 2023-05-22'>, + source: APIReturnType<'POST /api/apm/services/{serviceName}/annotation 2023-10-31'>, expected: JsonObject ) { expect(source).to.eql( @@ -43,10 +43,10 @@ export default function annotationApiTests({ getService }: FtrProviderContext) { } function createAnnotation( - body: APIClientRequestParamsOf<'POST /api/apm/services/{serviceName}/annotation 2023-05-22'>['params']['body'] + body: APIClientRequestParamsOf<'POST /api/apm/services/{serviceName}/annotation 2023-10-31'>['params']['body'] ) { return apmApiClient.annotationWriterUser({ - endpoint: 'POST /api/apm/services/{serviceName}/annotation 2023-05-22', + endpoint: 'POST /api/apm/services/{serviceName}/annotation 2023-10-31', params: { path: { serviceName: 'opbeans-java', @@ -58,11 +58,11 @@ export default function annotationApiTests({ getService }: FtrProviderContext) { function getAnnotation( query: RecursivePartial< - APIClientRequestParamsOf<'GET /api/apm/services/{serviceName}/annotation/search 2023-05-22'>['params']['query'] + APIClientRequestParamsOf<'GET /api/apm/services/{serviceName}/annotation/search 2023-10-31'>['params']['query'] > ) { return apmApiClient.readUser({ - endpoint: 'GET /api/apm/services/{serviceName}/annotation/search 2023-05-22', + endpoint: 'GET /api/apm/services/{serviceName}/annotation/search 2023-10-31', params: { path: { serviceName: 'opbeans-java', diff --git a/x-pack/test/apm_api_integration/tests/services/derived_annotations.spec.ts b/x-pack/test/apm_api_integration/tests/services/derived_annotations.spec.ts index 89685ac206396..6fe079cba963e 100644 --- a/x-pack/test/apm_api_integration/tests/services/derived_annotations.spec.ts +++ b/x-pack/test/apm_api_integration/tests/services/derived_annotations.spec.ts @@ -29,7 +29,7 @@ export default function annotationApiTests({ getService }: FtrProviderContext) { { config: 'basic', archives: [] }, () => { describe('when there are multiple service versions', () => { - let response: APIReturnType<'GET /api/apm/services/{serviceName}/annotation/search 2023-05-22'>; + let response: APIReturnType<'GET /api/apm/services/{serviceName}/annotation/search 2023-10-31'>; before(async () => { const indexExists = await es.indices.exists({ index: indexName }); @@ -119,7 +119,7 @@ export default function annotationApiTests({ getService }: FtrProviderContext) { response = ( await apmApiClient.readUser({ - endpoint: 'GET /api/apm/services/{serviceName}/annotation/search 2023-05-22', + endpoint: 'GET /api/apm/services/{serviceName}/annotation/search 2023-10-31', params: { path: { serviceName: 'opbeans-java', diff --git a/x-pack/test/apm_api_integration/tests/settings/agent_configuration/agent_configuration.spec.ts b/x-pack/test/apm_api_integration/tests/settings/agent_configuration/agent_configuration.spec.ts index 0ad849e1d6435..a0d35c74013f1 100644 --- a/x-pack/test/apm_api_integration/tests/settings/agent_configuration/agent_configuration.spec.ts +++ b/x-pack/test/apm_api_integration/tests/settings/agent_configuration/agent_configuration.spec.ts @@ -27,28 +27,28 @@ export default function agentConfigurationTests({ getService }: FtrProviderConte async function getEnvironments(serviceName: string) { return apmApiClient.readUser({ - endpoint: 'GET /api/apm/settings/agent-configuration/environments 2023-05-22', + endpoint: 'GET /api/apm/settings/agent-configuration/environments 2023-10-31', params: { query: { serviceName } }, }); } function getAgentName(serviceName: string) { return apmApiClient.readUser({ - endpoint: 'GET /api/apm/settings/agent-configuration/agent_name 2023-05-22', + endpoint: 'GET /api/apm/settings/agent-configuration/agent_name 2023-10-31', params: { query: { serviceName } }, }); } function searchConfigurations(configuration: AgentConfigSearchParams) { return apmApiClient.readUser({ - endpoint: 'POST /api/apm/settings/agent-configuration/search 2023-05-22', + endpoint: 'POST /api/apm/settings/agent-configuration/search 2023-10-31', params: { body: configuration }, }); } function getAllConfigurations() { return apmApiClient.readUser({ - endpoint: 'GET /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'GET /api/apm/settings/agent-configuration 2023-10-31', }); } @@ -57,7 +57,7 @@ export default function agentConfigurationTests({ getService }: FtrProviderConte const supertestClient = user === 'read' ? apmApiClient.readUser : apmApiClient.writeUser; return supertestClient({ - endpoint: 'PUT /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'PUT /api/apm/settings/agent-configuration 2023-10-31', params: { body: configuration }, }); } @@ -67,7 +67,7 @@ export default function agentConfigurationTests({ getService }: FtrProviderConte const supertestClient = user === 'read' ? apmApiClient.readUser : apmApiClient.writeUser; return supertestClient({ - endpoint: 'PUT /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'PUT /api/apm/settings/agent-configuration 2023-10-31', params: { query: { overwrite: true }, body: config }, }); } @@ -77,14 +77,14 @@ export default function agentConfigurationTests({ getService }: FtrProviderConte const supertestClient = user === 'read' ? apmApiClient.readUser : apmApiClient.writeUser; return supertestClient({ - endpoint: 'DELETE /api/apm/settings/agent-configuration 2023-05-22', + endpoint: 'DELETE /api/apm/settings/agent-configuration 2023-10-31', params: { body: { service } }, }); } function findExactConfiguration(name: string, environment: string) { return apmApiClient.readUser({ - endpoint: 'GET /api/apm/settings/agent-configuration/view 2023-05-22', + endpoint: 'GET /api/apm/settings/agent-configuration/view 2023-10-31', params: { query: { name, @@ -397,7 +397,7 @@ export default function agentConfigurationTests({ getService }: FtrProviderConte }; let agentConfiguration: - | APIReturnType<'GET /api/apm/settings/agent-configuration/view 2023-05-22'> + | APIReturnType<'GET /api/apm/settings/agent-configuration/view 2023-10-31'> | undefined; before(async () => { diff --git a/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts b/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts index f8ba539e7f724..6ec83468ac411 100644 --- a/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts +++ b/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts @@ -22,7 +22,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { async function createAgentKey(apiClient: ApmApiSupertest, privileges = allApplicationPrivileges) { return await apiClient({ - endpoint: 'POST /api/apm/agent_keys 2023-05-22', + endpoint: 'POST /api/apm/agent_keys 2023-10-31', params: { body: { name: agentKeyName, diff --git a/x-pack/test/apm_api_integration/tests/sourcemaps/sourcemaps.ts b/x-pack/test/apm_api_integration/tests/sourcemaps/sourcemaps.ts index ea3931ecd8994..ecaa2995ffb93 100644 --- a/x-pack/test/apm_api_integration/tests/sourcemaps/sourcemaps.ts +++ b/x-pack/test/apm_api_integration/tests/sourcemaps/sourcemaps.ts @@ -85,7 +85,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { sourcemap: SourceMap; }) { const response = await apmApiClient.writeUser({ - endpoint: 'POST /api/apm/sourcemaps 2023-05-22', + endpoint: 'POST /api/apm/sourcemaps 2023-10-31', type: 'form-data', params: { body: { @@ -107,7 +107,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { async function deleteSourcemap(id: string) { await apmApiClient.writeUser({ - endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-05-22', + endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-10-31', params: { path: { id } }, }); } @@ -116,7 +116,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const query = page && perPage ? { page, perPage } : {}; const response = await apmApiClient.readUser({ - endpoint: 'GET /api/apm/sourcemaps 2023-05-22', + endpoint: 'GET /api/apm/sourcemaps 2023-10-31', params: { query }, }); return response.body; @@ -136,11 +136,11 @@ export default function ApiTest({ getService }: FtrProviderContext) { } } - let resp: APIReturnType<'POST /api/apm/sourcemaps 2023-05-22'>; + let resp: APIReturnType<'POST /api/apm/sourcemaps 2023-10-31'>; describe('upload source map', () => { after(async () => { await apmApiClient.writeUser({ - endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-05-22', + endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-10-31', params: { path: { id: resp.id } }, }); }); diff --git a/x-pack/test/functional/services/ml/api.ts b/x-pack/test/functional/services/ml/api.ts index 1f2d0d9dd77c1..6a66f05f072b4 100644 --- a/x-pack/test/functional/services/ml/api.ts +++ b/x-pack/test/functional/services/ml/api.ts @@ -1248,7 +1248,7 @@ export function MachineLearningAPIProvider({ getService }: FtrProviderContext) { async syncSavedObjects(simulate: boolean = false, space?: string) { const { body, status } = await kbnSupertest .get(`${space ? `/s/${space}` : ''}/api/ml/saved_objects/sync?simulate=${simulate}`) - .set(getCommonRequestHeader('2023-05-15')); + .set(getCommonRequestHeader('2023-10-31')); this.assertResponseStatusCode(200, status, body); return body; From 9e60627dd14fdbb5c11cd0dd046b24e952da3e19 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Thu, 15 Jun 2023 09:54:27 -0600 Subject: [PATCH 19/59] [maps] fix layer group loading indicator always on when group has non-visible layer (#159517) closes https://github.com/elastic/kibana/issues/158857 PR resolves issue by adding `isVisible` and `showAtZoomLevel` checks into `isLayerLoading` and returning false if a layer is not visible (and therefore, would not load data). PR also increases test coverage to help ensure regression is not re-introduced. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../ems_vector_tile_layer.test.ts | 30 --- .../maps/public/classes/layers/layer.test.ts | 182 +++++++++++++++--- .../maps/public/classes/layers/layer.tsx | 9 +- .../layers/layer_group/layer_group.test.ts | 77 +++++++- .../layers/layer_group/layer_group.tsx | 6 +- .../mvt_vector_layer.test.tsx | 10 +- .../layers/vector_layer/vector_layer.tsx | 8 +- .../__snapshots__/layer_control.test.tsx.snap | 20 +- .../layer_control/layer_control.test.tsx | 62 ++---- .../layer_control/layer_control.tsx | 2 +- .../toc_entry_button/toc_entry_button.tsx | 2 +- .../map_app/wait_until_time_layers_load.ts | 19 +- .../public/selectors/map_selectors.test.ts | 82 ++++---- .../maps/public/selectors/map_selectors.ts | 14 +- 14 files changed, 312 insertions(+), 211 deletions(-) diff --git a/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.test.ts b/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.test.ts index acae0ca976fe5..557fac4c25bf3 100644 --- a/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.test.ts +++ b/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.test.ts @@ -74,34 +74,4 @@ describe('EmsVectorTileLayer', () => { expect(layer.getLocale()).toBe('xx'); }); }); - - describe('isLayerLoading', () => { - test('should be true when tile loading has not started', () => { - const layer = new EmsVectorTileLayer({ - source: {} as unknown as EMSTMSSource, - layerDescriptor: {} as unknown as EMSVectorTileLayerDescriptor, - }); - expect(layer.isLayerLoading()).toBe(true); - }); - - test('should be true when tiles are loading', () => { - const layer = new EmsVectorTileLayer({ - source: {} as unknown as EMSTMSSource, - layerDescriptor: { - __areTilesLoaded: false, - } as unknown as EMSVectorTileLayerDescriptor, - }); - expect(layer.isLayerLoading()).toBe(true); - }); - - test('should be false when tiles are loaded', () => { - const layer = new EmsVectorTileLayer({ - source: {} as unknown as EMSTMSSource, - layerDescriptor: { - __areTilesLoaded: true, - } as unknown as EMSVectorTileLayerDescriptor, - }); - expect(layer.isLayerLoading()).toBe(false); - }); - }); }); diff --git a/x-pack/plugins/maps/public/classes/layers/layer.test.ts b/x-pack/plugins/maps/public/classes/layers/layer.test.ts index 908c38a2eef27..754c6da9b3b78 100644 --- a/x-pack/plugins/maps/public/classes/layers/layer.test.ts +++ b/x-pack/plugins/maps/public/classes/layers/layer.test.ts @@ -5,27 +5,10 @@ * 2.0. */ -/* eslint-disable max-classes-per-file */ - +import { SOURCE_DATA_REQUEST_ID, SOURCE_META_DATA_REQUEST_ID } from '../../../common/constants'; import { AbstractLayer } from './layer'; import { ISource } from '../sources/source'; -class MockLayer extends AbstractLayer {} - -class MockSource { - private readonly _fitToBounds: boolean; - constructor({ fitToBounds = true } = {}) { - this._fitToBounds = fitToBounds; - } - cloneDescriptor() { - return [{}]; - } - - async supportsFitToBounds() { - return this._fitToBounds; - } -} - describe('isFittable', () => { [ { @@ -58,15 +41,164 @@ describe('isFittable', () => { it(`Should take into account layer visibility and bounds-retrieval: ${JSON.stringify( test )}`, async () => { - const layerDescriptor = AbstractLayer.createDescriptor({ - visible: test.isVisible, - includeInFitToBounds: test.includeInFitToBounds, - }); - const layer = new MockLayer({ - layerDescriptor, - source: new MockSource({ fitToBounds: test.fitToBounds }) as unknown as ISource, + const layer = new AbstractLayer({ + layerDescriptor: { + visible: test.isVisible, + includeInFitToBounds: test.includeInFitToBounds, + }, + source: { + supportsFitToBounds: () => test.fitToBounds, + } as unknown as ISource, }); expect(await layer.isFittable()).toBe(test.canFit); }); }); }); + +describe('isLayerLoading', () => { + test('Should return false when layer is not visible', () => { + const layer = new AbstractLayer({ + layerDescriptor: { + visible: false, + }, + source: {} as unknown as ISource, + }); + expect(layer.isLayerLoading(1)).toBe(false); + }); + + test('Should return false when layer is not visible at zoom level', () => { + const layer = new AbstractLayer({ + layerDescriptor: { + maxZoom: 24, + minZoom: 3, + }, + source: {} as unknown as ISource, + }); + expect(layer.isLayerLoading(1)).toBe(false); + }); + + describe('tile layer', () => { + test('Should return true when tile loading has not started', () => { + const layer = new AbstractLayer({ + layerDescriptor: {}, + source: {} as unknown as ISource, + }); + layer._isTiled = () => true; + expect(layer.isLayerLoading(1)).toBe(true); + }); + + test('Should be true when tiles are loading', () => { + const layer = new AbstractLayer({ + layerDescriptor: { + __areTilesLoaded: false, + }, + source: {} as unknown as ISource, + }); + layer._isTiled = () => true; + expect(layer.isLayerLoading(1)).toBe(true); + }); + + test('Should be true when tiles are loaded but other data request are pending', () => { + const layer = new AbstractLayer({ + layerDescriptor: { + __areTilesLoaded: true, + __dataRequests: [ + { + data: {}, + dataId: SOURCE_META_DATA_REQUEST_ID, + dataRequestMetaAtStart: {}, + dataRequestToken: Symbol(), + }, + ], + }, + source: {} as unknown as ISource, + }); + layer._isTiled = () => true; + expect(layer.isLayerLoading(1)).toBe(true); + }); + + test('Should be false when tiles are loaded and there are no other data requests pending', () => { + const layer = new AbstractLayer({ + layerDescriptor: { + __areTilesLoaded: true, + }, + source: {} as unknown as ISource, + }); + layer._isTiled = () => true; + expect(layer.isLayerLoading(1)).toBe(false); + }); + }); + + describe('non-tile layer', () => { + test('Should return true when source data request has not started', () => { + const layer = new AbstractLayer({ + layerDescriptor: {}, + source: {} as unknown as ISource, + }); + layer._isTiled = () => false; + expect(layer.isLayerLoading(1)).toBe(true); + }); + + test('Should return true when source data request is pending', () => { + const layer = new AbstractLayer({ + layerDescriptor: { + __dataRequests: [ + { + data: {}, + dataId: SOURCE_DATA_REQUEST_ID, + dataRequestMetaAtStart: {}, + dataRequestToken: Symbol(), + }, + ], + }, + source: {} as unknown as ISource, + }); + layer._isTiled = () => false; + expect(layer.isLayerLoading(1)).toBe(true); + }); + + test('Should return true when source data request is finished but other data request are pending', () => { + const layer = new AbstractLayer({ + layerDescriptor: { + __dataRequests: [ + { + data: {}, + dataId: SOURCE_DATA_REQUEST_ID, + dataRequestMeta: {}, + dataRequestMetaAtStart: undefined, + dataRequestToken: undefined, + }, + { + data: {}, + dataId: SOURCE_META_DATA_REQUEST_ID, + dataRequestMetaAtStart: {}, + dataRequestToken: Symbol(), + }, + ], + }, + source: {} as unknown as ISource, + }); + layer._isTiled = () => false; + expect(layer.isLayerLoading(1)).toBe(true); + }); + + test('Should return false when source data request is finished and there are no other data requests pending', () => { + const layer = new AbstractLayer({ + layerDescriptor: { + __dataRequests: [ + { + data: {}, + dataId: SOURCE_DATA_REQUEST_ID, + dataRequestMeta: {}, + dataRequestMetaAtStart: undefined, + dataRequestToken: undefined, + }, + ], + }, + source: {} as unknown as ISource, + }); + layer._isTiled = () => false; + expect(layer.isLayerLoading(1)).toBe(false); + }); + }); +}); diff --git a/x-pack/plugins/maps/public/classes/layers/layer.tsx b/x-pack/plugins/maps/public/classes/layers/layer.tsx index 8e17da1ce4a96..08e6244835ee0 100644 --- a/x-pack/plugins/maps/public/classes/layers/layer.tsx +++ b/x-pack/plugins/maps/public/classes/layers/layer.tsx @@ -67,7 +67,7 @@ export interface ILayer { getStyleForEditing(): IStyle; getCurrentStyle(): IStyle; renderSourceSettingsEditor(sourceEditorArgs: SourceEditorArgs): ReactElement | null; - isLayerLoading(): boolean; + isLayerLoading(zoom: number): boolean; isFilteredByGlobalTime(): Promise; hasErrors(): boolean; getErrors(): string; @@ -125,7 +125,7 @@ export type LayerIcon = { }; export interface ILayerArguments { - layerDescriptor: LayerDescriptor; + layerDescriptor: Partial; source: ISource; } @@ -369,7 +369,10 @@ export class AbstractLayer implements ILayer { return this._dataRequests.find((dataRequest) => dataRequest.getDataId() === id); } - isLayerLoading(): boolean { + isLayerLoading(zoom: number): boolean { + if (!this.isVisible() || !this.showAtZoomLevel(zoom)) { + return false; + } const hasOpenDataRequests = this._dataRequests.some((dataRequest) => dataRequest.isLoading()); if (this._isTiled()) { diff --git a/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.test.ts b/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.test.ts index 19aa122aa9f95..6804c1e63c378 100644 --- a/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.test.ts +++ b/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.test.ts @@ -6,17 +6,19 @@ */ import { MAX_ZOOM, MIN_ZOOM } from '../../../../common/constants'; +import { LayerDescriptor } from '../../../../common/descriptor_types'; import { LayerGroup } from './layer_group'; -import { ILayer } from '../layer'; +import { AbstractLayer, ILayer } from '../layer'; +import type { ISource } from '../../sources/source'; describe('getMinZoom', () => { test('should return MIN_ZOOM when there are no children', async () => { - const layerGroup = new LayerGroup({ layerDescriptor: LayerGroup.createDescriptor({}) }); + const layerGroup = new LayerGroup({ layerDescriptor: {} }); expect(layerGroup.getMinZoom()).toBe(MIN_ZOOM); }); test('should return smallest child.getMinZoom()', async () => { - const layerGroup = new LayerGroup({ layerDescriptor: LayerGroup.createDescriptor({}) }); + const layerGroup = new LayerGroup({ layerDescriptor: {} }); layerGroup.setChildren([ { getMinZoom: () => { @@ -35,12 +37,12 @@ describe('getMinZoom', () => { describe('getMaxZoom', () => { test('should return MAX_ZOOM when there are no children', async () => { - const layerGroup = new LayerGroup({ layerDescriptor: LayerGroup.createDescriptor({}) }); + const layerGroup = new LayerGroup({ layerDescriptor: {} }); expect(layerGroup.getMaxZoom()).toBe(MAX_ZOOM); }); test('should return largest child.getMaxZoom()', async () => { - const layerGroup = new LayerGroup({ layerDescriptor: LayerGroup.createDescriptor({}) }); + const layerGroup = new LayerGroup({ layerDescriptor: {} }); layerGroup.setChildren([ { getMaxZoom: () => { @@ -56,3 +58,68 @@ describe('getMaxZoom', () => { expect(layerGroup.getMaxZoom()).toBe(20); }); }); + +describe('isLayerLoading', () => { + function createTiledLayer(layerDescriptor: Partial) { + const layer = new AbstractLayer({ + layerDescriptor, + source: {} as unknown as ISource, + }); + layer._isTiled = () => true; + return layer; + } + + test('should be true when some children have not started loading', async () => { + const layerGroup = new LayerGroup({ layerDescriptor: {} }); + layerGroup.setChildren([ + createTiledLayer({ + __areTilesLoaded: true, + }), + createTiledLayer({}), + ]); + expect(layerGroup.isLayerLoading(1)).toBe(true); + }); + + test('should be true when some children are loading', async () => { + const layerGroup = new LayerGroup({ layerDescriptor: {} }); + layerGroup.setChildren([ + createTiledLayer({ + __areTilesLoaded: true, + }), + createTiledLayer({ + __areTilesLoaded: false, + }), + ]); + expect(layerGroup.isLayerLoading(1)).toBe(true); + }); + + test('should be false when all children have loaded or are not visible', async () => { + const layerGroup = new LayerGroup({ layerDescriptor: {} }); + layerGroup.setChildren([ + createTiledLayer({ + __areTilesLoaded: true, + }), + createTiledLayer({ + visible: false, + }), + createTiledLayer({ + maxZoom: 24, + minZoom: 3, + }), + ]); + expect(layerGroup.isLayerLoading(1)).toBe(false); + }); + + test('should be false when all children have loaded', async () => { + const layerGroup = new LayerGroup({ layerDescriptor: {} }); + layerGroup.setChildren([ + createTiledLayer({ + __areTilesLoaded: true, + }), + createTiledLayer({ + __areTilesLoaded: true, + }), + ]); + expect(layerGroup.isLayerLoading(1)).toBe(false); + }); +}); diff --git a/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.tsx b/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.tsx index d7fb1d9dbb17f..3a3c5bf4817bb 100644 --- a/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.tsx +++ b/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.tsx @@ -58,7 +58,7 @@ export class LayerGroup implements ILayer { }; } - constructor({ layerDescriptor }: { layerDescriptor: LayerGroupDescriptor }) { + constructor({ layerDescriptor }: { layerDescriptor: Partial }) { this._descriptor = LayerGroup.createDescriptor(layerDescriptor); } @@ -283,9 +283,9 @@ export class LayerGroup implements ILayer { return undefined; } - isLayerLoading(): boolean { + isLayerLoading(zoom: number): boolean { return this._children.some((child) => { - return child.isLayerLoading(); + return child.isLayerLoading(zoom); }); } diff --git a/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx b/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx index dab086b86b472..4347452c8d22e 100644 --- a/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx +++ b/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx @@ -125,7 +125,7 @@ describe('isLayerLoading', () => { }, } as unknown as IVectorSource, }); - expect(layer.isLayerLoading()).toBe(true); + expect(layer.isLayerLoading(1)).toBe(true); }); test('should be true when tiles are loading', () => { @@ -144,7 +144,7 @@ describe('isLayerLoading', () => { }, } as unknown as IVectorSource, }); - expect(layer.isLayerLoading()).toBe(true); + expect(layer.isLayerLoading(1)).toBe(true); }); test('should be false when tiles are loaded', () => { @@ -163,7 +163,7 @@ describe('isLayerLoading', () => { }, } as unknown as IVectorSource, }); - expect(layer.isLayerLoading()).toBe(false); + expect(layer.isLayerLoading(1)).toBe(false); }); test('should be true when tiles are loaded but join is loading', () => { @@ -202,7 +202,7 @@ describe('isLayerLoading', () => { }, } as unknown as IVectorSource, }); - expect(layer.isLayerLoading()).toBe(true); + expect(layer.isLayerLoading(1)).toBe(true); }); test('should be false when tiles are loaded and joins are loaded', () => { @@ -243,6 +243,6 @@ describe('isLayerLoading', () => { }, } as unknown as IVectorSource, }); - expect(layer.isLayerLoading()).toBe(false); + expect(layer.isLayerLoading(1)).toBe(false); }); }); diff --git a/x-pack/plugins/maps/public/classes/layers/vector_layer/vector_layer.tsx b/x-pack/plugins/maps/public/classes/layers/vector_layer/vector_layer.tsx index 592ad8cd4fbef..ae75aebba5929 100644 --- a/x-pack/plugins/maps/public/classes/layers/vector_layer/vector_layer.tsx +++ b/x-pack/plugins/maps/public/classes/layers/vector_layer/vector_layer.tsx @@ -76,7 +76,7 @@ export function isVectorLayer(layer: ILayer) { export interface VectorLayerArguments { source: IVectorSource; joins?: InnerJoin[]; - layerDescriptor: VectorLayerDescriptor; + layerDescriptor: Partial; customIcons: CustomIcon[]; chartsPaletteServiceGetColor?: (value: string) => string | null; } @@ -159,7 +159,7 @@ export class AbstractVectorLayer extends AbstractLayer implements IVectorLayer { this._joins = joins; this._descriptor = AbstractVectorLayer.createDescriptor(layerDescriptor); this._style = new VectorStyle( - layerDescriptor.style, + this._descriptor.style, source, this, customIcons, @@ -259,8 +259,8 @@ export class AbstractVectorLayer extends AbstractLayer implements IVectorLayer { return this.getValidJoins().length > 0; } - isLayerLoading() { - const isSourceLoading = super.isLayerLoading(); + isLayerLoading(zoom: number) { + const isSourceLoading = super.isLayerLoading(zoom); if (isSourceLoading) { return true; } diff --git a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/__snapshots__/layer_control.test.tsx.snap b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/__snapshots__/layer_control.test.tsx.snap index c4e59b6f9d242..8c6e442d34dbf 100644 --- a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/__snapshots__/layer_control.test.tsx.snap +++ b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/__snapshots__/layer_control.test.tsx.snap @@ -150,25 +150,7 @@ exports[`LayerControl isLayerTOCOpen Should render expand button with error icon `; -exports[`LayerControl isLayerTOCOpen spinner icon Should not render expand button with loading icon when layer is invisible 1`] = ` - - - -`; - -exports[`LayerControl isLayerTOCOpen spinner icon Should render expand button with loading icon when layer is loading 1`] = ` +exports[`LayerControl isLayerTOCOpen Should render expand button with loading icon when layer is loading 1`] = ` { expect(component).toMatchSnapshot(); }); - describe('spinner icon', () => { - const isLayerLoading = true; - let isVisible = true; - const mockLayerThatIsLoading = { - hasErrors: () => { - return false; - }, - isLayerLoading: () => { - return isLayerLoading; - }, - isVisible: () => { - return isVisible; - }, - showAtZoomLevel: () => { - return true; - }, - } as unknown as ILayer; - test('Should render expand button with loading icon when layer is loading', () => { - const component = shallow( - - ); - expect(component).toMatchSnapshot(); - }); - test('Should not render expand button with loading icon when layer is invisible', () => { - isVisible = false; - const component = shallow( - - ); - expect(component).toMatchSnapshot(); - }); + test('Should render expand button with loading icon when layer is loading', () => { + const component = shallow( + { + return false; + }, + isLayerLoading: () => { + return true; + }, + } as unknown as ILayer, + ]} + /> + ); + expect(component).toMatchSnapshot(); }); test('Should render expand button with error icon when layer has error', () => { @@ -109,12 +89,6 @@ describe('LayerControl', () => { isLayerLoading: () => { return false; }, - isVisible: () => { - return true; - }, - showAtZoomLevel: () => { - return true; - }, } as unknown as ILayer; const component = shallow( { - return layer.isVisible() && layer.showAtZoomLevel(zoom) && layer.isLayerLoading(); + return layer.isLayerLoading(zoom); }); return ( diff --git a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/toc_entry_button/toc_entry_button.tsx b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/toc_entry_button/toc_entry_button.tsx index db4bd5803c216..b15d40fca5dfb 100644 --- a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/toc_entry_button/toc_entry_button.tsx +++ b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/toc_entry_button/toc_entry_button.tsx @@ -110,7 +110,7 @@ export class TOCEntryButton extends Component { }; } - if (this.props.layer.isLayerLoading()) { + if (this.props.layer.isLayerLoading(this.props.zoom)) { return { icon: , tooltipContent: '', diff --git a/x-pack/plugins/maps/public/routes/map_page/map_app/wait_until_time_layers_load.ts b/x-pack/plugins/maps/public/routes/map_page/map_app/wait_until_time_layers_load.ts index bc0eb5867f4a9..d809acd07c3b4 100644 --- a/x-pack/plugins/maps/public/routes/map_page/map_app/wait_until_time_layers_load.ts +++ b/x-pack/plugins/maps/public/routes/map_page/map_app/wait_until_time_layers_load.ts @@ -17,23 +17,20 @@ export function waitUntilTimeLayersLoad$(store: MapStore) { // using switchMap since switchMap will discard promise from previous state iterations in progress switchMap(async (state) => { const zoom = getMapZoom(state); - const promises = getLayerList(state) - .filter((layer) => { - return layer.isVisible() && layer.showAtZoomLevel(zoom); - }) - .map(async (layer) => { - return { - isFilteredByGlobalTime: await layer.isFilteredByGlobalTime(), - layer, - }; - }); + const promises = getLayerList(state).map(async (layer) => { + return { + isFilteredByGlobalTime: await layer.isFilteredByGlobalTime(), + layer, + zoom, + }; + }); const layersWithMeta = await Promise.all(promises); return layersWithMeta; }), first((layersWithMeta) => { const areTimeLayersStillLoading = layersWithMeta .filter(({ isFilteredByGlobalTime }) => isFilteredByGlobalTime) - .some(({ layer }) => layer.isLayerLoading()); + .some(({ layer, zoom }) => layer.isLayerLoading(zoom)); return !areTimeLayersStillLoading; }), map(() => { diff --git a/x-pack/plugins/maps/public/selectors/map_selectors.test.ts b/x-pack/plugins/maps/public/selectors/map_selectors.test.ts index d1c050e25a7e9..71da36f712230 100644 --- a/x-pack/plugins/maps/public/selectors/map_selectors.test.ts +++ b/x-pack/plugins/maps/public/selectors/map_selectors.test.ts @@ -151,70 +151,56 @@ describe('getTimeFilters', () => { }); describe('isMapLoading', () => { - function createLayerMock({ - hasErrors = false, - isLayerLoading = false, - isVisible = true, - showAtZoomLevel = true, - }: { - hasErrors?: boolean; - isLayerLoading?: boolean; - isVisible?: boolean; - showAtZoomLevel?: boolean; - }) { - return { - hasErrors: () => { - return hasErrors; - }, - isLayerLoading: () => { - return isLayerLoading; - }, - isVisible: () => { - return isVisible; - }, - showAtZoomLevel: () => { - return showAtZoomLevel; - }, - } as unknown as ILayer; - } - - test('layers waiting for map to load should not be counted loaded', () => { + test('should return true when there are layers waiting for map to load', () => { const layerList: ILayer[] = []; const waitingForMapReadyLayerList: LayerDescriptor[] = [{} as unknown as LayerDescriptor]; const zoom = 4; expect(isMapLoading.resultFunc(layerList, waitingForMapReadyLayerList, zoom)).toBe(true); }); - test('layer should not be counted as loaded if it has not loaded', () => { - const layerList = [createLayerMock({ isLayerLoading: true })]; + test('should return true when there are layers that are loading', () => { + const layerList = [ + { + hasErrors: () => { + return false; + }, + isLayerLoading: () => { + return true; + }, + } as unknown as ILayer, + ]; const waitingForMapReadyLayerList: LayerDescriptor[] = []; const zoom = 4; expect(isMapLoading.resultFunc(layerList, waitingForMapReadyLayerList, zoom)).toBe(true); }); - test('layer should be counted as loaded if its not visible', () => { - const layerList = [createLayerMock({ isVisible: false, isLayerLoading: true })]; - const waitingForMapReadyLayerList: LayerDescriptor[] = []; - const zoom = 4; - expect(isMapLoading.resultFunc(layerList, waitingForMapReadyLayerList, zoom)).toBe(false); - }); - - test('layer should be counted as loaded if its not shown at zoom level', () => { - const layerList = [createLayerMock({ showAtZoomLevel: false, isLayerLoading: true })]; - const waitingForMapReadyLayerList: LayerDescriptor[] = []; - const zoom = 4; - expect(isMapLoading.resultFunc(layerList, waitingForMapReadyLayerList, zoom)).toBe(false); - }); - - test('layer should be counted as loaded if it has a loading error', () => { - const layerList = [createLayerMock({ hasErrors: true, isLayerLoading: true })]; + test('should return false when there are unloaded layers with errors', () => { + const layerList = [ + { + hasErrors: () => { + return true; + }, + isLayerLoading: () => { + return true; + }, + } as unknown as ILayer, + ]; const waitingForMapReadyLayerList: LayerDescriptor[] = []; const zoom = 4; expect(isMapLoading.resultFunc(layerList, waitingForMapReadyLayerList, zoom)).toBe(false); }); - test('layer should be counted as loaded if its loaded', () => { - const layerList = [createLayerMock({ isLayerLoading: false })]; + test('should return false when all layers are loaded', () => { + const layerList = [ + { + hasErrors: () => { + return false; + }, + isLayerLoading: () => { + return false; + }, + } as unknown as ILayer, + ]; const waitingForMapReadyLayerList: LayerDescriptor[] = []; const zoom = 4; expect(isMapLoading.resultFunc(layerList, waitingForMapReadyLayerList, zoom)).toBe(false); diff --git a/x-pack/plugins/maps/public/selectors/map_selectors.ts b/x-pack/plugins/maps/public/selectors/map_selectors.ts index c66ae46986df3..4c49ba38eb707 100644 --- a/x-pack/plugins/maps/public/selectors/map_selectors.ts +++ b/x-pack/plugins/maps/public/selectors/map_selectors.ts @@ -391,12 +391,7 @@ export const isLoadingPreviewLayers = createSelector( getMapZoom, (layerList, zoom) => { return layerList.some((layer) => { - return ( - layer.isPreviewLayer() && - layer.isVisible() && - layer.showAtZoomLevel(zoom) && - layer.isLayerLoading() - ); + return layer.isPreviewLayer() && layer.isLayerLoading(zoom); }); } ); @@ -496,12 +491,7 @@ export const isMapLoading = createSelector( for (let i = 0; i < layerList.length; i++) { const layer = layerList[i]; - if ( - layer.isVisible() && - layer.showAtZoomLevel(zoom) && - !layer.hasErrors() && - layer.isLayerLoading() - ) { + if (!layer.hasErrors() && layer.isLayerLoading(zoom)) { return true; } } From e7528a2372c846020d565f229da9052ba316284c Mon Sep 17 00:00:00 2001 From: Devon Thomson Date: Thu, 15 Jun 2023 11:57:43 -0400 Subject: [PATCH 20/59] [Dashboard] Fix alias redirect & update error handling (#159742) Makes dashboard load errors recoverable. Fixes a regression where Alias redirects resulted in infinite loading. --- .../embeddable/create/create_dashboard.ts | 1 + .../dashboard_container_factory.tsx | 9 ++- .../external_api/dashboard_renderer.test.tsx | 72 +++++++++++++++++++ .../external_api/dashboard_renderer.tsx | 57 +++++++++------ 4 files changed, 114 insertions(+), 25 deletions(-) diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts b/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts index af564b5ac3c68..4fc296acbf1cc 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts @@ -144,6 +144,7 @@ export const initializeDashboard = async ({ validateLoadedSavedObject && !validateLoadedSavedObject(loadDashboardReturn) ) { + // throw error to stop the rest of Dashboard loading and make the factory return an ErrorEmbeddable. throw new Error('Dashboard failed saved object result validation'); } diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container_factory.tsx b/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container_factory.tsx index 83057fdf8c934..67ab39117e9df 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container_factory.tsx +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container_factory.tsx @@ -97,11 +97,14 @@ export class DashboardContainerFactoryDefinition const dashboardCreationStartTime = performance.now(); const { createDashboard } = await import('./create/create_dashboard'); try { - return Promise.resolve( - createDashboard(creationOptions, dashboardCreationStartTime, savedObjectId) + const dashboard = await createDashboard( + creationOptions, + dashboardCreationStartTime, + savedObjectId ); + return dashboard; } catch (e) { - return new ErrorEmbeddable(e.text, { id: e.id }); + return new ErrorEmbeddable(e, { id: e.id }); } }; } diff --git a/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.test.tsx b/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.test.tsx index 415e62c1953f1..501fab38f186c 100644 --- a/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.test.tsx +++ b/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.test.tsx @@ -90,4 +90,76 @@ describe('dashboard renderer', () => { 'saved_object_kibanakiwi' ); }); + + test('renders and destroys an error embeddable when the dashboard factory create method throws an error', async () => { + const mockErrorEmbeddable = { + error: 'oh my goodness an error', + destroy: jest.fn(), + render: jest.fn(), + } as unknown as DashboardContainer; + mockDashboardFactory = { + create: jest.fn().mockReturnValue(mockErrorEmbeddable), + } as unknown as DashboardContainerFactory; + pluginServices.getServices().embeddable.getEmbeddableFactory = jest + .fn() + .mockReturnValue(mockDashboardFactory); + + let wrapper: ReactWrapper; + await act(async () => { + wrapper = await mountWithIntl(); + }); + + expect(mockErrorEmbeddable.render).toHaveBeenCalled(); + wrapper!.unmount(); + expect(mockErrorEmbeddable.destroy).toHaveBeenCalledTimes(1); + }); + + test('creates a new dashboard container when the ID changes, and the first created dashboard resulted in an error', async () => { + // ensure that the first attempt at creating a dashboard results in an error embeddable + const mockErrorEmbeddable = { + error: 'oh my goodness an error', + destroy: jest.fn(), + render: jest.fn(), + } as unknown as DashboardContainer; + const mockErrorFactory = { + create: jest.fn().mockReturnValue(mockErrorEmbeddable), + } as unknown as DashboardContainerFactory; + pluginServices.getServices().embeddable.getEmbeddableFactory = jest + .fn() + .mockReturnValue(mockErrorFactory); + + // render the dashboard - it should run into an error and render the error embeddable. + let wrapper: ReactWrapper; + await act(async () => { + wrapper = await mountWithIntl(); + }); + expect(mockErrorEmbeddable.render).toHaveBeenCalled(); + expect(mockErrorFactory.create).toHaveBeenCalledTimes(1); + + // ensure that the next attempt at creating a dashboard is successfull. + const mockSuccessEmbeddable = { + destroy: jest.fn(), + render: jest.fn(), + navigateToDashboard: jest.fn(), + } as unknown as DashboardContainer; + const mockSuccessFactory = { + create: jest.fn().mockReturnValue(mockSuccessEmbeddable), + } as unknown as DashboardContainerFactory; + pluginServices.getServices().embeddable.getEmbeddableFactory = jest + .fn() + .mockReturnValue(mockSuccessFactory); + + // update the saved object id to trigger another dashboard load. + await act(async () => { + await wrapper.setProps({ savedObjectId: 'saved_object_kibanakiwi' }); + }); + + expect(mockErrorEmbeddable.destroy).toHaveBeenCalled(); + + // because a new dashboard container has been created, we should not call navigate. + expect(mockSuccessEmbeddable.navigateToDashboard).not.toHaveBeenCalled(); + + // instead we should call create on the factory again. + expect(mockSuccessFactory.create).toHaveBeenCalledTimes(1); + }); }); diff --git a/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.tsx b/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.tsx index aff31252af044..13a1c82416aed 100644 --- a/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.tsx +++ b/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.tsx @@ -18,8 +18,10 @@ import React, { } from 'react'; import { v4 as uuidv4 } from 'uuid'; import classNames from 'classnames'; +import useUnmount from 'react-use/lib/useUnmount'; import { EuiLoadingElastic, EuiLoadingSpinner } from '@elastic/eui'; +import { ErrorEmbeddable, isErrorEmbeddable } from '@kbn/embeddable-plugin/public'; import { DashboardAPI, @@ -47,6 +49,7 @@ export const DashboardRenderer = forwardRef(); + const [fatalError, setFatalError] = useState(); useImperativeHandle( ref, @@ -65,23 +68,22 @@ export const DashboardRenderer = forwardRef { - if (!dashboardContainer) return; - - // When a dashboard already exists, don't rebuild it, just set a new id. - dashboardContainer.navigateToDashboard(savedObjectId); - - // Disabling exhaustive deps because this useEffect should only be triggered when the savedObjectId changes. - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [savedObjectId]); - const id = useMemo(() => uuidv4(), []); useEffect(() => { - let canceled = false; - let destroyContainer: () => void; + if (dashboardContainer) { + // When a dashboard already exists, don't rebuild it, just set a new id. + dashboardContainer.navigateToDashboard(savedObjectId); + + return; + } + setLoading(true); + let canceled = false; (async () => { + fatalError?.destroy(); + setFatalError(undefined); + const creationOptions = await getCreationOptions?.(); // Lazy loading all services is required in this component because it is exported and contributes to the bundle size. @@ -91,12 +93,12 @@ export const DashboardRenderer = forwardRef container.destroy(); })(); return () => { canceled = true; - destroyContainer?.(); }; // Disabling exhaustive deps because embeddable should only be created on first render. // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + }, [savedObjectId]); + + useUnmount(() => { + fatalError?.destroy(); + dashboardContainer?.destroy(); + }); const viewportClasses = classNames( 'dashboardViewport', @@ -131,10 +142,12 @@ export const DashboardRenderer = forwardRef ); - return ( -
- {loading ? loadingSpinner :
} -
- ); + const renderDashboardContents = () => { + if (fatalError) return fatalError.render(); + if (loading) return loadingSpinner; + return
; + }; + + return
{renderDashboardContents()}
; } ); From b3a9b6c96bf5c1871b2d2ea32c0b3edeb138bde1 Mon Sep 17 00:00:00 2001 From: jennypavlova Date: Thu, 15 Jun 2023 18:05:47 +0200 Subject: [PATCH 21/59] [Infra UI] Hosts : Moving to Beta changes (#159707) Closes [#159682](https://github.com/elastic/kibana/issues/159682) ## Summary This PR changes "Technical preview" badges and descriptions to "Beta" and hosts landing page content. By default, the user will see the hosts view (it will be enabled ) and there is still an option to disable it from the advanced settings. ## Testing - Navigate to hosts - The icon in the navigation should be changed to "BETA" - Hosts view should be enabled by default - Host view beta badge is updated: image - Navigate to Inventory - The hosts link badge is updated to beta: image - As the host view is disabled by default to see the landing page go to [Stack Management] > [Advanced Settings] and disable the host feature (save changes and refresh the page): image - Go to host view again and check the landing page: image --- .../infra/public/components/beta_badge.tsx | 27 ++++++++--------- .../public/components/experimental_badge.tsx | 29 ------------------- .../infra/public/components/try_it_button.tsx | 4 +-- .../enable_hosts_view_page.tsx | 23 ++++++++------- .../public/pages/metrics/hosts/index.tsx | 10 +++++-- x-pack/plugins/infra/public/plugin.ts | 2 +- .../observability/server/ui_settings.ts | 2 +- .../translations/translations/fr-FR.json | 3 -- .../translations/translations/ja-JP.json | 3 -- .../translations/translations/zh-CN.json | 3 -- .../test/functional/apps/infra/hosts_view.ts | 6 ++++ .../page_objects/infra_hosts_view.ts | 4 +++ 12 files changed, 48 insertions(+), 68 deletions(-) delete mode 100644 x-pack/plugins/infra/public/components/experimental_badge.tsx diff --git a/x-pack/plugins/infra/public/components/beta_badge.tsx b/x-pack/plugins/infra/public/components/beta_badge.tsx index 797753447c29c..6698997ecbe92 100644 --- a/x-pack/plugins/infra/public/components/beta_badge.tsx +++ b/x-pack/plugins/infra/public/components/beta_badge.tsx @@ -6,22 +6,23 @@ */ import { EuiBetaBadge } from '@elastic/eui'; +import type { IconType, ToolTipPositions } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -export const BetaBadge: React.FunctionComponent = () => ( +interface Props { + iconType?: IconType; + tooltipPosition?: ToolTipPositions; + tooltipContent?: string; +} +export const BetaBadge = ({ iconType, tooltipPosition, tooltipContent }: Props) => ( ); -const betaBadgeLabel = i18n.translate('xpack.infra.common.tabBetaBadgeLabel', { - defaultMessage: 'Beta', -}); - -const betaBadgeTooltipContent = i18n.translate('xpack.infra.common.tabBetaBadgeTooltipContent', { - defaultMessage: - 'This feature is under active development. Extra functionality is coming, and some functionality may change.', -}); diff --git a/x-pack/plugins/infra/public/components/experimental_badge.tsx b/x-pack/plugins/infra/public/components/experimental_badge.tsx deleted file mode 100644 index 73f30edc2f53e..0000000000000 --- a/x-pack/plugins/infra/public/components/experimental_badge.tsx +++ /dev/null @@ -1,29 +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 { EuiBetaBadge } from '@elastic/eui'; -import type { IconType, ToolTipPositions } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import React from 'react'; - -interface Props { - iconType?: IconType; - tooltipPosition?: ToolTipPositions; -} -export const ExperimentalBadge = ({ iconType, tooltipPosition }: Props) => ( - -); diff --git a/x-pack/plugins/infra/public/components/try_it_button.tsx b/x-pack/plugins/infra/public/components/try_it_button.tsx index d2b4523b26c44..d58deec1274cd 100644 --- a/x-pack/plugins/infra/public/components/try_it_button.tsx +++ b/x-pack/plugins/infra/public/components/try_it_button.tsx @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { LinkDescriptor, useLinkProps } from '@kbn/observability-shared-plugin/public'; import { css } from '@emotion/react'; import { EuiLinkColor } from '@elastic/eui'; -import { ExperimentalBadge } from './experimental_badge'; +import { BetaBadge } from './beta_badge'; type OnClickEvent = React.MouseEvent | React.MouseEvent; interface Props { @@ -71,7 +71,7 @@ export const TryItButton = ({ {experimental && ( - + )} {label} diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/enable_hosts_view_page/enable_hosts_view_page.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/enable_hosts_view_page/enable_hosts_view_page.tsx index 244faf3d06a43..eb7c5567397fd 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/enable_hosts_view_page/enable_hosts_view_page.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/enable_hosts_view_page/enable_hosts_view_page.tsx @@ -15,7 +15,7 @@ import { useIsDarkMode } from '../../../../../hooks/use_is_dark_mode'; import { MetricsPageTemplate } from '../../../page_template'; import hostsLandingBetaLight from './hosts_landing_beta_light.svg'; import hostsLandingBetaDark from './hosts_landing_beta_dark.svg'; -import { ExperimentalBadge } from '../../../../../components/experimental_badge'; +import { BetaBadge } from '../../../../../components/beta_badge'; interface Props { actions?: ReactNode; @@ -39,7 +39,7 @@ export const EnableHostsViewPage = ({ actions }: Props) => { title={

{i18n.translate('xpack.infra.hostsViewPage.landing.introTitle', { - defaultMessage: 'Introducing: Host Analysis', + defaultMessage: 'Host Analysis', })}

} @@ -55,22 +55,23 @@ export const EnableHostsViewPage = ({ actions }: Props) => { layout="horizontal" body={ <> - +

{i18n.translate('xpack.infra.hostsViewPage.landing.introMessage', { - defaultMessage: `Introducing our new 'Hosts' feature, now available in technical preview! - With this powerful tool, you can easily view and analyse your hosts and identify any - issues so you address them quickly. Get a detailed view of metrics for your hosts, see - which ones are triggering the most alerts and filter the hosts you want to analyse - using any KQL filter and easy breakdowns such as cloud provider and operating system.`, + defaultMessage: `Welcome to the 'Hosts' feature, now available in beta! With this powerful tool, + you can easily view and analyse your hosts and identify any issues so you address them quickly. + Get a detailed view of metrics for your hosts, see which ones are triggering the most alerts and filter + the hosts you want to analyse using any KQL filter and easy breakdowns such as cloud provider and + operating system.`, })}

{i18n.translate('xpack.infra.hostsViewPage.landing.tryTheFeatureMessage', { - defaultMessage: `This is an early version of the feature and we would love your feedback as we continue - to develop and improve it. To access the feature, simply enable below. Don't miss - out on this powerful new addition to our platform - try it out today!`, + defaultMessage: `This is a beta version of the feature and we would love your + feedback as we continue to develop and improve it. To access the feature, + simply enable below (or reach out to your internal administrator if not available). + Don't miss out on this powerful feature - try it out today!`, })}

diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/index.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/index.tsx index 1ca34c1cfc317..053de350a8a0d 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/index.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/index.tsx @@ -11,6 +11,7 @@ import { useTrackPageview } from '@kbn/observability-shared-plugin/public'; import { APP_WRAPPER_CLASS } from '@kbn/core/public'; import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/react'; +import { i18n } from '@kbn/i18n'; import { SourceErrorPage } from '../../../components/source_error_page'; import { SourceLoadingPage } from '../../../components/source_loading_page'; import { useSourceContext } from '../../../containers/metrics_source'; @@ -21,7 +22,7 @@ import { MetricsDataViewProvider } from './hooks/use_data_view'; import { fullHeightContentStyles } from '../../../page_template.styles'; import { UnifiedSearchProvider } from './hooks/use_unified_search'; import { HostContainer } from './components/hosts_container'; -import { ExperimentalBadge } from '../../../components/experimental_badge'; +import { BetaBadge } from '../../../components/beta_badge'; import { NoRemoteCluster } from '../../../components/empty_states'; const HOSTS_FEEDBACK_LINK = 'https://ela.st/host-feedback'; @@ -71,7 +72,12 @@ export const HostsPage = () => { `} >

{hostsTitle}

- +
), rightSideItems: [ diff --git a/x-pack/plugins/infra/public/plugin.ts b/x-pack/plugins/infra/public/plugin.ts index 62b5e728235d2..61e24e369cd11 100644 --- a/x-pack/plugins/infra/public/plugin.ts +++ b/x-pack/plugins/infra/public/plugin.ts @@ -113,7 +113,7 @@ export class Plugin implements InfraClientPluginClass { const infraEntries = [ { label: 'Inventory', app: 'metrics', path: '/inventory' }, { label: 'Metrics Explorer', app: 'metrics', path: '/explorer' }, - { label: 'Hosts', isTechnicalPreview: true, app: 'metrics', path: '/hosts' }, + { label: 'Hosts', isBetaFeature: true, app: 'metrics', path: '/hosts' }, ]; pluginsSetup.observabilityShared.navigation.registerSections( startDep$AndHostViewFlag$.pipe( diff --git a/x-pack/plugins/observability/server/ui_settings.ts b/x-pack/plugins/observability/server/ui_settings.ts index 65b8d1280da95..ab663df47488b 100644 --- a/x-pack/plugins/observability/server/ui_settings.ts +++ b/x-pack/plugins/observability/server/ui_settings.ts @@ -215,7 +215,7 @@ export const uiSettings: Record = { name: i18n.translate('xpack.observability.enableInfrastructureHostsView', { defaultMessage: 'Infrastructure Hosts view', }), - value: false, + value: true, description: i18n.translate('xpack.observability.enableInfrastructureHostsViewDescription', { defaultMessage: '{betaLabel} Enable the Hosts view in the Infrastructure app.', values: { diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 86c0fe92abb3c..6173040a563b7 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -18392,7 +18392,6 @@ "xpack.infra.chartSection.notEnoughDataPointsToRenderText": "Points de données insuffisants pour afficher le graphique, essayez d'augmenter la plage temporelle.", "xpack.infra.chartSection.notEnoughDataPointsToRenderTitle": "Données insuffisantes", "xpack.infra.common.tabBetaBadgeLabel": "Version bêta", - "xpack.infra.common.tabBetaBadgeTooltipContent": "Cette fonctionnalité est en cours de développement. Des fonctionnalités supplémentaires sont bientôt disponibles et certaines fonctionnalités peuvent changer.", "xpack.infra.configureSourceActionLabel": "Modifier la configuration de la source", "xpack.infra.dataSearch.abortedRequestErrorMessage": "La demande a été annulée.", "xpack.infra.dataSearch.cancelButtonLabel": "Annuler la demande", @@ -18464,8 +18463,6 @@ "xpack.infra.hosts.searchPlaceholder": "Rechercher dans les hôtes (par ex. cloud.provider:gcp AND system.load.1 > 0.5)", "xpack.infra.hostsPage.goToMetricsSettings": "Vérifier les paramètres", "xpack.infra.hostsPage.tellUsWhatYouThinkLink": "Dites-nous ce que vous pensez !", - "xpack.infra.hostsViewPage.experimentalBadgeDescription": "Cette fonctionnalité est en version d'évaluation technique et pourra être modifiée ou retirée complètement dans une future version. Elastic s'efforcera au maximum de corriger tout problème, mais les fonctionnalités en version d'évaluation technique ne sont pas soumises aux accords de niveau de service d'assistance des fonctionnalités officielles en disponibilité générale.", - "xpack.infra.hostsViewPage.experimentalBadgeLabel": "Version d'évaluation technique", "xpack.infra.hostsViewPage.flyout.apmServicesLinkLabel": "Service APM", "xpack.infra.hostsViewPage.flyout.uptimeLinkLabel": "Uptime", "xpack.infra.hostsViewPage.hostLimit": "Limite de l'hôte", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 4103439ebf684..e9cf0ee0339f6 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -18391,7 +18391,6 @@ "xpack.infra.chartSection.notEnoughDataPointsToRenderText": "チャートのレンダリングに必要なデータポイントが足りません。時間範囲を広げてみてください。", "xpack.infra.chartSection.notEnoughDataPointsToRenderTitle": "データが不十分です", "xpack.infra.common.tabBetaBadgeLabel": "ベータ", - "xpack.infra.common.tabBetaBadgeTooltipContent": "この機能は現在開発中です。他にも機能が追加され、機能によっては変更されるものもあります。", "xpack.infra.configureSourceActionLabel": "ソース構成を変更", "xpack.infra.dataSearch.abortedRequestErrorMessage": "リクエストが中断されましたか。", "xpack.infra.dataSearch.cancelButtonLabel": "リクエストのキャンセル", @@ -18463,8 +18462,6 @@ "xpack.infra.hosts.searchPlaceholder": "ホストを検索(例:cloud.provider:gcp AND system.load.1 > 0.5)", "xpack.infra.hostsPage.goToMetricsSettings": "設定を確認", "xpack.infra.hostsPage.tellUsWhatYouThinkLink": "ご意見をお聞かせください。", - "xpack.infra.hostsViewPage.experimentalBadgeDescription": "この機能はテクニカルプレビュー中であり、将来のリリースでは変更されたり完全に削除されたりする場合があります。Elasticは最善の努力を講じてすべての問題の修正に努めますが、テクニカルプレビュー中の機能には正式なGA機能のサポートSLAが適用されません。", - "xpack.infra.hostsViewPage.experimentalBadgeLabel": "テクニカルプレビュー", "xpack.infra.hostsViewPage.flyout.apmServicesLinkLabel": "APMサービス", "xpack.infra.hostsViewPage.flyout.uptimeLinkLabel": "アップタイム", "xpack.infra.hostsViewPage.hostLimit": "ホスト制限", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 512a78209fa66..cb7d585c71630 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -18391,7 +18391,6 @@ "xpack.infra.chartSection.notEnoughDataPointsToRenderText": "没有足够的数据点来呈现图表,请尝试增大时间范围。", "xpack.infra.chartSection.notEnoughDataPointsToRenderTitle": "没有足够的数据", "xpack.infra.common.tabBetaBadgeLabel": "公测版", - "xpack.infra.common.tabBetaBadgeTooltipContent": "我们正在开发此功能。将会有更多的功能,某些功能可能有变更。", "xpack.infra.configureSourceActionLabel": "更改源配置", "xpack.infra.dataSearch.abortedRequestErrorMessage": "请求已中止。", "xpack.infra.dataSearch.cancelButtonLabel": "取消请求", @@ -18463,8 +18462,6 @@ "xpack.infra.hosts.searchPlaceholder": "搜索主机(例如,cloud.provider:gcp AND system.load.1 > 0.5)", "xpack.infra.hostsPage.goToMetricsSettings": "检查设置", "xpack.infra.hostsPage.tellUsWhatYouThinkLink": "告诉我们您的看法!", - "xpack.infra.hostsViewPage.experimentalBadgeDescription": "此功能处于技术预览状态,在未来版本中可能会更改或完全移除。Elastic 将尽最大努力来修复任何问题,但处于技术预览状态的功能不受正式 GA 功能支持 SLA 的约束。", - "xpack.infra.hostsViewPage.experimentalBadgeLabel": "技术预览", "xpack.infra.hostsViewPage.flyout.apmServicesLinkLabel": "APM 服务", "xpack.infra.hostsViewPage.flyout.uptimeLinkLabel": "运行时间", "xpack.infra.hostsViewPage.hostLimit": "主机限制", diff --git a/x-pack/test/functional/apps/infra/hosts_view.ts b/x-pack/test/functional/apps/infra/hosts_view.ts index 5c78600c20863..cc77c4626ba01 100644 --- a/x-pack/test/functional/apps/infra/hosts_view.ts +++ b/x-pack/test/functional/apps/infra/hosts_view.ts @@ -178,6 +178,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.common.navigateToApp('infraOps'); await pageObjects.infraHome.clickDismissKubernetesTourButton(); + await pageObjects.infraHostsView.getBetaBadgeExists(); await pageObjects.infraHostsView.clickTryHostViewBadge(); const pageUrl = await browser.getCurrentUrl(); @@ -206,6 +207,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); it('Should show hosts landing page with callout when the hosts view is disabled', async () => { + await pageObjects.infraHostsView.getBetaBadgeExists(); const landingPageDisabled = await pageObjects.infraHostsView.getHostsLandingPageDisabled(); const learnMoreDocsUrl = await pageObjects.infraHostsView.getHostsLandingPageDocsLink(); @@ -356,6 +358,10 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { expect(documentTitle).to.contain('Hosts - Infrastructure - Observability - Elastic'); }); + it('should render the title beta badge', async () => { + await pageObjects.infraHostsView.getBetaBadgeExists(); + }); + describe('Hosts table', async () => { let hostRows: WebElementWrapper[] = []; diff --git a/x-pack/test/functional/page_objects/infra_hosts_view.ts b/x-pack/test/functional/page_objects/infra_hosts_view.ts index 3ab540b2d655b..b9219b53fda2d 100644 --- a/x-pack/test/functional/page_objects/infra_hosts_view.ts +++ b/x-pack/test/functional/page_objects/infra_hosts_view.ts @@ -52,6 +52,10 @@ export function InfraHostsViewProvider({ getService }: FtrProviderContext) { return testSubjects.click('hostsView-flyout-metadata-remove-filter'); }, + async getBetaBadgeExists() { + return testSubjects.exists('infra-beta-badge'); + }, + async getHostsLandingPageDisabled() { const container = await testSubjects.find('hostView-no-enable-access'); const containerText = await container.getVisibleText(); From 6316ca1d0f2fa1af26965ac74f1c2427838c636b Mon Sep 17 00:00:00 2001 From: Luke <11671118+lgestc@users.noreply.github.com> Date: Thu, 15 Jun 2023 18:20:45 +0200 Subject: [PATCH 22/59] 6425 correlations in insights (#158624) --- ..._details_left_panel_correlations_tab.cy.ts | 50 +++++- ...ert_details_right_panel_overview_tab.cy.ts | 25 ++- ...ert_details_left_panel_correlations_tab.ts | 27 ++++ ...ert_details_left_panel_correlations_tab.ts | 4 + .../cypress/tasks/expandable_flyout/common.ts | 19 +++ .../public/common/components/links/index.tsx | 20 ++- .../containers/alerts/use_alert_prevalence.ts | 18 ++- .../correlations_cases_table.test.tsx | 65 ++++++++ .../components/correlations_cases_table.tsx | 39 +++++ .../components/correlations_details.test.tsx | 114 ++++++++++++++ .../left/components/correlations_details.tsx | 147 ++++++++++++++++- ...correlations_details_alerts_table.test.tsx | 90 +++++++++++ .../correlations_details_alerts_table.tsx | 115 ++++++++++++++ .../public/flyout/left/components/test_ids.ts | 20 +++ .../flyout/left/components/translations.ts | 66 ++++++++ .../left/hooks/use_fetch_alerts.test.tsx | 89 +++++++++++ .../flyout/left/hooks/use_fetch_alerts.ts | 81 ++++++++++ .../left/hooks/use_paginated_alerts.tsx | 43 +++++ .../left/hooks/use_pagination_and_sorting.ts | 77 +++++++++ .../flyout/left/services/find_alerts.ts | 60 +++++++ .../public/flyout/left/tabs/insights_tab.tsx | 9 +- .../components/correlations_overview.test.tsx | 4 +- .../components/correlations_overview.tsx | 2 +- .../hooks/use_correlations.test.tsx | 0 .../hooks/use_correlations.ts | 149 ++++++++++++------ ..._fetch_related_alerts_by_ancestry.test.tsx | 0 .../use_fetch_related_alerts_by_ancestry.ts | 15 +- ...lated_alerts_by_same_source_event.test.tsx | 0 ...tch_related_alerts_by_same_source_event.ts | 15 +- ...e_fetch_related_alerts_by_session.test.tsx | 0 .../use_fetch_related_alerts_by_session.ts | 16 +- .../hooks/use_fetch_related_cases.test.tsx | 2 +- .../hooks/use_fetch_related_cases.ts | 18 ++- ...e_show_related_alerts_by_ancestry.test.tsx | 0 .../use_show_related_alerts_by_ancestry.ts | 0 ...lated_alerts_by_same_source_event.test.tsx | 0 ...how_related_alerts_by_same_source_event.ts | 0 ...se_show_related_alerts_by_session.test.tsx | 0 .../use_show_related_alerts_by_session.ts | 0 .../hooks/use_show_related_cases.test.tsx | 0 .../hooks/use_show_related_cases.ts | 0 .../flyout/shared/mocks/mock_context.ts | 87 ++++++++++ .../public/flyout/shared/translations.ts | 60 +++++++ 43 files changed, 1434 insertions(+), 112 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/flyout/left/components/correlations_cases_table.test.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/left/components/correlations_cases_table.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.test.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.test.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.test.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.ts create mode 100644 x-pack/plugins/security_solution/public/flyout/left/hooks/use_paginated_alerts.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/left/hooks/use_pagination_and_sorting.ts create mode 100644 x-pack/plugins/security_solution/public/flyout/left/services/find_alerts.ts rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_correlations.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_correlations.ts (52%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_fetch_related_alerts_by_ancestry.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_fetch_related_alerts_by_ancestry.ts (93%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_fetch_related_alerts_by_same_source_event.ts (92%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_fetch_related_alerts_by_session.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_fetch_related_alerts_by_session.ts (90%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_fetch_related_cases.test.tsx (95%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_fetch_related_cases.ts (85%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_show_related_alerts_by_ancestry.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_show_related_alerts_by_ancestry.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_show_related_alerts_by_same_source_event.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_show_related_alerts_by_same_source_event.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_show_related_alerts_by_session.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_show_related_alerts_by_session.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_show_related_cases.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{right => shared}/hooks/use_show_related_cases.ts (100%) create mode 100644 x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_context.ts diff --git a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_left_panel_correlations_tab.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_left_panel_correlations_tab.cy.ts index e780500ce67c4..d97885e2b0609 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_left_panel_correlations_tab.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_left_panel_correlations_tab.cy.ts @@ -7,15 +7,28 @@ import { createRule } from '../../../../tasks/api_calls/rules'; import { getNewRule } from '../../../../objects/rule'; -import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON } from '../../../../screens/expandable_flyout/alert_details_left_panel_correlations_tab'; +import { + CORRELATIONS_ANCESTRY_SECTION, + CORRELATIONS_ANCESTRY_TABLE, + CORRELATIONS_CASES_SECTION, + CORRELATIONS_SESSION_SECTION, + CORRELATIONS_SOURCE_SECTION, + DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON, +} from '../../../../screens/expandable_flyout/alert_details_left_panel_correlations_tab'; import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB, DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_BUTTON_GROUP, } from '../../../../screens/expandable_flyout/alert_details_left_panel'; -import { openCorrelationsTab } from '../../../../tasks/expandable_flyout/alert_details_left_panel_correlations_tab'; +import { + expandCorrelationsSection, + openCorrelationsTab, +} from '../../../../tasks/expandable_flyout/alert_details_left_panel_correlations_tab'; import { openInsightsTab } from '../../../../tasks/expandable_flyout/alert_details_left_panel'; import { expandDocumentDetailsExpandableFlyoutLeftSection } from '../../../../tasks/expandable_flyout/alert_details_right_panel'; -import { expandFirstAlertExpandableFlyout } from '../../../../tasks/expandable_flyout/common'; +import { + createNewCaseFromExpandableFlyout, + expandFirstAlertExpandableFlyout, +} from '../../../../tasks/expandable_flyout/common'; import { cleanKibana } from '../../../../tasks/common'; import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule'; import { login, visit } from '../../../../tasks/login'; @@ -37,18 +50,45 @@ describe( openCorrelationsTab(); }); - it('should serialize its state to url', () => { + it('should render correlations details correctly', () => { + cy.log('link the alert to a new case'); + + createNewCaseFromExpandableFlyout(); + + cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB).scrollIntoView(); + + cy.log('should render the Insights header'); cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB) .should('be.visible') .and('have.text', 'Insights'); + cy.log('should render the inner tab switch'); cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_BUTTON_GROUP).should('be.visible'); + cy.log('should render correlations tab activator / button'); cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON) .should('be.visible') .and('have.text', 'Correlations'); - // TODO actual test + cy.log('should render all the correlations sections'); + + cy.get(CORRELATIONS_ANCESTRY_SECTION) + .should('be.visible') + .and('have.text', '1 alert related by ancestry'); + + cy.get(CORRELATIONS_SOURCE_SECTION) + .should('be.visible') + .and('have.text', '0 alerts related by source event'); + + cy.get(CORRELATIONS_SESSION_SECTION) + .should('be.visible') + .and('have.text', '1 alert related by session'); + + cy.get(CORRELATIONS_CASES_SECTION).should('be.visible').and('have.text', '1 related case'); + + expandCorrelationsSection(CORRELATIONS_ANCESTRY_SECTION); + + cy.get(CORRELATIONS_ANCESTRY_TABLE).should('be.visible'); }); } ); diff --git a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts index e344e1bd6afbf..0ac62665b74a3 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts @@ -5,14 +5,11 @@ * 2.0. */ -import { DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE } from '../../../../screens/expandable_flyout/alert_details_right_panel'; import { DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB_CONTENT } from '../../../../screens/expandable_flyout/alert_details_left_panel_investigation_tab'; import { - DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON, - DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT, - DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT, -} from '../../../../screens/expandable_flyout/common'; -import { expandFirstAlertExpandableFlyout } from '../../../../tasks/expandable_flyout/common'; + createNewCaseFromExpandableFlyout, + expandFirstAlertExpandableFlyout, +} from '../../../../tasks/expandable_flyout/common'; import { DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ANALYZER_TREE, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_DETAILS, @@ -61,7 +58,6 @@ import { createRule } from '../../../../tasks/api_calls/rules'; import { getNewRule } from '../../../../objects/rule'; import { ALERTS_URL } from '../../../../urls/navigation'; import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule'; -import { openTakeActionButtonAndSelectItem } from '../../../../tasks/expandable_flyout/alert_details_right_panel'; import { DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_CONTENT, DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_EVENT_TYPE_ROW, @@ -247,15 +243,11 @@ describe( cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_CONTENT).should('be.visible'); // TODO update when we can navigate to Threat Intelligence sub tab directly }); - it('should display correlations section', () => { + // TODO: skipping this due to flakiness + it.skip('should display correlations section', () => { cy.log('link the alert to a new case'); - openTakeActionButtonAndSelectItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE); - cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT).type('case'); - cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT).type( - 'case description' - ); - cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON).click(); + createNewCaseFromExpandableFlyout(); toggleOverviewTabDescriptionSection(); toggleOverviewTabInsightsSection(); @@ -270,14 +262,15 @@ describe( cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_CONTENT) .should('be.visible') .within(() => { + // TODO the order in which these appear is not deterministic currently, hence this can cause flakiness cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES) .eq(0) .should('be.visible') - .and('have.text', '1 related case'); + .and('have.text', '1 alert related by ancestry'); cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES) .eq(1) .should('be.visible') - .and('have.text', '1 alert related by ancestry'); + .and('have.text', '1 related case'); // cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES) // .eq(2) // .should('be.visible') diff --git a/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_left_panel_correlations_tab.ts b/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_left_panel_correlations_tab.ts index 1cf076203c4fe..c05c0da82c820 100644 --- a/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_left_panel_correlations_tab.ts +++ b/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_left_panel_correlations_tab.ts @@ -7,7 +7,34 @@ import { getDataTestSubjectSelector } from '../../helpers/common'; import { INSIGHTS_TAB_CORRELATIONS_BUTTON_TEST_ID } from '../../../public/flyout/left/tabs/test_ids'; +import { + CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TEST_ID, + CORRELATIONS_DETAILS_BY_ANCESTRY_TABLE_TEST_ID, + CORRELATIONS_DETAILS_BY_SESSION_SECTION_TEST_ID, + CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TEST_ID, + CORRELATIONS_DETAILS_CASES_SECTION_TEST_ID, +} from '../../../public/flyout/left/components/test_ids'; export const DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON = getDataTestSubjectSelector( INSIGHTS_TAB_CORRELATIONS_BUTTON_TEST_ID ); + +export const CORRELATIONS_ANCESTRY_SECTION = getDataTestSubjectSelector( + CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TEST_ID +); + +export const CORRELATIONS_SOURCE_SECTION = getDataTestSubjectSelector( + CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TEST_ID +); + +export const CORRELATIONS_SESSION_SECTION = getDataTestSubjectSelector( + CORRELATIONS_DETAILS_BY_SESSION_SECTION_TEST_ID +); + +export const CORRELATIONS_CASES_SECTION = getDataTestSubjectSelector( + CORRELATIONS_DETAILS_CASES_SECTION_TEST_ID +); + +export const CORRELATIONS_ANCESTRY_TABLE = getDataTestSubjectSelector( + CORRELATIONS_DETAILS_BY_ANCESTRY_TABLE_TEST_ID +); diff --git a/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_left_panel_correlations_tab.ts b/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_left_panel_correlations_tab.ts index cf023e4bd9a68..abc08842c2fc6 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_left_panel_correlations_tab.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_left_panel_correlations_tab.ts @@ -14,3 +14,7 @@ export const openCorrelationsTab = () => { cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON).should('be.visible').click(); }; + +export const expandCorrelationsSection = (sectionSelector: string) => { + cy.get(`${sectionSelector} button`).should('be.visible').click(); +}; diff --git a/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/common.ts b/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/common.ts index c3311d8649f09..424d723e732b5 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/common.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/common.ts @@ -6,14 +6,20 @@ */ import { EXPAND_ALERT_BTN } from '../../screens/alerts'; +import { DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE } from '../../screens/expandable_flyout/alert_details_right_panel'; import { CREATE_CASE_BUTTON, + DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON, + DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT, + DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT, KIBANA_NAVBAR_ALERTS_PAGE, KIBANA_NAVBAR_CASES_PAGE, NEW_CASE_CREATE_BUTTON, NEW_CASE_DESCRIPTION_INPUT, NEW_CASE_NAME_INPUT, + VIEW_CASE_TOASTER_LINK, } from '../../screens/expandable_flyout/common'; +import { openTakeActionButtonAndSelectItem } from './alert_details_right_panel'; /** * Navigates to the alerts page by clicking on the Kibana sidenav entry @@ -47,3 +53,16 @@ export const createNewCaseFromCases = () => { cy.get(NEW_CASE_DESCRIPTION_INPUT).type('case description'); cy.get(NEW_CASE_CREATE_BUTTON).should('be.visible').click(); }; + +/** + * create a new case from the expanded expandable flyout + */ +export const createNewCaseFromExpandableFlyout = () => { + openTakeActionButtonAndSelectItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE); + cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT).type('case'); + cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT).type('case description'); + cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON).click(); + + // NOTE: wait for case link (case created) + cy.get(VIEW_CASE_TOASTER_LINK).should('be.visible'); +}; diff --git a/x-pack/plugins/security_solution/public/common/components/links/index.tsx b/x-pack/plugins/security_solution/public/common/components/links/index.tsx index 727e4c37c76b2..5090cbf8e6e52 100644 --- a/x-pack/plugins/security_solution/public/common/components/links/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/links/index.tsx @@ -276,12 +276,28 @@ const NetworkDetailsLinkComponent: React.FC<{ export const NetworkDetailsLink = React.memo(NetworkDetailsLinkComponent); -const CaseDetailsLinkComponent: React.FC<{ +export interface CaseDetailsLinkComponentProps { children?: React.ReactNode; + /** + * Will be used to construct case url + */ detailName: string; + /** + * Link title + */ title?: string; + /** + * Link index + */ index?: number; -}> = ({ index, children, detailName, title }) => { +} + +const CaseDetailsLinkComponent: React.FC = ({ + index, + children, + detailName, + title, +}) => { const { formatUrl, search } = useFormatUrl(SecurityPageName.case); const { navigateToApp } = useKibana().services.application; const { activeStep, isTourShown } = useTourContext(); diff --git a/x-pack/plugins/security_solution/public/common/containers/alerts/use_alert_prevalence.ts b/x-pack/plugins/security_solution/public/common/containers/alerts/use_alert_prevalence.ts index 3e98e067bfe2d..d470e4e85f1cd 100644 --- a/x-pack/plugins/security_solution/public/common/containers/alerts/use_alert_prevalence.ts +++ b/x-pack/plugins/security_solution/public/common/containers/alerts/use_alert_prevalence.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { useEffect, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { DEFAULT_MAX_TABLE_QUERY_SIZE } from '../../../../common/constants'; import { useGlobalTime } from '../use_global_time'; @@ -73,14 +73,16 @@ export const useAlertPrevalence = ({ } const error = !loading && count === undefined; - const alertIds = data?.hits.hits.map(({ _id }) => _id); - return { - loading, - count, - error, - alertIds, - }; + return useMemo( + () => ({ + loading, + count, + error, + alertIds: data?.hits.hits.map(({ _id }) => _id), + }), + [count, data, error, loading] + ); }; const generateAlertPrevalenceQuery = ( diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_cases_table.test.tsx b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_cases_table.test.tsx new file mode 100644 index 0000000000000..7b13204e11c9d --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_cases_table.test.tsx @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import { CaseDetailsLink } from '../../../common/components/links'; + +import { + CorrelationsCasesTable, + type CorrelationsCasesTableProps, +} from './correlations_cases_table'; +import { CaseStatuses, type RelatedCaseInfo } from '@kbn/cases-plugin/common/api'; + +jest.mock('../../../common/components/links', () => ({ + CaseDetailsLink: jest + .fn() + .mockImplementation(({ title }) => <>{``}), +})); + +const cases: RelatedCaseInfo[] = [ + { + id: 'case-1', + title: 'Case 1', + description: '', + createdAt: '', + totals: { + alerts: 0, + userComments: 0, + }, + status: CaseStatuses.open, + }, + { + id: 'case-2', + title: 'Case 2', + description: '', + createdAt: '', + totals: { + alerts: 0, + userComments: 0, + }, + status: CaseStatuses.open, + }, +]; + +const props: CorrelationsCasesTableProps = { + cases, +}; + +describe('CorrelationsCasesTable', () => { + it('renders the table correctly', () => { + render(); + + expect(CaseDetailsLink).toHaveBeenCalledWith( + expect.objectContaining({ + title: 'Case 1', + detailName: 'case-1', + }), + expect.anything() + ); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_cases_table.tsx b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_cases_table.tsx new file mode 100644 index 0000000000000..4079a55a798b5 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_cases_table.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { type EuiBasicTableColumn, EuiInMemoryTable } from '@elastic/eui'; +import type { RelatedCaseInfo } from '@kbn/cases-plugin/common/api'; +import React, { type FC } from 'react'; +import { CaseDetailsLink } from '../../../common/components/links'; + +import * as i18n from './translations'; + +export interface CorrelationsCasesTableProps { + cases: RelatedCaseInfo[]; +} + +const columns: Array> = [ + { + field: 'title', + name: i18n.CORRELATIONS_CASE_NAME_COLUMN_TITLE, + truncateText: true, + render: (value: string, caseData: RelatedCaseInfo) => ( + + {caseData.title} + + ), + }, + { + field: 'status', + name: i18n.CORRELATIONS_CASE_STATUS_COLUMN_TITLE, + truncateText: true, + }, +]; + +export const CorrelationsCasesTable: FC = ({ cases }) => ( + +); diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.test.tsx b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.test.tsx new file mode 100644 index 0000000000000..ceb2d5cfba5db --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.test.tsx @@ -0,0 +1,114 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import { useTimelineEventsDetails } from '../../../timelines/containers/details'; +import { useSourcererDataView } from '../../../common/containers/sourcerer'; +import { useCorrelations, type UseCorrelationsResult } from '../../shared/hooks/use_correlations'; +import { CorrelationsDetails } from './correlations_details'; +import { type CasesByAlertId, CaseStatuses } from '@kbn/cases-plugin/common/api'; +import type { SelectedDataView } from '../../../common/store/sourcerer/model'; +import { TestProviders } from '../../../common/mock'; +import { LeftPanelContext } from '../context'; + +jest.mock('../../../timelines/containers/details'); +jest.mock('../../../common/containers/sourcerer'); +jest.mock('../../shared/hooks/use_correlations'); + +const mockCasesByAlertId: CasesByAlertId = [ + { + id: '123', + title: 'Mock Case', + description: 'This is a mock case for testing purposes', + status: CaseStatuses.open, + createdAt: '2021-10-01T12:00:00Z', + totals: { + alerts: 5, + userComments: 2, + }, + }, +]; + +const mockUseCorrelationsResult: UseCorrelationsResult = { + loading: false, + error: false, + data: [], + dataCount: 0, + alertsBySessionIds: ['alert1', 'alert2', 'alert3'], + sameSourceAlertsIds: ['alert1', 'alert2'], + ancestryAlertsIds: ['alert3'], + cases: mockCasesByAlertId, +}; + +const contextValue: LeftPanelContext = { + indexName: 'index', + eventId: 'event', + getFieldsData: () => null, + dataFormattedForFieldBrowser: [], + dataAsNestedObject: null, + scopeId: '', + browserFields: null, + searchHit: undefined, +}; + +const renderCorrelationDetails = () => { + return render( + + + + + + ); +}; + +describe('CorrelationsDetails', () => { + beforeEach(() => { + jest.clearAllMocks(); + + jest + .mocked(useSourcererDataView) + .mockReturnValue({ runtimeMappings: {} } as unknown as SelectedDataView); + }); + + it('renders loading spinner when data is loading', () => { + jest + .mocked(useTimelineEventsDetails) + .mockReturnValue([true, null, undefined, null, async () => {}]); + jest.mocked(useCorrelations).mockReturnValue(mockUseCorrelationsResult); + + renderCorrelationDetails(); + + expect(screen.getByRole('progressbar')).toBeInTheDocument(); + }); + + it('renders error message when there is an error', () => { + jest + .mocked(useTimelineEventsDetails) + .mockReturnValue([false, null, undefined, null, async () => {}]); + jest.mocked(useCorrelations).mockReturnValue({ ...mockUseCorrelationsResult, error: true }); + + renderCorrelationDetails(); + + expect( + screen.getByText('There was an error displaying Correlation Details view') + ).toBeInTheDocument(); + }); + + it('renders alerts tables when data is loaded', () => { + jest + .mocked(useTimelineEventsDetails) + .mockReturnValue([false, null, undefined, null, async () => {}]); + jest.mocked(useCorrelations).mockReturnValue(mockUseCorrelationsResult); + + renderCorrelationDetails(); + + expect(screen.getByText('1 alert related by ancestry')).toBeInTheDocument(); + expect(screen.getByText('2 alerts related by source event')).toBeInTheDocument(); + expect(screen.getByText('3 alerts related by session')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.tsx b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.tsx index e971980067183..f0dfab8bb1cbd 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.tsx +++ b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.tsx @@ -6,8 +6,41 @@ */ import React from 'react'; -import { EuiText } from '@elastic/eui'; -import { CORRELATIONS_DETAILS_TEST_ID } from './test_ids'; +import { + EuiEmptyPrompt, + EuiFlexGroup, + EuiFlexItem, + EuiLoadingSpinner, + EuiSpacer, +} from '@elastic/eui'; +import { useTimelineEventsDetails } from '../../../timelines/containers/details'; +import { useSourcererDataView } from '../../../common/containers/sourcerer'; + +import { useCorrelations } from '../../shared/hooks/use_correlations'; +import { useLeftPanelContext } from '../context'; +import { useRouteSpy } from '../../../common/utils/route/use_route_spy'; +import { SecurityPageName } from '../../../../common'; +import { SourcererScopeName } from '../../../common/store/sourcerer/model'; +import { EntityPanel } from '../../right/components/entity_panel'; +import { AlertsTable } from './correlations_details_alerts_table'; +import { ERROR_MESSAGE, ERROR_TITLE } from '../../shared/translations'; +import { + CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TEST_ID, + CORRELATIONS_DETAILS_BY_ANCESTRY_TABLE_TEST_ID, + CORRELATIONS_DETAILS_BY_SESSION_SECTION_TEST_ID, + CORRELATIONS_DETAILS_BY_SESSION_TABLE_TEST_ID, + CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TEST_ID, + CORRELATIONS_DETAILS_BY_SOURCE_TABLE_TEST_ID, + CORRELATIONS_DETAILS_CASES_SECTION_TEST_ID, + CORRELATIONS_DETAILS_ERROR_TEST_ID, +} from './test_ids'; +import { CorrelationsCasesTable } from './correlations_cases_table'; +import { + ANCESTRY_ALERTS_HEADING, + RELATED_CASES_HEADING, + SESSION_ALERTS_HEADING, + SOURCE_ALERTS_HEADING, +} from './translations'; export const CORRELATIONS_TAB_ID = 'correlations-details'; @@ -15,7 +48,115 @@ export const CORRELATIONS_TAB_ID = 'correlations-details'; * Correlations displayed in the document details expandable flyout left section under the Insights tab */ export const CorrelationsDetails: React.FC = () => { - return {'Correlations'}; + const { indexName, eventId, scopeId } = useLeftPanelContext(); + + const [{ pageName }] = useRouteSpy(); + const sourcererScope = + pageName === SecurityPageName.detections + ? SourcererScopeName.detections + : SourcererScopeName.default; + + const sourcererDataView = useSourcererDataView(sourcererScope); + + const [isEventDataLoading, eventData, _searchHit, dataAsNestedObject] = useTimelineEventsDetails({ + indexName, + eventId, + runtimeMappings: sourcererDataView.runtimeMappings, + skip: !eventId, + }); + + const { + loading: isCorrelationsLoading, + error: correlationsError, + ancestryAlertsIds, + alertsBySessionIds, + sameSourceAlertsIds, + cases, + } = useCorrelations({ + eventId, + dataAsNestedObject, + dataFormattedForFieldBrowser: eventData, + scopeId, + }); + + const topLevelLoading = isEventDataLoading || isCorrelationsLoading; + + if (topLevelLoading) { + return ( + + + + + + ); + } + + if (correlationsError) { + return ( + {ERROR_TITLE('Correlation Details')}} + body={

{ERROR_MESSAGE('Correlation Details view')}

} + data-test-subj={CORRELATIONS_DETAILS_ERROR_TEST_ID} + /> + ); + } + + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + ); }; CorrelationsDetails.displayName = 'CorrelationsDetails'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.test.tsx b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.test.tsx new file mode 100644 index 0000000000000..156b254eaf081 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.test.tsx @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import { EuiBasicTable } from '@elastic/eui'; +import { AlertsTable, columns } from './correlations_details_alerts_table'; +import { usePaginatedAlerts } from '../hooks/use_paginated_alerts'; + +jest.mock('../hooks/use_paginated_alerts'); +jest.mock('@elastic/eui', () => ({ + ...jest.requireActual('@elastic/eui'), + EuiBasicTable: jest.fn(() =>
), +})); + +describe('AlertsTable', () => { + const alertIds = ['id1', 'id2', 'id3']; + + beforeEach(() => { + jest.mocked(usePaginatedAlerts).mockReturnValue({ + setPagination: jest.fn(), + setSorting: jest.fn(), + data: [ + { + _id: '1', + _index: 'index', + fields: { + '@timestamp': ['2022-01-01'], + 'kibana.alert.rule.name': ['Rule1'], + 'kibana.alert.reason': ['Reason1'], + 'kibana.alert.severity': ['Severity1'], + }, + }, + { + _id: '1', + _index: 'index', + fields: { + '@timestamp': ['2022-01-02'], + 'kibana.alert.rule.name': ['Rule2'], + 'kibana.alert.reason': ['Reason2'], + 'kibana.alert.severity': ['Severity2'], + }, + }, + ], + loading: false, + paginationConfig: { + pageIndex: 0, + pageSize: 5, + totalItemCount: 10, + pageSizeOptions: [5, 10, 20], + }, + sorting: { sort: { field: '@timestamp', direction: 'asc' }, enableAllColumns: true }, + error: false, + }); + }); + + it('renders EuiBasicTable with correct props', () => { + render(); + + expect(jest.mocked(usePaginatedAlerts)).toHaveBeenCalled(); + + expect(jest.mocked(EuiBasicTable)).toHaveBeenCalledWith( + expect.objectContaining({ + loading: false, + items: [ + { + '@timestamp': '2022-01-01', + 'kibana.alert.rule.name': 'Rule1', + 'kibana.alert.reason': 'Reason1', + 'kibana.alert.severity': 'Severity1', + }, + { + '@timestamp': '2022-01-02', + 'kibana.alert.rule.name': 'Rule2', + 'kibana.alert.reason': 'Reason2', + 'kibana.alert.severity': 'Severity2', + }, + ], + columns, + pagination: { pageIndex: 0, pageSize: 5, totalItemCount: 10, pageSizeOptions: [5, 10, 20] }, + sorting: { sort: { field: '@timestamp', direction: 'asc' }, enableAllColumns: true }, + }), + expect.anything() + ); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.tsx b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.tsx new file mode 100644 index 0000000000000..79ce5e8f4bf0d --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.tsx @@ -0,0 +1,115 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { type FC, useMemo, useCallback } from 'react'; +import { type Criteria, EuiBasicTable, formatDate, EuiEmptyPrompt } from '@elastic/eui'; + +import { Severity } from '@kbn/securitysolution-io-ts-alerting-types'; +import { isRight } from 'fp-ts/lib/Either'; +import { SeverityBadge } from '../../../detections/components/rules/severity_badge'; +import { usePaginatedAlerts } from '../hooks/use_paginated_alerts'; +import { ERROR_MESSAGE, ERROR_TITLE } from '../../shared/translations'; +import * as i18n from './translations'; + +export const TIMESTAMP_DATE_FORMAT = 'MMM D, YYYY @ HH:mm:ss.SSS'; + +export const columns = [ + { + field: '@timestamp', + name: i18n.CORRELATIONS_TIMESTAMP_COLUMN_TITLE, + truncateText: true, + dataType: 'date' as const, + render: (value: string) => formatDate(value, TIMESTAMP_DATE_FORMAT), + }, + { + field: 'kibana.alert.rule.name', + name: i18n.CORRELATIONS_RULE_COLUMN_TITLE, + truncateText: true, + }, + { + field: 'kibana.alert.reason', + name: i18n.CORRELATIONS_REASON_COLUMN_TITLE, + truncateText: true, + }, + { + field: 'kibana.alert.severity', + name: i18n.CORRELATIONS_SEVERITY_COLUMN_TITLE, + truncateText: true, + render: (value: string) => { + const decodedSeverity = Severity.decode(value); + return isRight(decodedSeverity) ? : value; + }, + }, +]; + +export interface AlertsTableProps { + /** + * Ids of alerts to display in the table + */ + alertIds: string[]; + /** + * Data test subject string for testing + */ + ['data-test-subj']?: string; +} + +/** + * Renders paginated alert array based on the provided alertIds + */ +export const AlertsTable: FC = ({ alertIds, 'data-test-subj': dataTestSubj }) => { + const { setPagination, setSorting, data, loading, paginationConfig, sorting, error } = + usePaginatedAlerts(alertIds); + + const onTableChange = useCallback( + ({ page, sort }: Criteria>) => { + if (page) { + const { index: pageIndex, size: pageSize } = page; + setPagination({ pageIndex, pageSize }); + } + + if (sort) { + setSorting(sort); + } + }, + [setPagination, setSorting] + ); + + const mappedData = useMemo(() => { + return data + .map((hit) => hit.fields) + .map((fields = {}) => + Object.keys(fields).reduce((result, fieldName) => { + result[fieldName] = fields?.[fieldName]?.[0] || fields?.[fieldName]; + return result; + }, {} as Record) + ); + }, [data]); + + if (error) { + return ( + {ERROR_TITLE('alert data')}} + body={

{ERROR_MESSAGE('alert data')}

} + data-test-subj={`${dataTestSubj}Error`} + /> + ); + } + + return ( + > + data-test-subj={dataTestSubj} + loading={loading} + items={mappedData} + columns={columns} + pagination={paginationConfig} + sorting={sorting} + onChange={onTableChange} + /> + ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/left/components/test_ids.ts index 45afe7e95a4cc..f2ea803b53a9f 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/left/components/test_ids.ts @@ -63,6 +63,26 @@ export const THREAT_INTELLIGENCE_DETAILS_ENRICHMENTS_TEST_ID = `threat-match-det export const THREAT_INTELLIGENCE_DETAILS_SPINNER_TEST_ID = `${PREFIX}ThreatIntelligenceDetailsLoadingSpinner` as const; +export const INVESTIGATION_TEST_ID = `${PREFIX}Investigation` as const; + +export const CORRELATIONS_DETAILS_ERROR_TEST_ID = `${CORRELATIONS_DETAILS_TEST_ID}Error` as const; + +export const CORRELATIONS_DETAILS_BY_ANCESTRY_TABLE_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}AlertsByAncestryTable` as const; +export const CORRELATIONS_DETAILS_BY_SOURCE_TABLE_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}AlertsBySourceTable` as const; +export const CORRELATIONS_DETAILS_BY_SESSION_TABLE_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}AlertsBySessionTable` as const; + +export const CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}AlertsByAncestrySection` as const; +export const CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}AlertsBySourceSection` as const; +export const CORRELATIONS_DETAILS_BY_SESSION_SECTION_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}AlertsBySessionSection` as const; +export const CORRELATIONS_DETAILS_CASES_SECTION_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}CasesSection` as const; + export const RESPONSE_BASE_TEST_ID = `${PREFIX}Responses` as const; export const RESPONSE_DETAILS_TEST_ID = `${RESPONSE_BASE_TEST_ID}Details` as const; export const RESPONSE_EMPTY_TEST_ID = `${RESPONSE_BASE_TEST_ID}Empty` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/translations.ts b/x-pack/plugins/security_solution/public/flyout/left/components/translations.ts index c2a22ced6d813..b8c0122a7a595 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/translations.ts +++ b/x-pack/plugins/security_solution/public/flyout/left/components/translations.ts @@ -141,3 +141,69 @@ export const RESPONSE_TITLE = i18n.translate('xpack.securitySolution.flyout.resp export const RESPONSE_EMPTY = i18n.translate('xpack.securitySolution.flyout.response.empty', { defaultMessage: 'There are no response actions defined for this event.', }); + +export const CORRELATIONS_TIMESTAMP_COLUMN_TITLE = i18n.translate( + 'xpack.securitySolution.flyout.correlations.timestampColumnTitle', + { + defaultMessage: 'Timestamp', + } +); + +export const CORRELATIONS_RULE_COLUMN_TITLE = i18n.translate( + 'xpack.securitySolution.flyout.correlations.ruleColumnTitle', + { + defaultMessage: 'Rule', + } +); + +export const CORRELATIONS_REASON_COLUMN_TITLE = i18n.translate( + 'xpack.securitySolution.flyout.correlations.reasonColumnTitle', + { + defaultMessage: 'Reason', + } +); + +export const CORRELATIONS_SEVERITY_COLUMN_TITLE = i18n.translate( + 'xpack.securitySolution.flyout.correlations.severityColumnTitle', + { + defaultMessage: 'Severity', + } +); + +export const CORRELATIONS_CASE_STATUS_COLUMN_TITLE = i18n.translate( + 'xpack.securitySolution.flyout.correlations.statusColumnTitle', + { + defaultMessage: 'Status', + } +); + +export const CORRELATIONS_CASE_NAME_COLUMN_TITLE = i18n.translate( + 'xpack.securitySolution.flyout.correlations.caseNameColumnTitle', + { + defaultMessage: 'Name', + } +); + +export const ANCESTRY_ALERTS_HEADING = (count: number) => + i18n.translate('xpack.securitySolution.flyout.correlations.ancestryAlertsHeading', { + defaultMessage: '{count, plural, one {# alert} other {# alerts}} related by ancestry', + values: { count }, + }); + +export const SOURCE_ALERTS_HEADING = (count: number) => + i18n.translate('xpack.securitySolution.flyout.correlations.sourceAlertsHeading', { + defaultMessage: '{count, plural, one {# alert} other {# alerts}} related by source event', + values: { count }, + }); + +export const SESSION_ALERTS_HEADING = (count: number) => + i18n.translate('xpack.securitySolution.flyout.correlations.sessionAlertsHeading', { + defaultMessage: '{count, plural, one {# alert} other {# alerts}} related by session', + values: { count }, + }); + +export const RELATED_CASES_HEADING = (count: number) => + i18n.translate('xpack.securitySolution.flyout.correlations.relatedCasesHeading', { + defaultMessage: '{count} related {count, plural, one {case} other {cases}}', + values: { count }, + }); diff --git a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.test.tsx b/x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.test.tsx new file mode 100644 index 0000000000000..1641095e2d50f --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.test.tsx @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { renderHook } from '@testing-library/react-hooks'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { useKibana } from '../../../common/lib/kibana'; +import { createFindAlerts } from '../services/find_alerts'; +import { useFetchAlerts, type UseAlertsQueryParams } from './use_fetch_alerts'; + +jest.mock('../../../common/lib/kibana'); +jest.mock('../services/find_alerts'); + +describe('useFetchAlerts', () => { + beforeEach(() => { + jest.mocked(useKibana).mockReturnValue({ + services: { + data: { + search: { + search: jest.fn(), + }, + }, + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any); + }); + + it('fetches alerts and handles loading state', async () => { + const queryClient = new QueryClient(); + const wrapper = ({ children }: { children: React.ReactChild }) => ( + {children} + ); + + jest + .mocked(createFindAlerts) + .mockReturnValue( + jest.fn().mockResolvedValue({ hits: { total: 10, hits: ['alert1', 'alert2', 'alert3'] } }) + ); + + const params: UseAlertsQueryParams = { + alertIds: ['id1', 'id2'], + from: 0, + size: 10, + sort: [{ '@timestamp': 'desc' }], + }; + + const { result, waitFor } = renderHook(() => useFetchAlerts(params), { wrapper }); + + expect(result.current.loading).toBe(true); + + await waitFor(() => !result.current.loading); + + expect(result.current.loading).toBe(false); + expect(result.current.error).toBe(false); + expect(result.current.totalItemCount).toBe(10); + expect(result.current.data).toEqual(['alert1', 'alert2', 'alert3']); + }); + + it('handles error state', async () => { + const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } }); + const wrapper = ({ children }: { children: React.ReactChild }) => ( + {children} + ); + + jest + .mocked(createFindAlerts) + .mockReturnValue(jest.fn().mockRejectedValue(new Error('Fetch failed'))); + + const params: UseAlertsQueryParams = { + alertIds: ['id1', 'id2'], + from: 0, + size: 10, + sort: [{ '@timestamp': 'desc' }], + }; + + const { result, waitFor } = renderHook(() => useFetchAlerts(params), { wrapper }); + + expect(result.current.loading).toBe(true); + + await waitFor(() => !result.current.loading); + + expect(result.current.loading).toBe(false); + expect(result.current.error).toBe(true); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.ts b/x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.ts new file mode 100644 index 0000000000000..4e9b7541801c8 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.ts @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { useQuery } from '@tanstack/react-query'; +import type { AggregationsAggregate, SearchResponse } from '@elastic/elasticsearch/lib/api/types'; +import { isNumber } from 'lodash'; +import { useKibana } from '../../../common/lib/kibana'; +import { type AlertsQueryParams, createFindAlerts } from '../services/find_alerts'; + +export type UseAlertsQueryParams = AlertsQueryParams; + +export interface UseAlertsQueryResult { + /** + * Was there an error + */ + error: boolean; + /** + * Is fetch in progress + */ + loading: boolean; + /** + * Total records, for pagination + */ + totalItemCount: number; + /** + * Individual records returned from running the query + */ + data: SearchResponse>['hits']['hits']; +} + +/** + * Returns alerts based on provided ids with support for pagination. Uses react-query internally. + */ +export const useFetchAlerts = ({ + alertIds, + from, + size, + sort, +}: UseAlertsQueryParams): UseAlertsQueryResult => { + const QUERY_KEY = `useFetchAlerts`; + + const { + services: { data: dataService }, + } = useKibana(); + + const findAlerts = useMemo(() => createFindAlerts(dataService.search), [dataService.search]); + + const { data, isLoading, isError } = useQuery< + SearchResponse, Record>, + unknown + >( + [QUERY_KEY, alertIds, from, size, sort], + async ({ signal }) => + findAlerts({ + signal, + alertIds, + from, + size, + sort, + }), + { + keepPreviousData: true, + } + ); + + return useMemo(() => { + const total = data?.hits?.total; + + return { + loading: isLoading, + error: isError, + data: data?.hits?.hits || [], + totalItemCount: isNumber(total) ? total : 0 || 0, + }; + }, [data, isError, isLoading]); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_paginated_alerts.tsx b/x-pack/plugins/security_solution/public/flyout/left/hooks/use_paginated_alerts.tsx new file mode 100644 index 0000000000000..ae569ba27bd98 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/left/hooks/use_paginated_alerts.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { useFetchAlerts } from './use_fetch_alerts'; +import { usePagination, useSorting } from './use_pagination_and_sorting'; + +/** + * Adds pagination and sorting state to useFetchAlerts. It is used in alerts table local to correlation details + */ +export const usePaginatedAlerts = (alertIds: string[]) => { + const { setPagination, pagination, pageSizeOptions } = usePagination(); + const { sorting, sortConfig, setSorting } = useSorting(); + + const { data, totalItemCount, loading, error } = useFetchAlerts({ + alertIds, + from: pagination.pageIndex * pagination.pageSize, + size: pagination.pageSize, + sort: sortConfig, + }); + + const paginationConfig = useMemo(() => { + return { + ...pagination, + pageSizeOptions, + totalItemCount, + }; + }, [pageSizeOptions, pagination, totalItemCount]); + + return { + paginationConfig, + setPagination, + setSorting, + loading, + data, + sorting, + error, + }; +}; diff --git a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_pagination_and_sorting.ts b/x-pack/plugins/security_solution/public/flyout/left/hooks/use_pagination_and_sorting.ts new file mode 100644 index 0000000000000..ad6d9c56a7ddf --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/left/hooks/use_pagination_and_sorting.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 { useMemo, useReducer } from 'react'; + +const PAGE_SIZES = [5, 10, 20] as const; + +export interface PaginationState { + pageIndex: number; + pageSize: number; +} + +const initialPagination: PaginationState = { pageIndex: 0, pageSize: PAGE_SIZES[0] }; + +const paginationReducer = (_state: PaginationState, action: PaginationState): PaginationState => { + return action; +}; + +export interface SortingState { + enableAllColumns: boolean; + sort: { + field: string; + direction: 'asc' | 'desc'; + }; +} +const initialSorting: SortingState = { + sort: { + field: '@timestamp', + direction: 'desc', + }, + enableAllColumns: true, +}; + +const sortingReducer = (state: SortingState, action: SortingState['sort']): SortingState => { + return { + ...state, + sort: action, + }; +}; + +/** + * useSorting exposes resusable sorting logic that can be used with eui tables + */ +export const useSorting = () => { + const [sorting, setSorting] = useReducer(sortingReducer, initialSorting); + + const sortConfig = useMemo(() => { + return [ + { + [sorting.sort.field]: sorting.sort.direction, + }, + ]; + }, [sorting.sort.direction, sorting.sort.field]); + + return { sorting, setSorting, sortConfig }; +}; + +/** + * use pagination adds reusable logic that can be applied to + * eui tables + */ +export const usePagination = () => { + const [pagination, setPagination] = useReducer(paginationReducer, initialPagination); + + return useMemo( + () => ({ + pageSizeOptions: [...PAGE_SIZES], + pagination, + setPagination, + }), + [pagination] + ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/left/services/find_alerts.ts b/x-pack/plugins/security_solution/public/flyout/left/services/find_alerts.ts new file mode 100644 index 0000000000000..bee4e8bbe6a20 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/left/services/find_alerts.ts @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; +import { isCompleteResponse, type ISearchStart, isErrorResponse } from '@kbn/data-plugin/public'; + +export interface AlertsQueryParams { + alertIds: string[]; + from: number; + size: number; + sort?: Array>; +} + +interface FindAlertsParams extends AlertsQueryParams { + signal?: AbortSignal; +} + +export const createFindAlerts = + (searchService: ISearchStart) => + async ({ + signal, + alertIds, + from, + size, + sort, + }: FindAlertsParams): Promise>> => { + return new Promise((resolve, reject) => { + const $subscription = searchService + .search( + { + params: { + body: { + query: { + ids: { values: alertIds }, + }, + from, + size, + sort, + fields: ['*'], + _source: false, + }, + }, + }, + { abortSignal: signal } + ) + .subscribe((response) => { + if (isCompleteResponse(response)) { + $subscription.unsubscribe(); + resolve(response.rawResponse); + } else if (isErrorResponse(response)) { + $subscription.unsubscribe(); + reject(new Error(`Error while loading alerts`)); + } + }); + }); + }; diff --git a/x-pack/plugins/security_solution/public/flyout/left/tabs/insights_tab.tsx b/x-pack/plugins/security_solution/public/flyout/left/tabs/insights_tab.tsx index 9d6784b646cf1..75c6a04f94cc3 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/tabs/insights_tab.tsx +++ b/x-pack/plugins/security_solution/public/flyout/left/tabs/insights_tab.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { memo, useState } from 'react'; +import React, { memo, useCallback, useState } from 'react'; import { EuiButtonGroup, EuiSpacer } from '@elastic/eui'; import type { EuiButtonGroupOptionProps } from '@elastic/eui/src/components/button/button_group/button_group'; @@ -68,9 +68,10 @@ const insightsButtons: EuiButtonGroupOptionProps[] = [ */ export const InsightsTab: React.FC = memo(() => { const [activeInsightsId, setActiveInsightsId] = useState(ENTITIES_TAB_ID); - const onChangeCompressed = (optionId: string) => { + + const onChangeCompressed = useCallback((optionId: string) => { setActiveInsightsId(optionId); - }; + }, []); return ( <> @@ -80,7 +81,7 @@ export const InsightsTab: React.FC = memo(() => { legend={INSIGHTS_BUTTONGROUP_OPTIONS} options={insightsButtons} idSelected={activeInsightsId} - onChange={(id) => onChangeCompressed(id)} + onChange={onChangeCompressed} buttonSize="compressed" isFullWidth data-test-subj={INSIGHTS_TAB_BUTTON_GROUP_TEST_ID} diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.test.tsx index dbd515d59c134..dfd81606c10bd 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.test.tsx @@ -18,9 +18,9 @@ import { import { TestProviders } from '../../../common/mock'; import { CorrelationsOverview } from './correlations_overview'; import { LeftPanelInsightsTabPath, LeftPanelKey } from '../../left'; -import { useCorrelations } from '../hooks/use_correlations'; +import { useCorrelations } from '../../shared/hooks/use_correlations'; -jest.mock('../hooks/use_correlations'); +jest.mock('../../shared/hooks/use_correlations'); const panelContextValue = { eventId: 'event id', diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.tsx index fd493d06fe1c0..3936e80155a0d 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.tsx @@ -9,7 +9,7 @@ import React, { useCallback, useMemo } from 'react'; import { EuiButtonEmpty, EuiFlexGroup, EuiPanel } from '@elastic/eui'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { InsightsSummaryRow } from './insights_summary_row'; -import { useCorrelations } from '../hooks/use_correlations'; +import { useCorrelations } from '../../shared/hooks/use_correlations'; import { INSIGHTS_CORRELATIONS_TEST_ID } from './test_ids'; import { InsightsSubSection } from './insights_subsection'; import { useRightPanelContext } from '../context'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_correlations.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_correlations.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_correlations.test.tsx rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_correlations.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_correlations.ts b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_correlations.ts similarity index 52% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_correlations.ts rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_correlations.ts index 662c3e94ca20e..d65a220b9a580 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_correlations.ts +++ b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_correlations.ts @@ -7,6 +7,8 @@ import type { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; +import { useEffect, useMemo, useReducer } from 'react'; +import type { CasesByAlertId } from '@kbn/cases-plugin/common/api'; import { useFetchRelatedAlertsBySameSourceEvent } from './use_fetch_related_alerts_by_same_source_event'; import { useShowRelatedCases } from './use_show_related_cases'; import { useFetchRelatedCases } from './use_fetch_related_cases'; @@ -19,14 +21,14 @@ import { CORRELATIONS_SAME_SESSION_ALERTS, CORRELATIONS_SAME_SOURCE_EVENT_ALERT, CORRELATIONS_SAME_SOURCE_EVENT_ALERTS, -} from '../components/translations'; +} from '../translations'; import { useShowRelatedAlertsByAncestry } from './use_show_related_alerts_by_ancestry'; import { useFetchRelatedAlertsByAncestry } from './use_fetch_related_alerts_by_ancestry'; import { useShowRelatedAlertsBySameSourceEvent } from './use_show_related_alerts_by_same_source_event'; import { useShowRelatedAlertsBySession } from './use_show_related_alerts_by_session'; import { useFetchRelatedAlertsBySession } from './use_fetch_related_alerts_by_session'; -interface InsightsSummaryData { +export interface InsightsSummaryPanelData { icon: string; value: number; text: string; @@ -62,11 +64,27 @@ export interface UseCorrelationsResult { /** * Data ready to be consumed by the InsightsSummaryPanel component */ - data: InsightsSummaryData[]; + data: InsightsSummaryPanelData[]; /** * Data length */ dataCount: number; + /** + * Ids of specific alerts correlated by session, can be used to fetch specific alert documents + */ + alertsBySessionIds: string[]; + /** + * Ids of specific alerts correlated by source, can be used to fetch specific alert documents + */ + sameSourceAlertsIds: string[]; + /** + * Ids of specific alerts correlated by ancestry, can be used to fetch specific alert documents + */ + ancestryAlertsIds: string[]; + /** + * Cases data, can be used to render correlated cases table + */ + cases: CasesByAlertId; } /** @@ -78,7 +96,15 @@ export const useCorrelations = ({ dataFormattedForFieldBrowser, scopeId, }: UseCorrelationsParams): UseCorrelationsResult => { - const data: InsightsSummaryData[] = []; + const [data, updateInsightsSummaryPanel] = useReducer( + ( + currentEntries: InsightsSummaryPanelData[], + newEntry: { icon: string; value: number; text: string } + ) => { + return [...currentEntries, newEntry]; + }, + [] + ); // cases const showCases = useShowRelatedCases(); @@ -86,14 +112,18 @@ export const useCorrelations = ({ loading: casesLoading, error: casesError, dataCount: casesCount, + data: cases, } = useFetchRelatedCases({ eventId }); - if (showCases && !casesLoading && !casesError) { - data.push({ - icon: 'warning', - value: casesCount, - text: casesCount <= 1 ? CORRELATIONS_RELATED_CASE : CORRELATIONS_RELATED_CASES, - }); - } + + useEffect(() => { + if (showCases && !casesLoading && !casesError) { + updateInsightsSummaryPanel({ + icon: 'warning', + value: casesCount, + text: casesCount <= 1 ? CORRELATIONS_RELATED_CASE : CORRELATIONS_RELATED_CASES, + }); + } + }, [casesCount, casesError, casesLoading, showCases]); // alerts by ancestry const showAlertsByAncestry = useShowRelatedAlertsByAncestry({ @@ -104,17 +134,21 @@ export const useCorrelations = ({ loading: ancestryAlertsLoading, error: ancestryAlertsError, dataCount: ancestryAlertsCount, + data: ancestryAlertsIds, } = useFetchRelatedAlertsByAncestry({ dataFormattedForFieldBrowser, scopeId, }); - if (showAlertsByAncestry && !ancestryAlertsLoading && !ancestryAlertsError) { - data.push({ - icon: 'warning', - value: ancestryAlertsCount, - text: ancestryAlertsCount <= 1 ? CORRELATIONS_ANCESTRY_ALERT : CORRELATIONS_ANCESTRY_ALERTS, - }); - } + + useEffect(() => { + if (showAlertsByAncestry && !ancestryAlertsLoading && !ancestryAlertsError) { + updateInsightsSummaryPanel({ + icon: 'warning', + value: ancestryAlertsCount, + text: ancestryAlertsCount <= 1 ? CORRELATIONS_ANCESTRY_ALERT : CORRELATIONS_ANCESTRY_ALERTS, + }); + } + }, [ancestryAlertsCount, ancestryAlertsError, ancestryAlertsLoading, showAlertsByAncestry]); // alerts related to same source event const showSameSourceAlerts = useShowRelatedAlertsBySameSourceEvent({ @@ -124,20 +158,24 @@ export const useCorrelations = ({ loading: sameSourceAlertsLoading, error: sameSourceAlertsError, dataCount: sameSourceAlertsCount, + data: sameSourceAlertsIds, } = useFetchRelatedAlertsBySameSourceEvent({ dataFormattedForFieldBrowser, scopeId, }); - if (showSameSourceAlerts && !sameSourceAlertsLoading && !sameSourceAlertsError) { - data.push({ - icon: 'warning', - value: sameSourceAlertsCount, - text: - sameSourceAlertsCount <= 1 - ? CORRELATIONS_SAME_SOURCE_EVENT_ALERT - : CORRELATIONS_SAME_SOURCE_EVENT_ALERTS, - }); - } + + useEffect(() => { + if (showSameSourceAlerts && !sameSourceAlertsLoading && !sameSourceAlertsError) { + updateInsightsSummaryPanel({ + icon: 'warning', + value: sameSourceAlertsCount, + text: + sameSourceAlertsCount <= 1 + ? CORRELATIONS_SAME_SOURCE_EVENT_ALERT + : CORRELATIONS_SAME_SOURCE_EVENT_ALERTS, + }); + } + }, [sameSourceAlertsCount, sameSourceAlertsError, sameSourceAlertsLoading, showSameSourceAlerts]); // alerts related by session const showAlertsBySession = useShowRelatedAlertsBySession({ dataFormattedForFieldBrowser }); @@ -145,26 +183,47 @@ export const useCorrelations = ({ loading: alertsBySessionLoading, error: alertsBySessionError, dataCount: alertsBySessionCount, + data: alertsBySessionIds, } = useFetchRelatedAlertsBySession({ dataFormattedForFieldBrowser, scopeId, }); - if (showAlertsBySession && !alertsBySessionLoading && !alertsBySessionError) { - data.push({ - icon: 'warning', - value: alertsBySessionCount, - text: - alertsBySessionCount <= 1 - ? CORRELATIONS_SAME_SESSION_ALERT - : CORRELATIONS_SAME_SESSION_ALERTS, - }); - } - return { - loading: - casesLoading || ancestryAlertsLoading || alertsBySessionLoading || sameSourceAlertsLoading, - error: data.length === 0, - data, - dataCount: data.length, - }; + useEffect(() => { + if (showAlertsBySession && !alertsBySessionLoading && !alertsBySessionError) { + updateInsightsSummaryPanel({ + icon: 'warning', + value: alertsBySessionCount, + text: + alertsBySessionCount <= 1 + ? CORRELATIONS_SAME_SESSION_ALERT + : CORRELATIONS_SAME_SESSION_ALERTS, + }); + } + }, [alertsBySessionCount, alertsBySessionError, alertsBySessionLoading, showAlertsBySession]); + + return useMemo( + () => ({ + loading: + casesLoading || ancestryAlertsLoading || alertsBySessionLoading || sameSourceAlertsLoading, + error: data.length === 0, + data, + dataCount: data.length || 0, + alertsBySessionIds, + sameSourceAlertsIds, + ancestryAlertsIds: ancestryAlertsIds || [], + cases, + }), + [ + alertsBySessionIds, + alertsBySessionLoading, + ancestryAlertsIds, + ancestryAlertsLoading, + cases, + casesLoading, + data, + sameSourceAlertsIds, + sameSourceAlertsLoading, + ] + ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_ancestry.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_ancestry.test.tsx rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_ancestry.ts b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.ts similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_ancestry.ts rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.ts index 091a01f653dfc..d5d762e3dc534 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_ancestry.ts +++ b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.ts @@ -74,10 +74,13 @@ export const useFetchRelatedAlertsByAncestry = ({ indices: indices || [], }); - return { - loading, - error, - data: alertIds, - dataCount: (alertIds || []).length, - }; + return useMemo( + () => ({ + loading, + error, + data: alertIds, + dataCount: alertIds?.length || 0, + }), + [alertIds, error, loading] + ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_same_source_event.ts b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.ts similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_same_source_event.ts rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.ts index 1d9052f8f3233..764e85f21b1b0 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_same_source_event.ts +++ b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.ts @@ -64,10 +64,13 @@ export const useFetchRelatedAlertsBySameSourceEvent = ({ includeAlertIds: true, }); - return { - loading, - error, - data: alertIds || [], - dataCount: count || 0, - }; + return useMemo( + () => ({ + loading, + error, + data: alertIds || [], + dataCount: count || 0, + }), + [alertIds, count, error, loading] + ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_session.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_session.test.tsx rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_session.ts b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.ts similarity index 90% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_session.ts rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.ts index 2d7bb521ade8b..2c1104eadddc9 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_alerts_by_session.ts +++ b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.ts @@ -7,6 +7,7 @@ import type { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; import { find } from 'lodash/fp'; +import { useMemo } from 'react'; import { useAlertPrevalence } from '../../../common/containers/alerts/use_alert_prevalence'; import { isActiveTimeline } from '../../../helpers'; @@ -60,10 +61,13 @@ export const useFetchRelatedAlertsBySession = ({ ignoreTimerange: true, }); - return { - loading, - error, - data: alertIds || [], - dataCount: count || 0, - }; + return useMemo( + () => ({ + loading, + error, + data: alertIds || [], + dataCount: count || 0, + }), + [alertIds, count, error, loading] + ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_cases.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.test.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_cases.test.tsx rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.test.tsx index 1af523a8c0370..c9d63d4432d6f 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_cases.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.test.tsx @@ -30,7 +30,7 @@ describe('useFetchRelatedCases', () => { expect(hookResult.result.current.loading).toEqual(true); expect(hookResult.result.current.error).toEqual(false); - expect(hookResult.result.current.data).toEqual(undefined); + expect(hookResult.result.current.data).toEqual([]); expect(hookResult.result.current.dataCount).toEqual(0); }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_cases.ts b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.ts similarity index 85% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_cases.ts rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.ts index 56481cfcd4162..426a845f44a8d 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_related_cases.ts +++ b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.ts @@ -7,6 +7,7 @@ import { useQuery } from '@tanstack/react-query'; import type { CasesByAlertId } from '@kbn/cases-plugin/common/api'; +import { useMemo } from 'react'; import { useKibana } from '../../../common/lib/kibana'; import { APP_ID } from '../../../../common/constants'; @@ -31,7 +32,7 @@ export interface UseFetchRelatedCasesResult { /** * Cases data retrieved */ - data: CasesByAlertId | undefined; + data: CasesByAlertId; /** * Number of data entries received */ @@ -56,10 +57,13 @@ export const useFetchRelatedCases = ({ { keepPreviousData: true } ); - return { - loading: isLoading, - error: isError, - data, - dataCount: (data || []).length, - }; + return useMemo( + () => ({ + loading: isLoading, + error: isError, + data: data || [], + dataCount: data?.length || 0, + }), + [data, isError, isLoading] + ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_ancestry.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_ancestry.test.tsx rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_ancestry.ts b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_ancestry.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_ancestry.ts rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_ancestry.ts diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_same_source_event.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_same_source_event.test.tsx rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_same_source_event.ts b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_same_source_event.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_same_source_event.ts rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_same_source_event.ts diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_session.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_session.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_session.test.tsx rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_session.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_session.ts b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_session.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_alerts_by_session.ts rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_session.ts diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_cases.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_cases.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_cases.test.tsx rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_cases.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_cases.ts b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_cases.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_show_related_cases.ts rename to x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_cases.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_context.ts b/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_context.ts new file mode 100644 index 0000000000000..4dec259d00136 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_context.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Mock an object of nested properties for an alert + */ +export const mockDataAsNestedObject = { + _id: '123', + '@timestamp': ['2023-01-01T01:01:01.000Z'], + event: { + category: ['malware'], + kind: ['signal'], + }, + host: { + name: ['host-name'], + }, + kibana: { + alert: { + rule: { + name: ['rule-name'], + }, + severity: ['low'], + }, + }, + process: { + name: ['process-name'], + }, +}; + +/** + * Mock an array of fields for an alert + */ +export const mockDataFormattedForFieldBrowser = [ + { + category: 'kibana', + field: 'kibana.alert.rule.uuid', + values: ['rule-uuid'], + originalValue: ['rule-uuid'], + isObjectArray: false, + }, + { + category: 'kibana', + field: 'kibana.alert.rule.name', + values: ['rule-name'], + originalValue: ['rule-name'], + isObjectArray: false, + }, + { + category: 'base', + field: '@timestamp', + values: ['2023-01-01T01:01:01.000Z'], + originalValue: ['2023-01-01T01:01:01.000Z'], + isObjectArray: false, + }, + { + category: 'kibana', + field: 'kibana.alert.rule.description', + values: ['rule-description'], + originalValue: ['rule-description'], + isObjectArray: false, + }, + { + category: 'kibana', + field: 'kibana.alert.ancestors.id', + values: ['ancestors-id'], + originalValue: ['ancestors-id'], + isObjectArray: false, + }, + { + category: 'kibana', + field: 'kibana.alert.rule.parameters.index', + values: ['rule-parameters-index'], + originalValue: ['rule-parameters-index'], + isObjectArray: false, + }, + { + category: 'process', + field: 'process.entity_id', + values: ['process-entity_id'], + originalValue: ['process-entity_id'], + isObjectArray: false, + }, +]; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/translations.ts b/x-pack/plugins/security_solution/public/flyout/shared/translations.ts index aa131a1e76a28..a9a7aa6cd217c 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/translations.ts +++ b/x-pack/plugins/security_solution/public/flyout/shared/translations.ts @@ -18,3 +18,63 @@ export const ERROR_MESSAGE = (message: string) => values: { message }, defaultMessage: 'There was an error displaying {message}', }); + +export const CORRELATIONS_TEXT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.overviewTab.correlationsText', + { + defaultMessage: 'fields of correlation', + } +); + +export const CORRELATIONS_ANCESTRY_ALERT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.overviewTab.correlations.ancestryAlert', + { + defaultMessage: 'alert related by ancestry', + } +); + +export const CORRELATIONS_ANCESTRY_ALERTS = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.overviewTab.correlations.ancestryAlerts', + { + defaultMessage: 'alerts related by ancestry', + } +); +export const CORRELATIONS_SAME_SOURCE_EVENT_ALERT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.overviewTab.correlations.sameSourceEventAlert', + { + defaultMessage: 'alert related by the same source event', + } +); + +export const CORRELATIONS_SAME_SOURCE_EVENT_ALERTS = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.overviewTab.correlations.sameSourceEventAlerts', + { + defaultMessage: 'alerts related by the same source event', + } +); +export const CORRELATIONS_SAME_SESSION_ALERT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.overviewTab.correlations.sameSessionAlert', + { + defaultMessage: 'alert related by session', + } +); + +export const CORRELATIONS_SAME_SESSION_ALERTS = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.overviewTab.correlations.sameSessionAlerts', + { + defaultMessage: 'alerts related by session', + } +); +export const CORRELATIONS_RELATED_CASE = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.overviewTab.correlations.relatedCase', + { + defaultMessage: 'related case', + } +); + +export const CORRELATIONS_RELATED_CASES = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.overviewTab.correlations.relatedCases', + { + defaultMessage: 'related cases', + } +); From b1555da651674074284d54268aa028e5887ea99c Mon Sep 17 00:00:00 2001 From: christineweng <18648970+christineweng@users.noreply.github.com> Date: Thu, 15 Jun 2023 11:21:37 -0500 Subject: [PATCH 23/59] [Security Solution] Add rules link to flyout title (#159529) --- ...ert_details_right_panel_overview_tab.cy.ts | 10 ++- .../alert_details_right_panel_overview_tab.ts | 3 + .../right/components/description.test.tsx | 61 ++++++++++++++++--- .../flyout/right/components/description.tsx | 52 ++++++++++++++-- .../components/description_section.test.tsx | 2 + .../flyout/right/components/test_ids.ts | 1 + .../flyout/right/components/translations.ts | 7 +++ .../renderers/formatted_field_helpers.tsx | 6 ++ 8 files changed, 128 insertions(+), 14 deletions(-) diff --git a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts index 0ac62665b74a3..ba66d5a87068f 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts @@ -17,6 +17,7 @@ import { DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_SECTION_CONTENT, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_SECTION_HEADER, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE, + DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_NAVIGATE_TO_RULE_DETAILS_BUTTON, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_DETAILS, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_GO_TO_TABLE_LINK, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_HEADER_TITLE, @@ -94,7 +95,14 @@ describe( cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE) .should('be.visible') - .and('have.text', 'Rule description'); + .and('contain.text', 'Rule description'); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE) + .should('be.visible') + .within(() => { + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_NAVIGATE_TO_RULE_DETAILS_BUTTON) + .should('be.visible') + .and('have.text', 'View rule'); + }); cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_DETAILS) .should('be.visible') .and('have.text', rule.description); diff --git a/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts b/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts index 57ac333777b83..d3e1fe10d26f2 100644 --- a/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts +++ b/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts @@ -13,6 +13,7 @@ import { DESCRIPTION_SECTION_CONTENT_TEST_ID, DESCRIPTION_SECTION_HEADER_TEST_ID, DESCRIPTION_TITLE_TEST_ID, + DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID, ENTITIES_CONTENT_TEST_ID, ENTITIES_HEADER_TEST_ID, ENTITIES_VIEW_ALL_BUTTON_TEST_ID, @@ -55,6 +56,8 @@ export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE = export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_DETAILS = getDataTestSubjectSelector( DESCRIPTION_DETAILS_TEST_ID ); +export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_NAVIGATE_TO_RULE_DETAILS_BUTTON = + getDataTestSubjectSelector(DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID); export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_EXPAND_BUTTON = getDataTestSubjectSelector(DESCRIPTION_EXPAND_BUTTON_TEST_ID); export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_TITLE = diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/description.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/description.test.tsx index f378a58b14076..59bb8b9bb4976 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/description.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/description.test.tsx @@ -7,7 +7,11 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { DESCRIPTION_EXPAND_BUTTON_TEST_ID, DESCRIPTION_TITLE_TEST_ID } from './test_ids'; +import { + DESCRIPTION_EXPAND_BUTTON_TEST_ID, + DESCRIPTION_TITLE_TEST_ID, + DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID, +} from './test_ids'; import { DOCUMENT_DESCRIPTION_COLLAPSE_BUTTON, DOCUMENT_DESCRIPTION_EXPAND_BUTTON, @@ -16,6 +20,10 @@ import { } from './translations'; import { Description } from './description'; import { RightPanelContext } from '../context'; +import { ThemeProvider } from 'styled-components'; +import { getMockTheme } from '../../../common/lib/kibana/kibana_react.mock'; + +const mockTheme = getMockTheme({ eui: { euiColorMediumShade: '#ece' } }); const ruleUuid = { category: 'kibana', @@ -33,21 +41,34 @@ const ruleDescription = { originalValue: ['description'], isObjectArray: false, }; +const ruleName = { + category: 'kibana', + field: 'kibana.alert.rule.name', + values: ['rule-name'], + originalValue: ['rule-name'], + isObjectArray: false, +}; + +jest.mock('../../../common/lib/kibana'); +jest.mock('../../../common/components/link_to'); describe('', () => { it('should render the component collapsed', () => { const panelContextValue = { - dataFormattedForFieldBrowser: [ruleUuid, ruleDescription], + dataFormattedForFieldBrowser: [ruleUuid, ruleDescription, ruleName], } as unknown as RightPanelContext; const { getByTestId } = render( - + + + ); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toHaveTextContent(RULE_DESCRIPTION_TITLE); + expect(getByTestId(DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_EXPAND_BUTTON_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_EXPAND_BUTTON_TEST_ID)).toHaveTextContent( DOCUMENT_DESCRIPTION_EXPAND_BUTTON @@ -56,17 +77,20 @@ describe('', () => { it('should render the component expanded', () => { const panelContextValue = { - dataFormattedForFieldBrowser: [ruleUuid, ruleDescription], + dataFormattedForFieldBrowser: [ruleUuid, ruleDescription, ruleName], } as unknown as RightPanelContext; const { getByTestId } = render( - + + + ); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toHaveTextContent(RULE_DESCRIPTION_TITLE); + expect(getByTestId(DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_EXPAND_BUTTON_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_EXPAND_BUTTON_TEST_ID)).toHaveTextContent( DOCUMENT_DESCRIPTION_COLLAPSE_BUTTON @@ -75,12 +99,14 @@ describe('', () => { it('should render expand and collapse when clicking on the button', () => { const panelContextValue = { - dataFormattedForFieldBrowser: [ruleUuid, ruleDescription], + dataFormattedForFieldBrowser: [ruleUuid, ruleDescription, ruleName], } as unknown as RightPanelContext; const { getByTestId } = render( - + + + ); @@ -93,6 +119,23 @@ describe('', () => { ); }); + it('should not render view rule button if rule name is not available', () => { + const panelContextValue = { + dataFormattedForFieldBrowser: [ruleUuid, ruleDescription], + } as unknown as RightPanelContext; + + const { getByTestId, queryByTestId } = render( + + + + + + ); + + expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toHaveTextContent(RULE_DESCRIPTION_TITLE); + expect(queryByTestId(DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID)).not.toBeInTheDocument(); + }); it('should render document title if document is not an alert', () => { const panelContextValue = { dataFormattedForFieldBrowser: [ruleDescription], @@ -100,7 +143,9 @@ describe('', () => { const { getByTestId } = render( - + + + ); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/description.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/description.tsx index b233f3b4597ce..450f62d32079d 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/description.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/description.tsx @@ -5,10 +5,12 @@ * 2.0. */ -import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiTitle } from '@elastic/eui'; +import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiTitle, EuiIcon } from '@elastic/eui'; import type { VFC } from 'react'; -import React, { useState } from 'react'; +import React, { useState, useMemo } from 'react'; import { css } from '@emotion/react'; +import { isEmpty } from 'lodash'; +import styled from 'styled-components'; import { useRightPanelContext } from '../context'; import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; import { @@ -21,7 +23,14 @@ import { DOCUMENT_DESCRIPTION_EXPAND_BUTTON, DOCUMENT_DESCRIPTION_TITLE, RULE_DESCRIPTION_TITLE, + VIEW_RULE_TEXT, } from './translations'; +import { RenderRuleName } from '../../../timelines/components/timeline/body/renderers/formatted_field_helpers'; +import { SIGNAL_RULE_NAME_FIELD_NAME } from '../../../timelines/components/timeline/body/renderers/constants'; + +const StyledEuiIcon = styled(EuiIcon)` + margin-left: ${({ theme }) => theme.eui.euiSizeXS}; +`; export interface DescriptionProps { /** @@ -39,8 +48,32 @@ export interface DescriptionProps { export const Description: VFC = ({ expanded = false }) => { const [isExpanded, setIsExpanded] = useState(expanded); - const { dataFormattedForFieldBrowser } = useRightPanelContext(); - const { isAlert, ruleDescription } = useBasicDataFromDetailsData(dataFormattedForFieldBrowser); + const { dataFormattedForFieldBrowser, scopeId, eventId } = useRightPanelContext(); + const { isAlert, ruleDescription, ruleId, ruleName } = useBasicDataFromDetailsData( + dataFormattedForFieldBrowser + ); + + const viewRule = useMemo( + () => + !isEmpty(ruleName) && ( + + + {VIEW_RULE_TEXT} + + + + ), + [ruleName, ruleId, scopeId, eventId] + ); if (!dataFormattedForFieldBrowser) { return null; @@ -55,7 +88,16 @@ export const Description: VFC = ({ expanded = false }) => { -
{isAlert ? RULE_DESCRIPTION_TITLE : DOCUMENT_DESCRIPTION_TITLE}
+ {isAlert ? ( + + +
{RULE_DESCRIPTION_TITLE}
+
+ {viewRule} +
+ ) : ( +
{DOCUMENT_DESCRIPTION_TITLE}
+ )}
diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/description_section.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/description_section.test.tsx index 9b3506d563816..8d17011a38126 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/description_section.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/description_section.test.tsx @@ -16,6 +16,8 @@ import { RightPanelContext } from '../context'; const panelContextValue = {} as unknown as RightPanelContext; +jest.mock('../../../common/components/link_to'); + describe('', () => { it('should render the component collapsed', () => { const { getByTestId } = render( diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts index 0ca4072734124..002effd64ee30 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts @@ -36,6 +36,7 @@ export const DESCRIPTION_DETAILS_TEST_ID = 'securitySolutionDocumentDetailsFlyoutDescriptionDetails'; export const DESCRIPTION_EXPAND_BUTTON_TEST_ID = 'securitySolutionDocumentDetailsFlyoutDescriptionExpandButton'; +export const DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID = 'goToRuleDetails'; export const REASON_TITLE_TEST_ID = 'securitySolutionDocumentDetailsFlyoutReasonTitle'; export const REASON_DETAILS_TEST_ID = 'securitySolutionDocumentDetailsFlyoutReasonDetails'; export const MITRE_ATTACK_TITLE_TEST_ID = 'securitySolutionAlertDetailsFlyoutMitreAttackTitle'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts b/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts index 9b8d5fc5079f1..80b7bf54a1f18 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts +++ b/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts @@ -38,6 +38,13 @@ export const RISK_SCORE_TITLE = i18n.translate( } ); +export const VIEW_RULE_TEXT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.viewRuleText', + { + defaultMessage: 'View rule', + } +); + /* Description section */ export const DESCRIPTION_TITLE = i18n.translate( diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx index a5eaa0801e528..e6ef10ea72fe1 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx @@ -121,6 +121,12 @@ export const RenderRuleName: React.FC = ({ {title ?? value} ); + } else if (children) { + return ( + + {children} + + ); } else { return ( From c915c0508b10e1aed45d1d3d71f1576ffa411d9d Mon Sep 17 00:00:00 2001 From: Faisal Kanout Date: Thu, 15 Jun 2023 19:49:55 +0300 Subject: [PATCH 24/59] AO] Remove the "warning threshold" from the Threshold rule creation flyout and from the actions group (#159726) ## Summary It fixes https://github.com/elastic/kibana/issues/159496 --- .../threshold/components/expression_row.tsx | 120 +----------------- .../server/lib/rules/threshold/messages.ts | 6 - .../threshold/register_threshold_rule_type.ts | 13 +- .../threshold/threshold_executor.test.ts | 9 -- .../lib/rules/threshold/threshold_executor.ts | 53 ++------ .../server/lib/rules/threshold/types.ts | 1 - 6 files changed, 19 insertions(+), 183 deletions(-) diff --git a/x-pack/plugins/observability/public/pages/threshold/components/expression_row.tsx b/x-pack/plugins/observability/public/pages/threshold/components/expression_row.tsx index 2050d90d3eb0d..08844ec7a9fd7 100644 --- a/x-pack/plugins/observability/public/pages/threshold/components/expression_row.tsx +++ b/x-pack/plugins/observability/public/pages/threshold/components/expression_row.tsx @@ -5,20 +5,17 @@ * 2.0. */ import { - EuiButtonEmpty, EuiButtonIcon, EuiExpression, EuiFlexGroup, EuiFlexItem, - EuiHealth, EuiLink, EuiSpacer, EuiText, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { omit } from 'lodash'; -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useMemo } from 'react'; import { euiStyled } from '@kbn/kibana-react-plugin/common'; import { AggregationType, @@ -69,10 +66,6 @@ const StyledExpression = euiStyled.div` padding: 0 4px; `; -const StyledHealth = euiStyled(EuiHealth)` - margin-left: 4px; -`; - // eslint-disable-next-line react/function-component-definition export const ExpressionRow: React.FC = (props) => { const [isExpanded, toggle] = useToggle(true); @@ -94,12 +87,7 @@ export const ExpressionRow: React.FC = (props) => { metric, comparator = Comparator.GT, threshold = [], - warningThreshold = [], - warningComparator, } = expression; - const [displayWarningThreshold, setDisplayWarningThreshold] = useState( - Boolean(warningThreshold?.length) - ); const isMetricPct = useMemo(() => Boolean(metric && metric.endsWith('.pct')), [metric]); @@ -117,13 +105,6 @@ export const ExpressionRow: React.FC = (props) => { [expressionId, expression, setRuleParams] ); - const updateWarningComparator = useCallback( - (c?: string) => { - setRuleParams(expressionId, { ...expression, warningComparator: c as Comparator }); - }, - [expressionId, expression, setRuleParams] - ); - const convertThreshold = useCallback( (enteredThreshold) => isMetricPct ? enteredThreshold.map((v: number) => pctToDecimal(v)) : enteredThreshold, @@ -140,37 +121,6 @@ export const ExpressionRow: React.FC = (props) => { [expressionId, expression, convertThreshold, setRuleParams] ); - const updateWarningThreshold = useCallback( - (enteredThreshold) => { - const t = convertThreshold(enteredThreshold); - if (t.join() !== expression.warningThreshold?.join()) { - setRuleParams(expressionId, { ...expression, warningThreshold: t }); - } - }, - [expressionId, expression, convertThreshold, setRuleParams] - ); - - const toggleWarningThreshold = useCallback(() => { - if (!displayWarningThreshold) { - setDisplayWarningThreshold(true); - setRuleParams(expressionId, { - ...expression, - warningComparator: comparator, - warningThreshold: [], - }); - } else { - setDisplayWarningThreshold(false); - setRuleParams(expressionId, omit(expression, 'warningComparator', 'warningThreshold')); - } - }, [ - displayWarningThreshold, - setDisplayWarningThreshold, - setRuleParams, - comparator, - expression, - expressionId, - ]); - const handleCustomMetricChange = useCallback( (exp) => { setRuleParams(expressionId, exp); @@ -189,17 +139,6 @@ export const ExpressionRow: React.FC = (props) => { /> ); - const warningThresholdExpression = displayWarningThreshold && ( - - ); - const normalizedFields = fields.map((f) => ({ normalizedType: f.type, name: f.name, @@ -289,62 +228,9 @@ export const ExpressionRow: React.FC = (props) => { /> )} - {!displayWarningThreshold && criticalThresholdExpression} - {!displayWarningThreshold && ( - <> - - - - - - - - )} + {criticalThresholdExpression} - {displayWarningThreshold && ( - <> - - {criticalThresholdExpression} - - - - - - {warningThresholdExpression} - - - - - - - )} + {aggType === Aggregators.CUSTOM && ( <> diff --git a/x-pack/plugins/observability/server/lib/rules/threshold/messages.ts b/x-pack/plugins/observability/server/lib/rules/threshold/messages.ts index b302148664800..548e05619288a 100644 --- a/x-pack/plugins/observability/server/lib/rules/threshold/messages.ts +++ b/x-pack/plugins/observability/server/lib/rules/threshold/messages.ts @@ -29,12 +29,6 @@ export const stateToAlertMessage = { [AlertStates.ALERT]: i18n.translate('xpack.observability.threshold.rule.threshold.alertState', { defaultMessage: 'ALERT', }), - [AlertStates.WARNING]: i18n.translate( - 'xpack.observability.threshold.rule.threshold.warningState', - { - defaultMessage: 'WARNING', - } - ), [AlertStates.NO_DATA]: i18n.translate( 'xpack.observability.threshold.rule.threshold.noDataState', { diff --git a/x-pack/plugins/observability/server/lib/rules/threshold/register_threshold_rule_type.ts b/x-pack/plugins/observability/server/lib/rules/threshold/register_threshold_rule_type.ts index 734027ca6e067..22b9163e13d8b 100644 --- a/x-pack/plugins/observability/server/lib/rules/threshold/register_threshold_rule_type.ts +++ b/x-pack/plugins/observability/server/lib/rules/threshold/register_threshold_rule_type.ts @@ -7,8 +7,7 @@ import { schema } from '@kbn/config-schema'; import { i18n } from '@kbn/i18n'; -import { ActionGroupIdsOf } from '@kbn/alerting-plugin/common'; -import { IRuleTypeAlerts, RuleType } from '@kbn/alerting-plugin/server'; +import { IRuleTypeAlerts } from '@kbn/alerting-plugin/server'; import { IBasePath, Logger } from '@kbn/core/server'; import { legacyExperimentalFieldMap } from '@kbn/alerts-as-data-utils'; import { @@ -49,7 +48,6 @@ import { import { createMetricThresholdExecutor, FIRED_ACTIONS, - WARNING_ACTIONS, NO_DATA_ACTIONS, } from './threshold_executor'; import { ObservabilityConfig } from '../../..'; @@ -62,12 +60,6 @@ export const MetricsRulesTypeAlertDefinition: IRuleTypeAlerts = { useLegacyAlerts: false, }; -type MetricThresholdAllowedActionGroups = ActionGroupIdsOf< - typeof FIRED_ACTIONS | typeof WARNING_ACTIONS | typeof NO_DATA_ACTIONS ->; -export type MetricThresholdAlertType = Omit & { - ActionGroupIdsOf: MetricThresholdAllowedActionGroups; -}; type CreateLifecycleExecutor = ReturnType; export function thresholdRuleType( @@ -82,7 +74,6 @@ export function thresholdRuleType( comparator: oneOfLiterals(Object.values(Comparator)), timeUnit: schema.string(), timeSize: schema.number(), - warningThreshold: schema.maybe(schema.arrayOf(schema.number())), warningComparator: schema.maybe(oneOfLiterals(Object.values(Comparator))), }; @@ -166,7 +157,7 @@ export function thresholdRuleType( ), }, defaultActionGroupId: FIRED_ACTIONS.id, - actionGroups: [FIRED_ACTIONS, WARNING_ACTIONS, NO_DATA_ACTIONS], + actionGroups: [FIRED_ACTIONS, NO_DATA_ACTIONS], minimumLicenseRequired: 'basic' as LicenseType, isExportable: true, executor: createLifecycleRuleExecutor( diff --git a/x-pack/plugins/observability/server/lib/rules/threshold/threshold_executor.test.ts b/x-pack/plugins/observability/server/lib/rules/threshold/threshold_executor.test.ts index 55494d0b1264e..678ac5450b816 100644 --- a/x-pack/plugins/observability/server/lib/rules/threshold/threshold_executor.test.ts +++ b/x-pack/plugins/observability/server/lib/rules/threshold/threshold_executor.test.ts @@ -20,7 +20,6 @@ import { createMetricThresholdExecutor, FIRED_ACTIONS, NO_DATA_ACTIONS, - WARNING_ACTIONS, } from './threshold_executor'; import { Evaluation } from './lib/evaluate_rule'; import type { LogMeta, Logger } from '@kbn/logging'; @@ -1966,14 +1965,6 @@ expect.extend({ pass, }; }, - toBeWarnAction(action?: Action) { - const pass = action?.id === WARNING_ACTIONS.id && action?.action.alertState === 'WARNING'; - const message = () => `expected ${JSON.stringify(action)} to be an WARNING action`; - return { - message, - pass, - }; - }, toBeNoDataAction(action?: Action) { const pass = action?.id === NO_DATA_ACTIONS.id && action?.action.alertState === 'NO DATA'; const message = () => `expected ${action} to be a NO DATA action`; diff --git a/x-pack/plugins/observability/server/lib/rules/threshold/threshold_executor.ts b/x-pack/plugins/observability/server/lib/rules/threshold/threshold_executor.ts index 084014c7c97c3..25e7ef8fb7967 100644 --- a/x-pack/plugins/observability/server/lib/rules/threshold/threshold_executor.ts +++ b/x-pack/plugins/observability/server/lib/rules/threshold/threshold_executor.ts @@ -17,10 +17,10 @@ import { import { Alert, RuleTypeState } from '@kbn/alerting-plugin/server'; import { IBasePath, Logger } from '@kbn/core/server'; import { LifecycleRuleExecutor } from '@kbn/rule-registry-plugin/server'; +import { TimeUnitChar } from '../../../../common'; import { createFormatter } from '../../../../common/threshold_rule/formatters'; import { Comparator } from '../../../../common/threshold_rule/types'; import { ObservabilityConfig } from '../../..'; -import { TimeUnitChar } from '../../../../common/utils/formatters/duration'; import { getOriginalActionGroup } from './utils'; import { AlertStates } from './types'; @@ -59,17 +59,15 @@ export type MetricThresholdAlertState = AlertState; // no specific instance stat export type MetricThresholdAlertContext = AlertContext; // no specific instance state used export const FIRED_ACTIONS_ID = 'metrics.threshold.fired'; -export const WARNING_ACTIONS_ID = 'metrics.threshold.warning'; export const NO_DATA_ACTIONS_ID = 'metrics.threshold.nodata'; type MetricThresholdActionGroup = | typeof FIRED_ACTIONS_ID - | typeof WARNING_ACTIONS_ID | typeof NO_DATA_ACTIONS_ID | typeof RecoveredActionGroup.id; type MetricThresholdAllowedActionGroups = ActionGroupIdsOf< - typeof FIRED_ACTIONS | typeof WARNING_ACTIONS | typeof NO_DATA_ACTIONS + typeof FIRED_ACTIONS | typeof NO_DATA_ACTIONS >; type MetricThresholdAlert = Alert< @@ -226,7 +224,6 @@ export const createMetricThresholdExecutor = ({ for (const group of groups) { // AND logic; all criteria must be across the threshold const shouldAlertFire = alertResults.every((result) => result[group]?.shouldFire); - const shouldAlertWarn = alertResults.every((result) => result[group]?.shouldWarn); // AND logic; because we need to evaluate all criteria, if one of them reports no data then the // whole alert is in a No Data/Error state const isNoData = alertResults.some((result) => result[group]?.isNoData); @@ -239,16 +236,14 @@ export const createMetricThresholdExecutor = ({ ? AlertStates.NO_DATA : shouldAlertFire ? AlertStates.ALERT - : shouldAlertWarn - ? AlertStates.WARNING : AlertStates.OK; let reason; - if (nextState === AlertStates.ALERT || nextState === AlertStates.WARNING) { + if (nextState === AlertStates.ALERT) { reason = alertResults .map((result) => buildFiredAlertReason({ - ...formatAlertResult(result[group], nextState === AlertStates.WARNING), + ...formatAlertResult(result[group]), group, }) ) @@ -289,8 +284,6 @@ export const createMetricThresholdExecutor = ({ ? RecoveredActionGroup.id : nextState === AlertStates.NO_DATA ? NO_DATA_ACTIONS_ID - : nextState === AlertStates.WARNING - ? WARNING_ACTIONS_ID : FIRED_ACTIONS_ID; const additionalContext = hasAdditionalContext(params.groupBy, validGroupByForContext) @@ -352,7 +345,6 @@ export const createMetricThresholdExecutor = ({ }); } } - const { getRecoveredAlerts } = services.alertFactory.done(); const recoveredAlerts = getRecoveredAlerts(); @@ -386,7 +378,6 @@ export const createMetricThresholdExecutor = ({ originalAlertState: translateActionGroupToAlertState(originalActionGroup), originalAlertStateWasALERT: originalActionGroup === FIRED_ACTIONS.id, - originalAlertStateWasWARNING: originalActionGroup === WARNING_ACTIONS.id, // eslint-disable-next-line @typescript-eslint/naming-convention originalAlertStateWasNO_DATA: originalActionGroup === NO_DATA_ACTIONS.id, ...additionalContext, @@ -414,13 +405,6 @@ export const FIRED_ACTIONS = { }), }; -export const WARNING_ACTIONS = { - id: 'metrics.threshold.warning', - name: i18n.translate('xpack.observability.threshold.rule.alerting.threshold.warning', { - defaultMessage: 'Warning', - }), -}; - export const NO_DATA_ACTIONS = { id: 'metrics.threshold.nodata', name: i18n.translate('xpack.observability.threshold.rule.alerting.threshold.nodata', { @@ -434,9 +418,6 @@ const translateActionGroupToAlertState = ( if (actionGroupId === FIRED_ACTIONS.id) { return stateToAlertMessage[AlertStates.ALERT]; } - if (actionGroupId === WARNING_ACTIONS.id) { - return stateToAlertMessage[AlertStates.WARNING]; - } if (actionGroupId === NO_DATA_ACTIONS.id) { return stateToAlertMessage[AlertStates.NO_DATA]; } @@ -457,21 +438,15 @@ const formatAlertResult = ( currentValue: number | null; threshold: number[]; comparator: Comparator; - warningThreshold?: number[]; - warningComparator?: Comparator; timeSize: number; timeUnit: TimeUnitChar; - } & AlertResult, - useWarningThreshold?: boolean + } & AlertResult ) => { - const { metric, currentValue, threshold, comparator, warningThreshold, warningComparator } = - alertResult; + const { metric, currentValue, threshold, comparator } = alertResult; const noDataValue = i18n.translate( 'xpack.observability.threshold.rule.alerting.threshold.noDataFormattedValue', { defaultMessage: '[NO DATA]' } ); - const thresholdToFormat = useWarningThreshold ? warningThreshold! : threshold; - const comparatorToUse = useWarningThreshold ? warningComparator! : comparator; if (metric.endsWith('.pct')) { const formatter = createFormatter('percent'); @@ -479,10 +454,10 @@ const formatAlertResult = ( ...alertResult, currentValue: currentValue !== null && currentValue !== undefined ? formatter(currentValue) : noDataValue, - threshold: Array.isArray(thresholdToFormat) - ? thresholdToFormat.map((v: number) => formatter(v)) - : formatter(thresholdToFormat), - comparator: comparatorToUse, + threshold: Array.isArray(threshold) + ? threshold.map((v: number) => formatter(v)) + : formatter(threshold), + comparator, }; } @@ -491,9 +466,9 @@ const formatAlertResult = ( ...alertResult, currentValue: currentValue !== null && currentValue !== undefined ? formatter(currentValue) : noDataValue, - threshold: Array.isArray(thresholdToFormat) - ? thresholdToFormat.map((v: number) => formatter(v)) - : formatter(thresholdToFormat), - comparator: comparatorToUse, + threshold: Array.isArray(threshold) + ? threshold.map((v: number) => formatter(v)) + : formatter(threshold), + comparator, }; }; diff --git a/x-pack/plugins/observability/server/lib/rules/threshold/types.ts b/x-pack/plugins/observability/server/lib/rules/threshold/types.ts index 10c276139ad68..0f3c10611076e 100644 --- a/x-pack/plugins/observability/server/lib/rules/threshold/types.ts +++ b/x-pack/plugins/observability/server/lib/rules/threshold/types.ts @@ -18,7 +18,6 @@ export enum InfraRuleType { export enum AlertStates { OK, ALERT, - WARNING, NO_DATA, ERROR, } From 9b0f10629bee51f96ffd86afc06e0568f740964e Mon Sep 17 00:00:00 2001 From: Hannah Mudge Date: Thu, 15 Jun 2023 10:58:11 -0600 Subject: [PATCH 25/59] [Controls] Range slider a11y and performance improvements (#159271) Closes https://github.com/elastic/kibana/issues/135466 ## Summary The main goal of this PR is to fix the serious "Buttons must have discernible text" a11y failure - this is accomplished by switching from building our own range slider button using `EuiFlexGroup` to instead using `EuiFormControlLayoutDelimited`, which both resolves these a11y issues and also fixes a rendering regression: | Before | After | |--------|-------| | ![image](https://github.com/elastic/kibana/assets/8698078/49ea1516-db74-46af-baa5-4ad0a31d5b5a) | ![image](https://github.com/elastic/kibana/assets/8698078/71bc61f2-f10d-4f8c-8ad2-2681f7faf921) | As part of this, I also took some time to clean up some of the range slider code, which hasn't really been touched in awhile - this includes... - moving the debounce on range selections from the embeddable's `input$` subscription to the component itself, as described [here](https://github.com/elastic/kibana/pull/159271#discussion_r1226886857). - fixing a bug where resetting the range slider would unnecessarily cause unsaved changes, as described [here](https://github.com/elastic/kibana/pull/159271#discussion_r1226885018). - improving the `onClick` behaviour (with some notable limitations), as described [here](https://github.com/elastic/kibana/pull/159271#discussion_r1226934124). As a follow up, we need to move the "clear selections" button [to a hover action](https://github.com/elastic/kibana/issues/159395), which will enable us to then fully move forward with our transition to the `EuiDualRange` component. ### 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 - [ ] ~Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/))~ > **Note** > Details provided [here](https://github.com/elastic/kibana/pull/159271#discussion_r1226934124) on why only partial keyboard support is currently supported - [x] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [x] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [x] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### 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) --- .../control_group_panel_diff_system.ts | 14 ++ .../controls/common/range_slider/types.ts | 2 +- .../options_list/components/options_list.scss | 2 +- .../range_slider/components/range_slider.scss | 30 ++-- .../components/range_slider_button.tsx | 86 +++++++++++ .../components/range_slider_control.tsx | 125 ++++------------ .../components/range_slider_popover.tsx | 137 +++++++---------- .../embeddable/range_slider_embeddable.tsx | 141 ++++++++---------- .../range_slider/range_slider_reducers.ts | 8 +- .../controls/public/range_slider/types.ts | 4 +- .../controls/range_slider.ts | 19 ++- .../controls/replace_controls.ts | 4 +- .../controls/time_slider.ts | 2 +- .../page_objects/dashboard_page_controls.ts | 41 +++-- .../dashboard_to_dashboard_drilldown.ts | 2 +- 15 files changed, 307 insertions(+), 310 deletions(-) create mode 100644 src/plugins/controls/public/range_slider/components/range_slider_button.tsx diff --git a/src/plugins/controls/common/control_group/control_group_panel_diff_system.ts b/src/plugins/controls/common/control_group/control_group_panel_diff_system.ts index a31fd0b514b4d..d373cf5796564 100644 --- a/src/plugins/controls/common/control_group/control_group_panel_diff_system.ts +++ b/src/plugins/controls/common/control_group/control_group_panel_diff_system.ts @@ -10,6 +10,7 @@ import deepEqual from 'fast-deep-equal'; import { omit, isEqual } from 'lodash'; import { OPTIONS_LIST_DEFAULT_SORT } from '../options_list/suggestions_sorting'; import { OptionsListEmbeddableInput, OPTIONS_LIST_CONTROL } from '../options_list/types'; +import { RangeSliderEmbeddableInput, RANGE_SLIDER_CONTROL } from '../range_slider/types'; import { ControlPanelState } from './types'; @@ -26,6 +27,19 @@ export const genericControlPanelDiffSystem: DiffSystem = { export const ControlPanelDiffSystems: { [key: string]: DiffSystem; } = { + [RANGE_SLIDER_CONTROL]: { + getPanelIsEqual: (initialInput, newInput) => { + if (!deepEqual(omit(initialInput, 'explicitInput'), omit(newInput, 'explicitInput'))) { + return false; + } + + const { value: valueA = ['', ''] }: Partial = + initialInput.explicitInput; + const { value: valueB = ['', ''] }: Partial = + newInput.explicitInput; + return isEqual(valueA, valueB); + }, + }, [OPTIONS_LIST_CONTROL]: { getPanelIsEqual: (initialInput, newInput) => { if (!deepEqual(omit(initialInput, 'explicitInput'), omit(newInput, 'explicitInput'))) { diff --git a/src/plugins/controls/common/range_slider/types.ts b/src/plugins/controls/common/range_slider/types.ts index 51c6d9e07e241..fdfc65d1d7c36 100644 --- a/src/plugins/controls/common/range_slider/types.ts +++ b/src/plugins/controls/common/range_slider/types.ts @@ -13,7 +13,7 @@ export const RANGE_SLIDER_CONTROL = 'rangeSliderControl'; export type RangeValue = [string, string]; export interface RangeSliderEmbeddableInput extends DataControlInput { - value: RangeValue; + value?: RangeValue; } export type RangeSliderInputWithType = Partial & { type: string }; diff --git a/src/plugins/controls/public/options_list/components/options_list.scss b/src/plugins/controls/public/options_list/components/options_list.scss index ad042916fff6e..0309437b8c9b3 100644 --- a/src/plugins/controls/public/options_list/components/options_list.scss +++ b/src/plugins/controls/public/options_list/components/options_list.scss @@ -33,7 +33,7 @@ color: $euiTextSubduedColor; text-decoration: line-through; margin-left: $euiSizeS; - font-weight: 300; + font-weight: $euiFontWeightRegular; } .optionsList__existsFilter { diff --git a/src/plugins/controls/public/range_slider/components/range_slider.scss b/src/plugins/controls/public/range_slider/components/range_slider.scss index d1a360b465962..abdd460da7286 100644 --- a/src/plugins/controls/public/range_slider/components/range_slider.scss +++ b/src/plugins/controls/public/range_slider/components/range_slider.scss @@ -17,42 +17,36 @@ } .rangeSliderAnchor__button { - display: flex; - align-items: center; width: 100%; height: 100%; - justify-content: space-between; background-color: $euiFormBackgroundColor; - @include euiFormControlSideBorderRadius($euiFormControlBorderRadius, $side: 'right', $internal: true); + padding: 0; + + .euiFormControlLayout__childrenWrapper { + border-radius: 0 $euiFormControlBorderRadius $euiFormControlBorderRadius 0 !important; + } .euiToolTipAnchor { width: 100%; } - .rangeSliderAnchor__delimiter { - background-color: unset; - padding: $euiSizeS*1.5 0; - } .rangeSliderAnchor__fieldNumber { font-weight: $euiFontWeightBold; box-shadow: none; text-align: center; background-color: unset; + &:invalid { + color: $euiTextSubduedColor; + text-decoration: line-through; + font-weight: $euiFontWeightRegular; + background-image: none; // hide the red bottom border + } + &::placeholder { font-weight: $euiFontWeightRegular; color: $euiColorMediumShade; text-decoration: none; } } - - .rangeSliderAnchor__fieldNumber--invalid { - text-decoration: line-through; - font-weight: $euiFontWeightRegular; - color: $euiColorMediumShade; - } - - .rangeSliderAnchor__spinner { - padding-right: $euiSizeS; - } } \ No newline at end of file diff --git a/src/plugins/controls/public/range_slider/components/range_slider_button.tsx b/src/plugins/controls/public/range_slider/components/range_slider_button.tsx new file mode 100644 index 0000000000000..d24f27e25979b --- /dev/null +++ b/src/plugins/controls/public/range_slider/components/range_slider_button.tsx @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useCallback } from 'react'; + +import { EuiFieldNumber, EuiFormControlLayoutDelimited } from '@elastic/eui'; + +import './range_slider.scss'; +import { RangeValue } from '../../../common/range_slider/types'; +import { useRangeSlider } from '../embeddable/range_slider_embeddable'; + +export const RangeSliderButton = ({ + value, + onChange, + isPopoverOpen, + setIsPopoverOpen, +}: { + value: RangeValue; + isPopoverOpen: boolean; + setIsPopoverOpen: (open: boolean) => void; + onChange: (newRange: RangeValue) => void; +}) => { + const rangeSlider = useRangeSlider(); + + const min = rangeSlider.select((state) => state.componentState.min); + const max = rangeSlider.select((state) => state.componentState.max); + const isInvalid = rangeSlider.select((state) => state.componentState.isInvalid); + + const id = rangeSlider.select((state) => state.explicitInput.id); + + const isLoading = rangeSlider.select((state) => state.output.loading); + + const onClick = useCallback( + (event) => { + // the popover should remain open if the click/focus target is one of the number inputs + if (isPopoverOpen && event.target instanceof HTMLInputElement) { + return; + } + setIsPopoverOpen(true); + }, + [isPopoverOpen, setIsPopoverOpen] + ); + + return ( + { + onChange([event.target.value, value[1]]); + }} + placeholder={String(min)} + isInvalid={isInvalid} + className={'rangeSliderAnchor__fieldNumber'} + data-test-subj={'rangeSlider__lowerBoundFieldNumber'} + /> + } + endControl={ + { + onChange([value[0], event.target.value]); + }} + placeholder={String(max)} + isInvalid={isInvalid} + className={'rangeSliderAnchor__fieldNumber'} + data-test-subj={'rangeSlider__upperBoundFieldNumber'} + /> + } + /> + ); +}; diff --git a/src/plugins/controls/public/range_slider/components/range_slider_control.tsx b/src/plugins/controls/public/range_slider/components/range_slider_control.tsx index e483cf4bb16ae..8a9503ea48a5a 100644 --- a/src/plugins/controls/public/range_slider/components/range_slider_control.tsx +++ b/src/plugins/controls/public/range_slider/components/range_slider_control.tsx @@ -6,24 +6,18 @@ * Side Public License, v 1. */ -import React, { FC, useState, useRef } from 'react'; +import { debounce } from 'lodash'; +import React, { FC, useState, useRef, useMemo, useEffect } from 'react'; -import { - EuiFieldNumber, - EuiText, - EuiInputPopover, - EuiLoadingSpinner, - EuiFlexGroup, - EuiFlexItem, -} from '@elastic/eui'; +import { EuiInputPopover } from '@elastic/eui'; import { useRangeSlider } from '../embeddable/range_slider_embeddable'; import { RangeSliderPopover, EuiDualRangeRef } from './range_slider_popover'; -import './range_slider.scss'; import { ControlError } from '../../control_group/component/control_error_component'; - -const INVALID_CLASS = 'rangeSliderAnchor__fieldNumber--invalid'; +import { RangeValue } from '../../../common/range_slider/types'; +import { RangeSliderButton } from './range_slider_button'; +import './range_slider.scss'; export const RangeSliderControl: FC = () => { const rangeRef = useRef(null); @@ -31,92 +25,33 @@ export const RangeSliderControl: FC = () => { const rangeSlider = useRangeSlider(); - const min = rangeSlider.select((state) => state.componentState.min); - const max = rangeSlider.select((state) => state.componentState.max); const error = rangeSlider.select((state) => state.componentState.error); - const isInvalid = rangeSlider.select((state) => state.componentState.isInvalid); - - const id = rangeSlider.select((state) => state.explicitInput.id); - const value = rangeSlider.select((state) => state.explicitInput.value) ?? ['', '']; - const isLoading = rangeSlider.select((state) => state.output.loading); + const value = rangeSlider.select((state) => state.explicitInput.value); + const [displayedValue, setDisplayedValue] = useState(value ?? ['', '']); - const hasAvailableRange = min !== '' && max !== ''; - - const hasLowerBoundSelection = value[0] !== ''; - const hasUpperBoundSelection = value[1] !== ''; + const debouncedOnChange = useMemo( + () => + debounce((newRange: RangeValue) => { + rangeSlider.dispatch.setSelectedRange(newRange); + }, 750), + [rangeSlider.dispatch] + ); - const lowerBoundValue = parseFloat(value[0]); - const upperBoundValue = parseFloat(value[1]); - const minValue = parseFloat(min); - const maxValue = parseFloat(max); + useEffect(() => { + debouncedOnChange(displayedValue); + }, [debouncedOnChange, displayedValue]); - // EuiDualRange can only handle integers as min/max - const roundedMin = hasAvailableRange ? Math.floor(minValue) : minValue; - const roundedMax = hasAvailableRange ? Math.ceil(maxValue) : maxValue; + useEffect(() => { + setDisplayedValue(value ?? ['', '']); + }, [value]); const button = ( - + ); return error ? ( @@ -130,7 +65,9 @@ export const RangeSliderControl: FC = () => { className="rangeSlider__popoverOverride" anchorClassName="rangeSlider__anchorOverride" panelClassName="rangeSlider__panelOverride" - closePopover={() => setIsPopoverOpen(false)} + closePopover={() => { + setIsPopoverOpen(false); + }} anchorPosition="downCenter" attachToAnchor={false} disableFocusTrap @@ -138,7 +75,7 @@ export const RangeSliderControl: FC = () => { rangeRef.current?.onResize(width); }} > - + ); }; diff --git a/src/plugins/controls/public/range_slider/components/range_slider_popover.tsx b/src/plugins/controls/public/range_slider/components/range_slider_popover.tsx index c3b2ccbe676f4..65d61a467f309 100644 --- a/src/plugins/controls/public/range_slider/components/range_slider_popover.tsx +++ b/src/plugins/controls/public/range_slider/components/range_slider_popover.tsx @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import React, { FC, ComponentProps, Ref, useEffect, useState } from 'react'; +import React, { FC, ComponentProps, Ref, useEffect, useState, useMemo } from 'react'; import useMount from 'react-use/lib/useMount'; import { @@ -14,9 +14,9 @@ import { EuiFlexGroup, EuiFlexItem, EuiDualRange, - EuiText, EuiToolTip, EuiButtonIcon, + EuiText, } from '@elastic/eui'; import type { EuiDualRangeClass } from '@elastic/eui/src/components/form/range/dual_range'; @@ -28,7 +28,11 @@ import { useRangeSlider } from '../embeddable/range_slider_embeddable'; // Unfortunately, wrapping EuiDualRange in `withEuiTheme` has created this annoying/verbose typing export type EuiDualRangeRef = EuiDualRangeClass & ComponentProps; -export const RangeSliderPopover: FC<{ rangeRef?: Ref }> = ({ rangeRef }) => { +export const RangeSliderPopover: FC<{ + value: RangeValue; + onChange: (newRange: RangeValue) => void; + rangeRef?: Ref; +}> = ({ onChange, value, rangeRef }) => { const [fieldFormatter, setFieldFormatter] = useState(() => (toFormat: string) => toFormat); // Controls Services Context @@ -39,79 +43,38 @@ export const RangeSliderPopover: FC<{ rangeRef?: Ref }> = ({ ra // Select current state from Redux using multiple selectors to avoid rerenders. const dataViewId = rangeSlider.select((state) => state.output.dataViewId); - const fieldSpec = rangeSlider.select((state) => state.componentState.field); + const id = rangeSlider.select((state) => state.explicitInput.id); - const isInvalid = rangeSlider.select((state) => state.componentState.isInvalid); - const max = rangeSlider.select((state) => state.componentState.max); - const min = rangeSlider.select((state) => state.componentState.min); const title = rangeSlider.select((state) => state.explicitInput.title); - const value = rangeSlider.select((state) => state.explicitInput.value) ?? ['', '']; - - const hasAvailableRange = min !== '' && max !== ''; - const hasLowerBoundSelection = value[0] !== ''; - const hasUpperBoundSelection = value[1] !== ''; - const lowerBoundSelection = parseFloat(value[0]); - const upperBoundSelection = parseFloat(value[1]); - const minValue = parseFloat(min); - const maxValue = parseFloat(max); - - // EuiDualRange can only handle integers as min/max - const roundedMin = hasAvailableRange ? Math.floor(minValue) : minValue; - const roundedMax = hasAvailableRange ? Math.ceil(maxValue) : maxValue; + const min = rangeSlider.select((state) => state.componentState.min); + const max = rangeSlider.select((state) => state.componentState.max); + const fieldSpec = rangeSlider.select((state) => state.componentState.field); + const isInvalid = rangeSlider.select((state) => state.componentState.isInvalid); // Caches min and max displayed on popover open so the range slider doesn't resize as selections change - const [rangeSliderMin, setRangeSliderMin] = useState(roundedMin); - const [rangeSliderMax, setRangeSliderMax] = useState(roundedMax); + const [rangeSliderMin, setRangeSliderMin] = useState(min); + const [rangeSliderMax, setRangeSliderMax] = useState(max); useMount(() => { + const [lowerBoundSelection, upperBoundSelection] = [parseFloat(value[0]), parseFloat(value[1])]; + setRangeSliderMin( Math.min( - roundedMin, + min, isNaN(lowerBoundSelection) ? Infinity : lowerBoundSelection, isNaN(upperBoundSelection) ? Infinity : upperBoundSelection ) ); setRangeSliderMax( Math.max( - roundedMax, + max, isNaN(lowerBoundSelection) ? -Infinity : lowerBoundSelection, isNaN(upperBoundSelection) ? -Infinity : upperBoundSelection ) ); }); - const errorMessage = ''; - let helpText = ''; - - if (!hasAvailableRange) { - helpText = RangeSliderStrings.popover.getNoAvailableDataHelpText(); - } else if (isInvalid) { - helpText = RangeSliderStrings.popover.getNoDataHelpText(); - } - - const displayedValue = [ - hasLowerBoundSelection - ? String(lowerBoundSelection) - : hasAvailableRange - ? String(roundedMin) - : '', - hasUpperBoundSelection - ? String(upperBoundSelection) - : hasAvailableRange - ? String(roundedMax) - : '', - ] as RangeValue; - - const ticks = []; - const levels = []; - - if (hasAvailableRange) { - ticks.push({ value: rangeSliderMin, label: fieldFormatter(String(rangeSliderMin)) }); - ticks.push({ value: rangeSliderMax, label: fieldFormatter(String(rangeSliderMax)) }); - levels.push({ min: roundedMin, max: roundedMax, color: 'success' }); - } - // derive field formatter from fieldSpec and dataViewId useEffect(() => { (async () => { @@ -126,6 +89,17 @@ export const RangeSliderPopover: FC<{ rangeRef?: Ref }> = ({ ra })(); }, [fieldSpec, dataViewId, getDataViewById]); + const ticks = useMemo(() => { + return [ + { value: min, label: fieldFormatter(String(min)) }, + { value: max, label: fieldFormatter(String(max)) }, + ]; + }, [min, max, fieldFormatter]); + + const levels = useMemo(() => { + return [{ min, max, color: 'success' }]; + }, [min, max]); + return ( <> {title} @@ -136,34 +110,31 @@ export const RangeSliderPopover: FC<{ rangeRef?: Ref }> = ({ ra responsive={false} > - { - const updatedLowerBound = - typeof newLowerBound === 'number' ? String(newLowerBound) : value[0]; - const updatedUpperBound = - typeof newUpperBound === 'number' ? String(newUpperBound) : value[1]; - - rangeSlider.dispatch.setSelectedRange([updatedLowerBound, updatedUpperBound]); - }} - value={displayedValue} - ticks={hasAvailableRange ? ticks : undefined} - levels={hasAvailableRange ? levels : undefined} - showTicks={hasAvailableRange} - disabled={!hasAvailableRange} - fullWidth - ref={rangeRef} - data-test-subj="rangeSlider__slider" - /> - - {errorMessage || helpText} - + {min !== -Infinity && max !== Infinity ? ( + { + onChange([String(minSelection), String(maxSelection)]); + }} + value={value} + ticks={ticks} + levels={levels} + showTicks + fullWidth + ref={rangeRef} + data-test-subj="rangeSlider__slider" + /> + ) : isInvalid ? ( + + {RangeSliderStrings.popover.getNoDataHelpText()} + + ) : ( + + {RangeSliderStrings.popover.getNoAvailableDataHelpText()} + + )} diff --git a/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx b/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx index e1bacc7327310..ad0c2aae0eaf3 100644 --- a/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx +++ b/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx @@ -13,7 +13,7 @@ import { batch } from 'react-redux'; import { get, isEqual } from 'lodash'; import deepEqual from 'fast-deep-equal'; import { Subscription, lastValueFrom } from 'rxjs'; -import { debounceTime, distinctUntilChanged, skip, map } from 'rxjs/operators'; +import { distinctUntilChanged, skip, map } from 'rxjs/operators'; import { compareFilters, @@ -21,7 +21,6 @@ import { COMPARE_ALL_OPTIONS, RangeFilterParams, Filter, - Query, } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; @@ -63,7 +62,12 @@ interface RangeSliderDataFetchProps { } const fieldMissingError = (fieldName: string) => - new Error(`field ${fieldName} not found in index pattern`); + new Error( + i18n.translate('controls.rangeSlider.errors.fieldNotFound', { + defaultMessage: 'Could not locate field: {fieldName}', + values: { fieldName }, + }) + ); export const RangeSliderControlContext = createContext(null); export const useRangeSlider = (): RangeSliderEmbeddable => { @@ -93,6 +97,7 @@ export class RangeSliderEmbeddable extends Embeddable { - batch(() => { - this.dispatch.setLoading(false); - this.dispatch.setErrorMessage(e.message); - }); - }) - .then(async () => { - if (initialValue) { - this.setInitializationFinished(); - } - this.setupSubscriptions(); + try { + await this.runRangeSliderQuery(); + await this.buildFilter(); + if (initialValue) { + this.setInitializationFinished(); + } + } catch (e) { + batch(() => { + this.dispatch.setLoading(false); + this.dispatch.setErrorMessage(e.message); }); + } + this.setupSubscriptions(); }; private setupSubscriptions = () => { @@ -169,19 +173,21 @@ export class RangeSliderEmbeddable extends Embeddable - this.runRangeSliderQuery().catch((e) => { + dataFetchPipe.subscribe(async (changes) => { + try { + await this.runRangeSliderQuery(); + await this.buildFilter(); + } catch (e) { this.dispatch.setErrorMessage(e.message); - }) - ) + } + }) ); - // build filters when value change + // build filters when value changes this.subscriptions.add( this.getInput$() .pipe( - debounceTime(400), - distinctUntilChanged((a, b) => isEqual(a.value, b.value)), + distinctUntilChanged((a, b) => isEqual(a.value ?? ['', ''], b.value ?? ['', ''])), skip(1) // skip the first input update because initial filters will be built by initialize. ) .subscribe(this.buildFilter) @@ -217,12 +223,7 @@ export class RangeSliderEmbeddable extends Embeddable { @@ -258,9 +251,9 @@ export class RangeSliderEmbeddable extends Embeddable { throw e; }); this.dispatch.setMinMax({ - min: `${min ?? ''}`, - max: `${max ?? ''}`, - }); - // build filter with new min/max - await this.buildFilter().catch((e) => { - throw e; + min: `${min ?? '-Infinity'}`, + max: `${max ?? 'Infinity'}`, }); }; private fetchMinMax = async ({ dataView, field, - filters, - query, }: { dataView: DataView; field: DataViewField; - filters: Filter[]; - query?: Query; - }) => { + }): Promise<{ min?: number; max?: number }> => { const searchSource = await this.dataService.searchSource.create(); searchSource.setField('size', 0); searchSource.setField('index', dataView); - searchSource.setField('filter', filters); + const { ignoreParentSettings, query } = this.getInput(); + + if (!ignoreParentSettings?.ignoreFilters) { + searchSource.setField('filter', this.filters); + } if (query) { searchSource.setField('query', query); @@ -343,8 +331,8 @@ export class RangeSliderEmbeddable extends Embeddable { throw e; }); - const min = get(resp, 'rawResponse.aggregations.minAgg.value', ''); - const max = get(resp, 'rawResponse.aggregations.maxAgg.value', ''); + const min = get(resp, 'rawResponse.aggregations.minAgg.value'); + const max = get(resp, 'rawResponse.aggregations.maxAgg.value'); return { min, max }; }; @@ -352,15 +340,13 @@ export class RangeSliderEmbeddable extends Embeddable { const { componentState: { min: availableMin, max: availableMax }, - explicitInput: { - query, - timeRange, - filters = [], - ignoreParentSettings, - value: [selectedMin, selectedMax] = ['', ''], - }, + explicitInput: { value }, } = this.getState(); - const hasData = !isEmpty(availableMin) && !isEmpty(availableMax); + + const { ignoreParentSettings, query } = this.getInput(); + + const [selectedMin, selectedMax] = value ?? ['', '']; + const hasData = availableMin !== undefined && availableMax !== undefined; const hasLowerSelection = !isEmpty(selectedMin); const hasUpperSelection = !isEmpty(selectedMax); const hasEitherSelection = hasLowerSelection || hasUpperSelection; @@ -382,15 +368,14 @@ export class RangeSliderEmbeddable extends Embeddable { this.dispatch.setLoading(false); @@ -445,10 +421,13 @@ export class RangeSliderEmbeddable extends Embeddable { - this.runRangeSliderQuery().catch((e) => { + public reload = async () => { + try { + await this.runRangeSliderQuery(); + await this.buildFilter(); + } catch (e) { this.dispatch.setErrorMessage(e.message); - }); + } }; public destroy = () => { diff --git a/src/plugins/controls/public/range_slider/range_slider_reducers.ts b/src/plugins/controls/public/range_slider/range_slider_reducers.ts index e8fcf0a10b2c3..c1b5c93c4ce25 100644 --- a/src/plugins/controls/public/range_slider/range_slider_reducers.ts +++ b/src/plugins/controls/public/range_slider/range_slider_reducers.ts @@ -16,9 +16,9 @@ import { RangeSliderReduxState } from './types'; import { RangeValue } from '../../common/range_slider/types'; export const getDefaultComponentState = (): RangeSliderReduxState['componentState'] => ({ - min: '', - max: '', isInvalid: false, + min: -Infinity, + max: Infinity, }); export const rangeSliderReducers = { @@ -53,8 +53,8 @@ export const rangeSliderReducers = { state: WritableDraft, action: PayloadAction<{ min: string; max: string }> ) => { - state.componentState.min = action.payload.min; - state.componentState.max = action.payload.max; + state.componentState.min = Math.floor(parseFloat(action.payload.min)); + state.componentState.max = Math.ceil(parseFloat(action.payload.max)); }, publishFilters: ( state: WritableDraft, diff --git a/src/plugins/controls/public/range_slider/types.ts b/src/plugins/controls/public/range_slider/types.ts index ad321271631e0..8b283d300e6ae 100644 --- a/src/plugins/controls/public/range_slider/types.ts +++ b/src/plugins/controls/public/range_slider/types.ts @@ -15,8 +15,8 @@ import { ControlOutput } from '../types'; // Component state is only used by public components. export interface RangeSliderComponentState { field?: FieldSpec; - min: string; - max: string; + min: number; + max: number; error?: string; isInvalid?: boolean; } diff --git a/test/functional/apps/dashboard_elements/controls/range_slider.ts b/test/functional/apps/dashboard_elements/controls/range_slider.ts index f1ccf742ad844..6d895ec7f9d2d 100644 --- a/test/functional/apps/dashboard_elements/controls/range_slider.ts +++ b/test/functional/apps/dashboard_elements/controls/range_slider.ts @@ -132,7 +132,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(await saveButton.isEnabled()).to.be(false); await dashboardControls.controlsEditorSetfield('dayOfWeek', RANGE_SLIDER_CONTROL); await dashboardControls.controlEditorSave(); - await dashboardControls.rangeSliderWaitForLoading(); + await dashboardControls.rangeSliderWaitForLoading(firstId); await dashboardControls.validateRange('placeholder', firstId, '0', '6'); await dashboardControls.validateRange('value', firstId, '', ''); @@ -164,11 +164,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'value' ); expect(upperBoundSelection).to.be('2'); + await dashboardControls.rangeSliderWaitForLoading(firstId); }); it('applies filter from the first control on the second control', async () => { - await dashboardControls.rangeSliderWaitForLoading(); const secondId = (await dashboardControls.getAllControlIds())[1]; + await dashboardControls.rangeSliderWaitForLoading(secondId); await dashboardControls.validateRange('placeholder', secondId, '100', '1000'); await dashboard.clearUnsavedChanges(); }); @@ -183,15 +184,15 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('making changes to range causes unsaved changes', async () => { const firstId = (await dashboardControls.getAllControlIds())[0]; - await dashboardControls.rangeSliderSetLowerBound(firstId, '0'); + await dashboardControls.rangeSliderSetLowerBound(firstId, '2'); await dashboardControls.rangeSliderSetUpperBound(firstId, '3'); - await dashboardControls.rangeSliderWaitForLoading(); + await dashboardControls.rangeSliderWaitForLoading(firstId); await testSubjects.existOrFail('dashboardUnsavedChangesBadge'); }); it('changes to range can be discarded', async () => { const firstId = (await dashboardControls.getAllControlIds())[0]; - await dashboardControls.validateRange('value', firstId, '0', '3'); + await dashboardControls.validateRange('value', firstId, '2', '3'); await dashboard.clickCancelOutOfEditMode(); await dashboardControls.validateRange('value', firstId, '', ''); }); @@ -216,7 +217,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await dashboardControls.rangeSliderSetUpperBound(firstId, '400'); }); - it('disables range slider when no data available', async () => { + it('hides range slider in popover when no data available', async () => { await dashboardControls.createControl({ controlType: RANGE_SLIDER_CONTROL, dataViewTitle: 'logstash-*', @@ -226,9 +227,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const secondId = (await dashboardControls.getAllControlIds())[1]; await dashboardControls.rangeSliderOpenPopover(secondId); await dashboardControls.rangeSliderPopoverAssertOpen(); - expect( - await dashboardControls.rangeSliderGetDualRangeAttribute(secondId, 'disabled') - ).to.be('true'); + await testSubjects.missingOrFail('rangeSlider__slider'); expect((await testSubjects.getVisibleText('rangeSlider__helpText')).length).to.be.above(0); }); }); @@ -250,7 +249,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('Applies dashboard query to range slider control', async () => { const firstId = (await dashboardControls.getAllControlIds())[0]; - await dashboardControls.rangeSliderWaitForLoading(); + await dashboardControls.rangeSliderWaitForLoading(firstId); await dashboardControls.validateRange('placeholder', firstId, '100', '300'); await queryBar.setQuery(''); await queryBar.submitQuery(); diff --git a/test/functional/apps/dashboard_elements/controls/replace_controls.ts b/test/functional/apps/dashboard_elements/controls/replace_controls.ts index 4cfbe1a7ff560..7b17c143c515a 100644 --- a/test/functional/apps/dashboard_elements/controls/replace_controls.ts +++ b/test/functional/apps/dashboard_elements/controls/replace_controls.ts @@ -41,7 +41,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const replaceWithRangeSlider = async (controlId: string, field: string) => { await changeFieldType(controlId, field, RANGE_SLIDER_CONTROL); await retry.try(async () => { - await dashboardControls.rangeSliderWaitForLoading(); + await dashboardControls.rangeSliderWaitForLoading(controlId); await dashboardControls.verifyControlType(controlId, 'range-slider-control'); }); }; @@ -102,8 +102,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { dataViewTitle: 'animals-*', fieldName: 'weightLbs', }); - await dashboardControls.rangeSliderWaitForLoading(); controlId = (await dashboardControls.getAllControlIds())[0]; + await dashboardControls.rangeSliderWaitForLoading(controlId); }); afterEach(async () => { diff --git a/test/functional/apps/dashboard_elements/controls/time_slider.ts b/test/functional/apps/dashboard_elements/controls/time_slider.ts index ef75d4e74b24e..06d2a9b10024c 100644 --- a/test/functional/apps/dashboard_elements/controls/time_slider.ts +++ b/test/functional/apps/dashboard_elements/controls/time_slider.ts @@ -96,8 +96,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('applies filter from the first control on the second control', async () => { - await dashboardControls.rangeSliderWaitForLoading(); const secondId = (await dashboardControls.getAllControlIds())[1]; + await dashboardControls.rangeSliderWaitForLoading(secondId); await dashboardControls.validateRange('placeholder', secondId, '101', '1000'); }); diff --git a/test/functional/page_objects/dashboard_page_controls.ts b/test/functional/page_objects/dashboard_page_controls.ts index a82662c5326c5..0625ead5f0357 100644 --- a/test/functional/page_objects/dashboard_page_controls.ts +++ b/test/functional/page_objects/dashboard_page_controls.ts @@ -336,11 +336,28 @@ export class DashboardPageControls extends FtrService { } public async verifyControlType(controlId: string, expectedType: string) { - const controlButton = await this.find.byXPath( - `//div[@id='controlFrame--${controlId}']//button` - ); - const testSubj = await controlButton.getAttribute('data-test-subj'); - expect(testSubj).to.equal(`${expectedType}-${controlId}`); + let controlButton; + switch (expectedType) { + case OPTIONS_LIST_CONTROL: { + controlButton = await this.find.byXPath(`//div[@id='controlFrame--${controlId}']//button`); + break; + } + case RANGE_SLIDER_CONTROL: { + controlButton = await this.find.byXPath( + `//div[@id='controlFrame--${controlId}']//div[contains(@class, 'rangeSliderAnchor__button')]` + ); + break; + } + default: { + this.log.error('An invalid control type was provided.'); + break; + } + } + + if (controlButton) { + const testSubj = await controlButton.getAttribute('data-test-subj'); + expect(testSubj).to.equal(`${expectedType}-${controlId}`); + } } // Options list functions @@ -636,10 +653,7 @@ export class DashboardPageControls extends FtrService { attribute ); } - public async rangeSliderGetDualRangeAttribute(controlId: string, attribute: string) { - this.log.debug(`Getting range slider dual range ${attribute} for ${controlId}`); - return await this.testSubjects.getAttribute(`rangeSlider__slider`, attribute); - } + public async rangeSliderSetLowerBound(controlId: string, value: string) { this.log.debug(`Setting range slider lower bound to ${value}`); await this.testSubjects.setValue( @@ -665,7 +679,8 @@ export class DashboardPageControls extends FtrService { public async rangeSliderEnsurePopoverIsClosed(controlId: string) { this.log.debug(`Opening popover for Range Slider: ${controlId}`); - await this.testSubjects.click(`range-slider-control-${controlId}`); + const controlLabel = await this.find.byXPath(`//div[@data-control-id='${controlId}']//label`); + await controlLabel.click(); await this.testSubjects.waitForDeleted(`rangeSlider-control-actions`); } @@ -677,8 +692,10 @@ export class DashboardPageControls extends FtrService { }); } - public async rangeSliderWaitForLoading() { - await this.testSubjects.waitForDeleted('range-slider-loading-spinner'); + public async rangeSliderWaitForLoading(controlId: string) { + await this.find.waitForDeletedByCssSelector( + `[data-test-subj="range-slider-control-${controlId}"] .euiLoadingSpinner` + ); } public async rangeSliderClearSelection(controlId: string) { diff --git a/x-pack/test/functional/apps/dashboard/group3/drilldowns/dashboard_to_dashboard_drilldown.ts b/x-pack/test/functional/apps/dashboard/group3/drilldowns/dashboard_to_dashboard_drilldown.ts index 7cd8d5c8a455d..e7afd4f9761da 100644 --- a/x-pack/test/functional/apps/dashboard/group3/drilldowns/dashboard_to_dashboard_drilldown.ts +++ b/x-pack/test/functional/apps/dashboard/group3/drilldowns/dashboard_to_dashboard_drilldown.ts @@ -309,7 +309,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboardControls.optionsListOpenPopover(optionsListControl); await PageObjects.dashboardControls.optionsListPopoverSelectOption('CN'); await PageObjects.dashboardControls.optionsListPopoverSelectOption('US'); - await PageObjects.dashboardControls.rangeSliderWaitForLoading(); // wait for range slider to respond to options list selections before proceeding + await PageObjects.dashboardControls.rangeSliderWaitForLoading(rangeSliderControl); // wait for range slider to respond to options list selections before proceeding await PageObjects.dashboardControls.rangeSliderSetLowerBound(rangeSliderControl, '1000'); await PageObjects.dashboardControls.rangeSliderSetUpperBound(rangeSliderControl, '15000'); await PageObjects.dashboard.clickQuickSave(); From 09bf7c5d106130989cadff0c1dae4e7d64831d74 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 15 Jun 2023 18:11:24 +0100 Subject: [PATCH 26/59] skip flaky suite (#53204) --- .../functional/apps/graph/feature_controls/graph_security.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/graph/feature_controls/graph_security.ts b/x-pack/test/functional/apps/graph/feature_controls/graph_security.ts index e806e2be4daf1..b0e1a0208bd57 100644 --- a/x-pack/test/functional/apps/graph/feature_controls/graph_security.ts +++ b/x-pack/test/functional/apps/graph/feature_controls/graph_security.ts @@ -29,7 +29,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await PageObjects.security.forceLogout(); }); - describe('global graph all privileges', () => { + // FLAKY: https://github.com/elastic/kibana/issues/53204 + describe.skip('global graph all privileges', () => { before(async () => { await security.role.create('global_graph_all_role', { elasticsearch: { From 21ba2831a2fef32555de55e2e66e6f09ddf0bc75 Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Thu, 15 Jun 2023 19:27:32 +0200 Subject: [PATCH 27/59] [Enterprise Search] Fix tooltip icons for connector configs (#159810) ## Summary This fixes some tooltip icons to signal to users that a tooltip is available. Screenshot 2023-06-15 at 14 15 53 --- .../connector_configuration_field.tsx | 129 +++++++++--------- .../connector_configuration_form.tsx | 3 +- .../connector_configuration_form_items.tsx | 88 ++++++------ 3 files changed, 107 insertions(+), 113 deletions(-) rename x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/{sync_rules => }/connector_configuration_form_items.tsx (52%) diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_field.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_field.tsx index c1c54d9b5cbfd..e13d8185a9d3c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_field.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_field.tsx @@ -17,11 +17,10 @@ import { EuiSelect, EuiSwitch, EuiTextArea, - EuiToolTip, - EuiIcon, EuiFlexGroup, EuiFlexItem, EuiButtonIcon, + EuiIcon, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -48,25 +47,6 @@ interface ConnectorConfigurationFieldProps { export const ConnectorConfigurationField: React.FC = ({ configEntry, -}) => { - return configEntry.tooltip ? ( - - - - - - - - - - - ) : ( - - ); -}; - -export const ConnectorConfigurationFieldType: React.FC = ({ - configEntry, }) => { const { status } = useValues(ConnectorConfigurationApiLogic); const { setLocalConfigEntry } = useActions(ConnectorConfigurationLogic); @@ -141,9 +121,18 @@ export const ConnectorConfigurationFieldType: React.FC + tooltip ? ( + + +

{label}

+
+ + + +
+ ) : (

{label}

-
+ ) } > {textarea} @@ -153,49 +142,61 @@ export const ConnectorConfigurationFieldType: React.FC - - -

{label}

- - } - onChange={(event) => { - setLocalConfigEntry({ ...configEntry, value: event.target.checked }); - }} - /> -
- - + + {label}

} + onChange={(event) => { + setLocalConfigEntry({ ...configEntry, value: event.target.checked }); + }} + /> +
+ + setIsPopoverOpen(!isPopoverOpen)} + /> } - )} - iconType="questionInCircle" - onClick={() => setIsPopoverOpen(!isPopoverOpen)} - /> - } - closePopover={() => setIsPopoverOpen(false)} - isPopoverOpen={isPopoverOpen} - /> - -
- ) : ( + closePopover={() => setIsPopoverOpen(false)} + isPopoverOpen={isPopoverOpen} + /> + + + } + /> + ); + } + return ( + tooltip ? ( + + +

{label}

+
+ + + +
+ ) : (

{label}

- + ) } onChange={(event) => { setLocalConfigEntry({ ...configEntry, value: event.target.checked }); @@ -203,12 +204,6 @@ export const ConnectorConfigurationFieldType: React.FC ); - return key !== 'document_level_security' ? ( - toggleSwitch - ) : ( - - ); - default: return sensitive ? ( { const { productFeatures } = useValues(KibanaLogic); @@ -62,6 +62,7 @@ export const ConnectorConfigurationForm = () => { /> ))} + diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/sync_rules/connector_configuration_form_items.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_form_items.tsx similarity index 52% rename from x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/sync_rules/connector_configuration_form_items.tsx rename to x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_form_items.tsx index 32c05726338dd..d8bdfb5d86368 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/sync_rules/connector_configuration_form_items.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_form_items.tsx @@ -7,14 +7,14 @@ import React from 'react'; -import { EuiFormRow, EuiPanel, EuiSpacer, EuiToolTip } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiFormRow, EuiIcon, EuiPanel, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { DisplayType } from '../../../../../../../common/types/connectors'; +import { DisplayType } from '../../../../../../common/types/connectors'; -import { ConnectorConfigurationField } from '../connector_configuration_field'; -import { ConfigEntryView } from '../connector_configuration_logic'; +import { ConnectorConfigurationField } from './connector_configuration_field'; +import { ConfigEntryView } from './connector_configuration_logic'; interface ConnectorConfigurationFormItemsProps { hasDocumentLevelSecurityEnabled: boolean; @@ -26,9 +26,8 @@ export const ConnectorConfigurationFormItems: React.FC { return ( - <> - - {items.map((configEntry, index) => { + + {items.map((configEntry) => { const { default_value: defaultValue, depends_on: dependencies, @@ -58,55 +57,54 @@ export const ConnectorConfigurationFormItems: React.FC + ) : tooltip ? ( + + +

{label}

+
+ + + +
) : ( - -

{label}

-
+

{label}

); if (dependencies?.length > 0) { - // dynamic spacing without CSS - const previousField = items[index - 1]; - const nextField = items[index + 1]; - - const topSpacing = - !previousField || previousField.depends_on.length <= 0 ? : <>; - - const bottomSpacing = - !nextField || nextField.depends_on.length <= 0 ? : <>; - return ( - <> - {topSpacing} + - - - + + + + + - {bottomSpacing} - + ); } return ( - - - + + + + + + + ); })} - +
); }; From 5c7a5b09565d3cb652f75f721a372566d5b639e0 Mon Sep 17 00:00:00 2001 From: Kylie Meli Date: Thu, 15 Jun 2023 13:56:15 -0400 Subject: [PATCH 28/59] Add Confluent Cloud to integrations UI (#159735) ## Summary Add a new tile into the Integrations UI for Confluent Cloud's Elastic Sink Connector. Closes https://github.com/elastic/kibana/issues/154173 Screenshot 2023-06-14 at 1 38 33 PM ### Checklist Delete any items that are not applicable to this PR. - [X] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] ~[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials~ - [X] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] ~Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/))~ - [ ] ~Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))~ - [ ] ~If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~ - [X] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] ~This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers)~ ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../assets/placeholders/logo_confluent.svg | 59 +++++++++++++++++++ .../server/external_integration/index.ts | 12 ++++ .../custom_integrations/server/plugin.test.ts | 12 ++++ .../apis/custom_integration/integrations.ts | 2 +- 4 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 src/plugins/custom_integrations/public/assets/placeholders/logo_confluent.svg diff --git a/src/plugins/custom_integrations/public/assets/placeholders/logo_confluent.svg b/src/plugins/custom_integrations/public/assets/placeholders/logo_confluent.svg new file mode 100644 index 0000000000000..ab36e337b87ea --- /dev/null +++ b/src/plugins/custom_integrations/public/assets/placeholders/logo_confluent.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/plugins/custom_integrations/server/external_integration/index.ts b/src/plugins/custom_integrations/server/external_integration/index.ts index 9d9b5ea75891a..71f67d1e745e8 100644 --- a/src/plugins/custom_integrations/server/external_integration/index.ts +++ b/src/plugins/custom_integrations/server/external_integration/index.ts @@ -35,6 +35,18 @@ export const integrations: ExternalIntegration[] = [ docUrlTemplate: `https://serverlessrepo.aws.amazon.com/applications/eu-central-1/267093732750/elastic-serverless-forwarder`, categories: ['aws', 'observability'], }, + { + id: 'esc', + title: i18n.translate('customIntegrations.placeholders.EscTitle', { + defaultMessage: 'Confluent Cloud', + }), + icon: 'logo_confluent.svg', + description: i18n.translate('customIntegrations.placeholders.EscDescription', { + defaultMessage: 'Collect data from Confluent Cloud with the Elastic Sink Connector.', + }), + docUrlTemplate: `https://www.confluent.io/hub/confluentinc/kafka-connect-elasticsearch`, + categories: ['message_queue', 'observability', 'security'], + }, ]; export function registerExternalIntegrations( diff --git a/src/plugins/custom_integrations/server/plugin.test.ts b/src/plugins/custom_integrations/server/plugin.test.ts index 930a504c5be0c..6a63843a37a56 100644 --- a/src/plugins/custom_integrations/server/plugin.test.ts +++ b/src/plugins/custom_integrations/server/plugin.test.ts @@ -146,6 +146,18 @@ describe('CustomIntegrationsPlugin', () => { icons: [{ type: 'svg', src: undefined }], categories: ['aws', 'observability'], }, + { + id: 'placeholder.esc', + title: 'Confluent Cloud', + description: 'Collect data from Confluent Cloud with the Elastic Sink Connector.', + type: 'ui_link', + shipper: 'placeholders', + uiInternalPath: '', + uiExternalLink: 'https://www.confluent.io/hub/confluentinc/kafka-connect-elasticsearch', + isBeta: false, + icons: [{ type: 'svg', src: undefined }], + categories: ['message_queue', 'observability', 'security'], + }, ]); }); }); diff --git a/test/api_integration/apis/custom_integration/integrations.ts b/test/api_integration/apis/custom_integration/integrations.ts index 9556872bc38a8..17f39e53b44a9 100644 --- a/test/api_integration/apis/custom_integration/integrations.ts +++ b/test/api_integration/apis/custom_integration/integrations.ts @@ -22,7 +22,7 @@ export default function ({ getService }: FtrProviderContext) { expect(resp.body).to.be.an('array'); - expect(resp.body.length).to.be(53); + expect(resp.body.length).to.be(54); // Test for sample data card expect(resp.body.findIndex((c: { id: string }) => c.id === 'sample_data_all')).to.be.above( From 2d5f37769609775d045a94e9a31c09733fa3167d Mon Sep 17 00:00:00 2001 From: Zacqary Adam Xeper Date: Thu, 15 Jun 2023 13:15:36 -0500 Subject: [PATCH 29/59] [RAM] Add refresh button to maintenance windows list (#159618) ## Summary Closes #159616 Screenshot 2023-06-13 at 1 24 00 PM ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) --- .../maintenance_windows_list.test.tsx | 17 ++++++++++++- .../components/maintenance_windows_list.tsx | 25 +++++++++++-------- .../pages/maintenance_windows/translations.ts | 4 +++ 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/alerting/public/pages/maintenance_windows/components/maintenance_windows_list.test.tsx b/x-pack/plugins/alerting/public/pages/maintenance_windows/components/maintenance_windows_list.test.tsx index 734563cf5b9b5..428fae320d2f9 100644 --- a/x-pack/plugins/alerting/public/pages/maintenance_windows/components/maintenance_windows_list.test.tsx +++ b/x-pack/plugins/alerting/public/pages/maintenance_windows/components/maintenance_windows_list.test.tsx @@ -7,6 +7,7 @@ import React from 'react'; import moment from 'moment'; +import { fireEvent, waitFor } from '@testing-library/react'; import { AppMockRenderer, createAppMockRenderer } from '../../../lib/test_utils'; import { MaintenanceWindowsList } from './maintenance_windows_list'; import { MaintenanceWindowFindResponse } from '../types'; @@ -125,7 +126,7 @@ describe('MaintenanceWindowsList', () => { expect(result.getAllByTestId('table-actions-icon-button')).toHaveLength(items.length); }); - test('it does NOT renders action column in readonly', () => { + test('it does NOT render action column in readonly', () => { const result = appMockRenderer.render( {}} @@ -140,4 +141,18 @@ describe('MaintenanceWindowsList', () => { // check if action menu is there expect(result.queryByTestId('table-actions-icon-button')).not.toBeInTheDocument(); }); + + test('it calls refreshData when user presses refresh button', async () => { + const refreshData = jest.fn(); + const result = appMockRenderer.render( + + ); + fireEvent.click(result.getByTestId('refresh-button')); + await waitFor(() => expect(refreshData).toBeCalled()); + }); }); diff --git a/x-pack/plugins/alerting/public/pages/maintenance_windows/components/maintenance_windows_list.tsx b/x-pack/plugins/alerting/public/pages/maintenance_windows/components/maintenance_windows_list.tsx index 813f2e4381bf7..0caf0ef34c6fb 100644 --- a/x-pack/plugins/alerting/public/pages/maintenance_windows/components/maintenance_windows_list.tsx +++ b/x-pack/plugins/alerting/public/pages/maintenance_windows/components/maintenance_windows_list.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useCallback, useMemo } from 'react'; +import React, { ReactElement, useCallback, useMemo } from 'react'; import { formatDate, EuiInMemoryTable, @@ -15,6 +15,7 @@ import { SearchFilterConfig, EuiBadge, useEuiTheme, + EuiButton, } from '@elastic/eui'; import { css } from '@emotion/react'; import { MaintenanceWindowFindResponse, SortDirection } from '../types'; @@ -91,17 +92,21 @@ const rowProps = (item: MaintenanceWindowFindResponse) => ({ 'data-test-subj': 'list-item', }); -const search: { filters: SearchFilterConfig[] } = { - filters: [ - { - type: 'custom_component', - component: StatusFilter, - }, - ], -}; - export const MaintenanceWindowsList = React.memo( ({ loading, items, readOnly, refreshData }) => { + const search: { filters: SearchFilterConfig[]; toolsRight: ReactElement } = { + filters: [ + { + type: 'custom_component', + component: StatusFilter, + }, + ], + toolsRight: ( + + {i18n.REFRESH} + + ), + }; const { euiTheme } = useEuiTheme(); const { navigateToEditMaintenanceWindows } = useEditMaintenanceWindowsNavigation(); const onEdit = useCallback( diff --git a/x-pack/plugins/alerting/public/pages/maintenance_windows/translations.ts b/x-pack/plugins/alerting/public/pages/maintenance_windows/translations.ts index fc7ad9d1dbb5b..32d234bfe1d36 100644 --- a/x-pack/plugins/alerting/public/pages/maintenance_windows/translations.ts +++ b/x-pack/plugins/alerting/public/pages/maintenance_windows/translations.ts @@ -617,3 +617,7 @@ export const START_TRIAL = i18n.translate( defaultMessage: 'Start trial', } ); + +export const REFRESH = i18n.translate('xpack.alerting.maintenanceWindows.refreshButton', { + defaultMessage: 'Refresh', +}); From c40ac56cc5470c6ad7b26f4e21dc3d767daf591f Mon Sep 17 00:00:00 2001 From: Alexi Doak <109488926+doakalexi@users.noreply.github.com> Date: Thu, 15 Jun 2023 14:38:11 -0400 Subject: [PATCH 30/59] =?UTF-8?q?[ResponseOps][Alerting]=20Flaky=20test=20?= =?UTF-8?q?x-pack/test/alerting=5Fapi=5Fintegration/spaces=5Fonly/tests/ac?= =?UTF-8?q?tion=5Ftask=5Fparams/migrations=C2=B7ts=20(#159743)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves https://github.com/elastic/kibana/issues/154358 ## Summary This pr removes the skip on the flaky test. I couldn't replicate the failure, and it passed three runs through the flaky test runner. 1. Flaky test run 250x - https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/2384 2. Flaky test run 250x - https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/2383 3. Flaky test run 250x - https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/2385 --- .../spaces_only/tests/action_task_params/migrations.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/migrations.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/migrations.ts index 2c9147ac2dfb5..c7c9611b21312 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/migrations.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/migrations.ts @@ -16,8 +16,7 @@ export default function createGetTests({ getService }: FtrProviderContext) { const es = getService('es'); const esArchiver = getService('esArchiver'); - // FLAKY: https://github.com/elastic/kibana/issues/154358 - describe.skip('migrations', () => { + describe('migrations', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/action_task_params'); }); From 03f86a945004772e31fdceb31b63a0140cd67326 Mon Sep 17 00:00:00 2001 From: "Quynh Nguyen (Quinn)" <43350163+qn895@users.noreply.github.com> Date: Thu, 15 Jun 2023 13:54:04 -0500 Subject: [PATCH 31/59] [ML] Enable auto-complete on filter by influencer search box on anomaly explorer page (#159739) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../explorer_query_bar/explorer_query_bar.tsx | 8 +++-- .../public/application/explorer/explorer.tsx | 20 +++++++----- .../application/explorer/explorer_utils.ts | 31 ++++++++++++------- .../timeseriesexplorer/timeseriesexplorer.js | 6 ++-- 4 files changed, 40 insertions(+), 25 deletions(-) diff --git a/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx b/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx index d28323ee529ec..412c9e8f3aa7d 100644 --- a/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx +++ b/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx @@ -103,6 +103,7 @@ interface ExplorerQueryBarProps { indexPattern: DataView; queryString?: string; updateLanguage: (language: string) => void; + dataViews?: DataView[]; } export const ExplorerQueryBar: FC = ({ @@ -111,6 +112,7 @@ export const ExplorerQueryBar: FC = ({ indexPattern, queryString, updateLanguage, + dataViews = [], }) => { const { anomalyExplorerCommonStateService } = useAnomalyExplorerContext(); const { services } = useMlKibana(); @@ -123,7 +125,7 @@ export const ExplorerQueryBar: FC = ({ http, docLinks, uiSettings, - dataViews, + dataViews: dataViewsService, } = services; // The internal state of the input query bar updated on every key stroke. @@ -175,7 +177,7 @@ export const ExplorerQueryBar: FC = ({ = ({ uiSettings, data, storage, - dataViews, + dataViews: dataViewsService, }} /> } diff --git a/x-pack/plugins/ml/public/application/explorer/explorer.tsx b/x-pack/plugins/ml/public/application/explorer/explorer.tsx index 7ec1444aee60f..28a5164719563 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer.tsx +++ b/x-pack/plugins/ml/public/application/explorer/explorer.tsx @@ -56,7 +56,7 @@ import { escapeDoubleQuotes, OverallSwimlaneData, AppStateSelectedCells, - getSourceIndicesWithGeoFields, + getDataViewsAndIndicesWithGeoFields, SourceIndicesWithGeoFields, } from './explorer_utils'; import { AnomalyTimeline } from './anomaly_timeline'; @@ -88,6 +88,7 @@ interface ExplorerPageProps { indexPattern?: DataView; queryString?: string; updateLanguage?: (language: string) => void; + dataViews?: DataView[]; } const ExplorerPage: FC = ({ @@ -98,6 +99,7 @@ const ExplorerPage: FC = ({ filterActive, filterPlaceHolder, indexPattern, + dataViews, queryString, updateLanguage, }) => ( @@ -112,6 +114,7 @@ const ExplorerPage: FC = ({ filterActive={!!filterActive} filterPlaceHolder={filterPlaceHolder} indexPattern={indexPattern} + dataViews={dataViews} queryString={queryString} updateLanguage={updateLanguage} /> @@ -268,6 +271,7 @@ export const Explorer: FC = ({ const [language, updateLanguage] = useState(DEFAULT_QUERY_LANG); const [sourceIndicesWithGeoFields, setSourceIndicesWithGeoFields] = useState({}); + const [dataViews, setDataViews] = useState(); const filterSettings = useObservable( anomalyExplorerCommonStateService.getFilterSettings$(), @@ -433,10 +437,11 @@ export const Explorer: FC = ({ useEffect(() => { if (!noJobsSelected) { - getSourceIndicesWithGeoFields(selectedJobs, dataViewsService) - .then((sourceIndicesWithGeoFieldsMap) => - setSourceIndicesWithGeoFields(sourceIndicesWithGeoFieldsMap) - ) + getDataViewsAndIndicesWithGeoFields(selectedJobs, dataViewsService) + .then(({ sourceIndicesWithGeoFieldsMap, dataViews: dv }) => { + setSourceIndicesWithGeoFields(sourceIndicesWithGeoFieldsMap); + setDataViews(dv); + }) .catch(console.error); // eslint-disable-line no-console } // eslint-disable-next-line react-hooks/exhaustive-deps @@ -444,7 +449,7 @@ export const Explorer: FC = ({ if (noJobsSelected && !loading) { return ( - + ); @@ -452,7 +457,7 @@ export const Explorer: FC = ({ if (!hasResultsWithAnomalies && !isDataLoading && !hasActiveFilter) { return ( - + ); @@ -619,6 +624,7 @@ export const Explorer: FC = ({ return ( , dataViewsService: DataViewsContract -): Promise { +): Promise<{ sourceIndicesWithGeoFieldsMap: SourceIndicesWithGeoFields; dataViews: DataView[] }> { const sourceIndicesWithGeoFieldsMap: SourceIndicesWithGeoFields = {}; + // Avoid searching for data view again if previous job already has same source index + const dataViewsMap = new Map(); // Go through selected jobs if (Array.isArray(selectedJobs)) { - await asyncForEach(selectedJobs, async (job) => { + for (const job of selectedJobs) { let sourceIndices; let jobId: string; if (isExplorerJob(job)) { @@ -651,12 +652,18 @@ export async function getSourceIndicesWithGeoFields( } if (Array.isArray(sourceIndices)) { - // Check fields for each source index to see if it has geo fields - await asyncForEach(sourceIndices, async (sourceIndex) => { - const dataViewId = await getDataViewIdFromName(sourceIndex); + for (const sourceIndex of sourceIndices) { + const cachedDV = dataViewsMap.get(sourceIndex); + const dataViewId = cachedDV?.id ?? (await getDataViewIdFromName(sourceIndex)); if (dataViewId) { - const dataView = await dataViewsService.get(dataViewId); + const dataView = cachedDV ?? (await dataViewsService.get(dataViewId)); + + if (!dataView) { + continue; + } + dataViewsMap.set(sourceIndex, dataView); + const geoFields = [ ...dataView.fields.getByType(ES_FIELD_TYPES.GEO_POINT), ...dataView.fields.getByType(ES_FIELD_TYPES.GEO_SHAPE), @@ -672,9 +679,9 @@ export async function getSourceIndicesWithGeoFields( ); } } - }); + } } - }); + } } - return sourceIndicesWithGeoFieldsMap; + return { sourceIndicesWithGeoFieldsMap, dataViews: [...dataViewsMap.values()] }; } diff --git a/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer.js b/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer.js index a73926921fd27..b7b8b7fe6e77b 100644 --- a/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer.js +++ b/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer.js @@ -87,7 +87,7 @@ import { isMetricDetector } from './get_function_description'; import { getViewableDetectors } from './timeseriesexplorer_utils/get_viewable_detectors'; import { TimeseriesexplorerChartDataError } from './components/timeseriesexplorer_chart_data_error'; import { ExplorerNoJobsSelected } from '../explorer/components'; -import { getSourceIndicesWithGeoFields } from '../explorer/explorer_utils'; +import { getDataViewsAndIndicesWithGeoFields } from '../explorer/explorer_utils'; // Used to indicate the chart is being plotted across // all partition field values, where the cardinality of the field cannot be @@ -849,8 +849,8 @@ export class TimeSeriesExplorer extends React.Component { if (previousProps === undefined || previousProps.selectedJobId !== this.props.selectedJobId) { const selectedJob = mlJobService.getJob(this.props.selectedJobId); this.contextChartSelectedInitCallDone = false; - getSourceIndicesWithGeoFields([selectedJob], this.props.dataViewsService) - .then((getSourceIndicesWithGeoFieldsResp) => + getDataViewsAndIndicesWithGeoFields([selectedJob], this.props.dataViewsService) + .then(({ getSourceIndicesWithGeoFieldsResp }) => this.setState( { fullRefresh: false, From 6c80b49a151dc1bed4fe58b15d75d2eaa7a31013 Mon Sep 17 00:00:00 2001 From: Steph Milovic Date: Thu, 15 Jun 2023 13:05:39 -0600 Subject: [PATCH 32/59] [Security solution] Implement dashboard to track Gen AI Token Usage (#159075) --- .../sub_action_connector.ts | 6 + x-pack/plugins/actions/tsconfig.json | 2 + .../common/gen_ai/constants.ts | 1 + .../stack_connectors/common/gen_ai/schema.ts | 9 + .../stack_connectors/common/gen_ai/types.ts | 4 + .../public/connector_types/gen_ai/api.test.ts | 37 ++ .../public/connector_types/gen_ai/api.ts | 34 ++ .../connector_types/gen_ai/connector.test.tsx | 159 ++++--- .../connector_types/gen_ai/connector.tsx | 155 ++----- .../connector_types/gen_ai/constants.ts | 24 -- .../connector_types/gen_ai/constants.tsx | 148 +++++++ .../connector_types/gen_ai/params.test.tsx | 23 +- .../connector_types/gen_ai/translations.ts | 20 +- .../gen_ai/use_get_dashboard.test.ts | 130 ++++++ .../gen_ai/use_get_dashboard.ts | 120 ++++++ .../gen_ai/create_dashboard.test.ts | 82 ++++ .../gen_ai/create_dashboard.ts | 67 +++ .../connector_types/gen_ai/dashboard.ts | 407 ++++++++++++++++++ .../connector_types/gen_ai/gen_ai.test.ts | 78 ++++ .../server/connector_types/gen_ai/gen_ai.ts | 42 ++ x-pack/plugins/stack_connectors/tsconfig.json | 6 + .../plugins/triggers_actions_ui/kibana.jsonc | 3 +- .../public/application/app.tsx | 2 + .../public/application/connectors_app.tsx | 2 + .../public/common/lib/data_apis.ts | 1 + .../common/lib/kibana/kibana_react.mock.ts | 2 + .../triggers_actions_ui/public/plugin.ts | 4 + .../plugins/triggers_actions_ui/tsconfig.json | 1 + .../common/lib/object_remover.ts | 2 +- .../tests/actions/connector_types/gen_ai.ts | 126 +++++- 30 files changed, 1475 insertions(+), 222 deletions(-) create mode 100644 x-pack/plugins/stack_connectors/public/connector_types/gen_ai/api.test.ts create mode 100644 x-pack/plugins/stack_connectors/public/connector_types/gen_ai/api.ts delete mode 100644 x-pack/plugins/stack_connectors/public/connector_types/gen_ai/constants.ts create mode 100644 x-pack/plugins/stack_connectors/public/connector_types/gen_ai/constants.tsx create mode 100644 x-pack/plugins/stack_connectors/public/connector_types/gen_ai/use_get_dashboard.test.ts create mode 100644 x-pack/plugins/stack_connectors/public/connector_types/gen_ai/use_get_dashboard.ts create mode 100644 x-pack/plugins/stack_connectors/server/connector_types/gen_ai/create_dashboard.test.ts create mode 100644 x-pack/plugins/stack_connectors/server/connector_types/gen_ai/create_dashboard.ts create mode 100644 x-pack/plugins/stack_connectors/server/connector_types/gen_ai/dashboard.ts diff --git a/x-pack/plugins/actions/server/sub_action_framework/sub_action_connector.ts b/x-pack/plugins/actions/server/sub_action_framework/sub_action_connector.ts index 043eb3585c3ae..a795b0eedc2ac 100644 --- a/x-pack/plugins/actions/server/sub_action_framework/sub_action_connector.ts +++ b/x-pack/plugins/actions/server/sub_action_framework/sub_action_connector.ts @@ -9,6 +9,8 @@ import { isPlainObject, isEmpty } from 'lodash'; import { Type } from '@kbn/config-schema'; import { Logger } from '@kbn/logging'; import axios, { AxiosInstance, AxiosResponse, AxiosError, AxiosRequestHeaders } from 'axios'; +import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; import { assertURL } from './helpers/validators'; import { ActionsConfigurationUtilities } from '../actions_config'; import { SubAction, SubActionRequestParams } from './types'; @@ -28,6 +30,8 @@ export abstract class SubActionConnector { private subActions: Map = new Map(); private configurationUtilities: ActionsConfigurationUtilities; protected logger: Logger; + protected esClient: ElasticsearchClient; + protected savedObjectsClient: SavedObjectsClientContract; protected connector: ServiceParams['connector']; protected config: Config; protected secrets: Secrets; @@ -37,6 +41,8 @@ export abstract class SubActionConnector { this.logger = params.logger; this.config = params.config; this.secrets = params.secrets; + this.savedObjectsClient = params.services.savedObjectsClient; + this.esClient = params.services.scopedClusterClient; this.configurationUtilities = params.configurationUtilities; this.axiosInstance = axios.create(); } diff --git a/x-pack/plugins/actions/tsconfig.json b/x-pack/plugins/actions/tsconfig.json index 596d793c6ea8f..5644f3ed6d849 100644 --- a/x-pack/plugins/actions/tsconfig.json +++ b/x-pack/plugins/actions/tsconfig.json @@ -36,6 +36,8 @@ "@kbn/core-http-server-mocks", "@kbn/tinymath", "@kbn/core-saved-objects-utils-server", + "@kbn/core-saved-objects-api-server", + "@kbn/core-elasticsearch-server", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/stack_connectors/common/gen_ai/constants.ts b/x-pack/plugins/stack_connectors/common/gen_ai/constants.ts index 8ed871ef4575a..81038092fd9f2 100644 --- a/x-pack/plugins/stack_connectors/common/gen_ai/constants.ts +++ b/x-pack/plugins/stack_connectors/common/gen_ai/constants.ts @@ -16,6 +16,7 @@ export const GEN_AI_TITLE = i18n.translate( export const GEN_AI_CONNECTOR_ID = '.gen-ai'; export enum SUB_ACTION { RUN = 'run', + DASHBOARD = 'getDashboard', TEST = 'test', } export enum OpenAiProviderType { diff --git a/x-pack/plugins/stack_connectors/common/gen_ai/schema.ts b/x-pack/plugins/stack_connectors/common/gen_ai/schema.ts index b2c7f3a7db963..6ff201b3d7d6e 100644 --- a/x-pack/plugins/stack_connectors/common/gen_ai/schema.ts +++ b/x-pack/plugins/stack_connectors/common/gen_ai/schema.ts @@ -44,3 +44,12 @@ export const GenAiRunActionResponseSchema = schema.object( }, { unknowns: 'ignore' } ); + +// Run action schema +export const GenAiDashboardActionParamsSchema = schema.object({ + dashboardId: schema.string(), +}); + +export const GenAiDashboardActionResponseSchema = schema.object({ + available: schema.boolean(), +}); diff --git a/x-pack/plugins/stack_connectors/common/gen_ai/types.ts b/x-pack/plugins/stack_connectors/common/gen_ai/types.ts index 9f27aafa0b3a9..f509d85641189 100644 --- a/x-pack/plugins/stack_connectors/common/gen_ai/types.ts +++ b/x-pack/plugins/stack_connectors/common/gen_ai/types.ts @@ -11,9 +11,13 @@ import { GenAiSecretsSchema, GenAiRunActionParamsSchema, GenAiRunActionResponseSchema, + GenAiDashboardActionParamsSchema, + GenAiDashboardActionResponseSchema, } from './schema'; export type GenAiConfig = TypeOf; export type GenAiSecrets = TypeOf; export type GenAiRunActionParams = TypeOf; export type GenAiRunActionResponse = TypeOf; +export type GenAiDashboardActionParams = TypeOf; +export type GenAiDashboardActionResponse = TypeOf; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/api.test.ts b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/api.test.ts new file mode 100644 index 0000000000000..cf1197c487cd9 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/api.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 { httpServiceMock } from '@kbn/core-http-browser-mocks'; +import { getDashboard } from './api'; +import { SUB_ACTION } from '../../../common/gen_ai/constants'; +const response = { + available: true, +}; + +describe('Gen AI Dashboard API', () => { + const http = httpServiceMock.createStartContract(); + + beforeEach(() => jest.resetAllMocks()); + describe('getDashboard', () => { + test('should call get dashboard API', async () => { + const abortCtrl = new AbortController(); + http.post.mockResolvedValueOnce(response); + const res = await getDashboard({ + http, + signal: abortCtrl.signal, + connectorId: 'te/st', + dashboardId: 'cool-dashboard', + }); + + expect(res).toEqual(response); + expect(http.post).toHaveBeenCalledWith('/api/actions/connector/te%2Fst/_execute', { + body: `{"params":{"subAction":"${SUB_ACTION.DASHBOARD}","subActionParams":{"dashboardId":"cool-dashboard"}}}`, + signal: abortCtrl.signal, + }); + }); + }); +}); diff --git a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/api.ts b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/api.ts new file mode 100644 index 0000000000000..da35d608239b1 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/api.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { HttpSetup } from '@kbn/core-http-browser'; +import { ActionTypeExecutorResult, BASE_ACTION_API_PATH } from '@kbn/actions-plugin/common'; +import { SUB_ACTION } from '../../../common/gen_ai/constants'; +import { ConnectorExecutorResult, rewriteResponseToCamelCase } from '../lib/rewrite_response_body'; + +export async function getDashboard({ + http, + signal, + dashboardId, + connectorId, +}: { + http: HttpSetup; + signal: AbortSignal; + connectorId: string; + dashboardId: string; +}): Promise> { + const res = await http.post>( + `${BASE_ACTION_API_PATH}/connector/${encodeURIComponent(connectorId)}/_execute`, + { + body: JSON.stringify({ + params: { subAction: SUB_ACTION.DASHBOARD, subActionParams: { dashboardId } }, + }), + signal, + } + ); + return rewriteResponseToCamelCase(res); +} diff --git a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/connector.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/connector.test.tsx index 5376daa5027ba..59d47bdb1b4ac 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/connector.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/connector.test.tsx @@ -8,27 +8,54 @@ import React from 'react'; import GenerativeAiConnectorFields from './connector'; import { ConnectorFormTestProvider } from '../lib/test_utils'; -import { act, render, waitFor } from '@testing-library/react'; +import { act, fireEvent, render, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { OpenAiProviderType } from '../../../common/gen_ai/constants'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; +import { useGetDashboard } from './use_get_dashboard'; + +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); +jest.mock('./use_get_dashboard'); + +const useKibanaMock = useKibana as jest.Mocked; +const mockDashboard = useGetDashboard as jest.Mock; +const openAiConnector = { + actionTypeId: '.gen-ai', + name: 'genAi', + id: '123', + config: { + apiUrl: 'https://openaiurl.com', + apiProvider: OpenAiProviderType.OpenAi, + }, + secrets: { + apiKey: 'thats-a-nice-looking-key', + }, + isDeprecated: false, +}; +const azureConnector = { + ...openAiConnector, + config: { + apiUrl: 'https://azureaiurl.com', + apiProvider: OpenAiProviderType.AzureAi, + }, + secrets: { + apiKey: 'thats-a-nice-looking-key', + }, +}; + +const navigateToUrl = jest.fn(); describe('GenerativeAiConnectorFields renders', () => { + beforeEach(() => { + jest.clearAllMocks(); + useKibanaMock().services.application.navigateToUrl = navigateToUrl; + mockDashboard.mockImplementation(({ connectorId }) => ({ + dashboardUrl: `https://dashboardurl.com/${connectorId}`, + })); + }); test('open ai connector fields are rendered', async () => { - const actionConnector = { - actionTypeId: '.gen-ai', - name: 'genAi', - config: { - apiUrl: 'https://openaiurl.com', - apiProvider: OpenAiProviderType.OpenAi, - }, - secrets: { - apiKey: 'thats-a-nice-looking-key', - }, - isDeprecated: false, - }; - const { getAllByTestId } = render( - + { ); expect(getAllByTestId('config.apiUrl-input')[0]).toBeInTheDocument(); - expect(getAllByTestId('config.apiUrl-input')[0]).toHaveValue(actionConnector.config.apiUrl); + expect(getAllByTestId('config.apiUrl-input')[0]).toHaveValue(openAiConnector.config.apiUrl); expect(getAllByTestId('config.apiProvider-select')[0]).toBeInTheDocument(); expect(getAllByTestId('config.apiProvider-select')[0]).toHaveValue( - actionConnector.config.apiProvider + openAiConnector.config.apiProvider ); expect(getAllByTestId('open-ai-api-doc')[0]).toBeInTheDocument(); expect(getAllByTestId('open-ai-api-keys-doc')[0]).toBeInTheDocument(); }); test('azure ai connector fields are rendered', async () => { - const actionConnector = { - actionTypeId: '.gen-ai', - name: 'genAi', - config: { - apiUrl: 'https://azureaiurl.com', - apiProvider: OpenAiProviderType.AzureAi, - }, - secrets: { - apiKey: 'thats-a-nice-looking-key', - }, - isDeprecated: false, - }; - const { getAllByTestId } = render( - + { /> ); - expect(getAllByTestId('config.apiUrl-input')[0]).toBeInTheDocument(); - expect(getAllByTestId('config.apiUrl-input')[0]).toHaveValue(actionConnector.config.apiUrl); + expect(getAllByTestId('config.apiUrl-input')[0]).toHaveValue(azureConnector.config.apiUrl); expect(getAllByTestId('config.apiProvider-select')[0]).toBeInTheDocument(); expect(getAllByTestId('config.apiProvider-select')[0]).toHaveValue( - actionConnector.config.apiProvider + azureConnector.config.apiProvider ); expect(getAllByTestId('azure-ai-api-doc')[0]).toBeInTheDocument(); expect(getAllByTestId('azure-ai-api-keys-doc')[0]).toBeInTheDocument(); }); + describe('Dashboard link', () => { + it('Does not render if isEdit is false and dashboardUrl is defined', async () => { + const { queryByTestId } = render( + + {}} + /> + + ); + expect(queryByTestId('link-gen-ai-token-dashboard')).not.toBeInTheDocument(); + }); + it('Does not render if isEdit is true and dashboardUrl is null', async () => { + mockDashboard.mockImplementation((id: string) => ({ + dashboardUrl: null, + })); + const { queryByTestId } = render( + + {}} + /> + + ); + expect(queryByTestId('link-gen-ai-token-dashboard')).not.toBeInTheDocument(); + }); + it('Renders if isEdit is true and dashboardUrl is defined', async () => { + const { getByTestId } = render( + + {}} + /> + + ); + expect(getByTestId('link-gen-ai-token-dashboard')).toBeInTheDocument(); + }); + it('On click triggers redirect with correct saved object id', async () => { + const { getByTestId } = render( + + {}} + /> + + ); + fireEvent.click(getByTestId('link-gen-ai-token-dashboard')); + expect(navigateToUrl).toHaveBeenCalledWith(`https://dashboardurl.com/123`); + }); + }); describe('Validation', () => { const onSubmit = jest.fn(); - const actionConnector = { - actionTypeId: '.gen-ai', - name: 'genAi', - config: { - apiUrl: 'https://openaiurl.com', - apiProvider: OpenAiProviderType.OpenAi, - }, - secrets: { - apiKey: 'thats-a-nice-looking-key', - }, - isDeprecated: false, - }; beforeEach(() => { jest.clearAllMocks(); @@ -101,7 +156,7 @@ describe('GenerativeAiConnectorFields renders', () => { it('connector validation succeeds when connector config is valid', async () => { const { getByTestId } = render( - + { }); expect(onSubmit).toBeCalledWith({ - data: actionConnector, + data: openAiConnector, isValid: true, }); }); it('validates correctly if the apiUrl is empty', async () => { const connector = { - ...actionConnector, + ...openAiConnector, config: { - ...actionConnector.config, + ...openAiConnector.config, apiUrl: '', }, }; @@ -159,9 +214,9 @@ describe('GenerativeAiConnectorFields renders', () => { ]; it.each(tests)('validates correctly %p', async (field, value) => { const connector = { - ...actionConnector, + ...openAiConnector, config: { - ...actionConnector.config, + ...openAiConnector.config, headers: [], }, }; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/connector.tsx b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/connector.tsx index f75edba2d57b4..99b8bb701e60e 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/connector.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/connector.tsx @@ -5,151 +5,59 @@ * 2.0. */ -import React, { useMemo } from 'react'; +import React, { useCallback, useMemo } from 'react'; import { ActionConnectorFieldsProps, - ConfigFieldSchema, - SecretsFieldSchema, SimpleConnectorForm, } from '@kbn/triggers-actions-ui-plugin/public'; import { SelectField } from '@kbn/es-ui-shared-plugin/static/forms/components'; import { EuiLink, EuiSpacer } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n-react'; import { UseField, useFormContext, useFormData, } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; +import { useGetDashboard } from './use_get_dashboard'; import { OpenAiProviderType } from '../../../common/gen_ai/constants'; import * as i18n from './translations'; -import { DEFAULT_URL, DEFAULT_URL_AZURE } from './constants'; +import { + azureAiConfig, + azureAiSecrets, + openAiConfig, + openAiSecrets, + providerOptions, +} from './constants'; const { emptyField } = fieldValidators; -const openAiConfig: ConfigFieldSchema[] = [ - { - id: 'apiUrl', - label: i18n.API_URL_LABEL, - isUrlField: true, - defaultValue: DEFAULT_URL, - helpText: ( - - {`${i18n.OPEN_AI} ${i18n.DOCUMENTATION}`} - - ), - }} - /> - ), - }, -]; - -const azureAiConfig: ConfigFieldSchema[] = [ - { - id: 'apiUrl', - label: i18n.API_URL_LABEL, - isUrlField: true, - defaultValue: DEFAULT_URL_AZURE, - helpText: ( - - {`${i18n.AZURE_AI} ${i18n.DOCUMENTATION}`} - - ), - }} - /> - ), - }, -]; - -const openAiSecrets: SecretsFieldSchema[] = [ - { - id: 'apiKey', - label: i18n.API_KEY_LABEL, - isPasswordField: true, - helpText: ( - - {`${i18n.OPEN_AI} ${i18n.DOCUMENTATION}`} - - ), - }} - /> - ), - }, -]; - -const azureAiSecrets: SecretsFieldSchema[] = [ - { - id: 'apiKey', - label: i18n.API_KEY_LABEL, - isPasswordField: true, - helpText: ( - - {`${i18n.AZURE_AI} ${i18n.DOCUMENTATION}`} - - ), - }} - /> - ), - }, -]; - -const providerOptions = [ - { - value: OpenAiProviderType.OpenAi, - text: i18n.OPEN_AI, - label: i18n.OPEN_AI, - }, - { - value: OpenAiProviderType.AzureAi, - text: i18n.AZURE_AI, - label: i18n.AZURE_AI, - }, -]; - const GenerativeAiConnectorFields: React.FC = ({ readOnly, isEdit, }) => { const { getFieldDefaultValue } = useFormContext(); - const [{ config }] = useFormData({ + const [{ config, id, name }] = useFormData({ watch: ['config.apiProvider'], }); + const { + services: { + application: { navigateToUrl }, + }, + } = useKibana(); + + const { dashboardUrl } = useGetDashboard({ connectorId: id }); + + const onClick = useCallback( + (e) => { + e.preventDefault(); + if (dashboardUrl) { + navigateToUrl(dashboardUrl); + } + }, + [dashboardUrl, navigateToUrl] + ); + const selectedProviderDefaultValue = useMemo( () => getFieldDefaultValue('config.apiProvider') ?? OpenAiProviderType.OpenAi, @@ -199,6 +107,11 @@ const GenerativeAiConnectorFields: React.FC = ({ secretsFormSchema={azureAiSecrets} /> )} + {isEdit && dashboardUrl != null && ( + + {i18n.USAGE_DASHBOARD_LINK(selectedProviderDefaultValue, name)} + + )} ); }; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/constants.ts b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/constants.ts deleted file mode 100644 index 9fb836c8aae78..0000000000000 --- a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/constants.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export const DEFAULT_URL = 'https://api.openai.com/v1/chat/completions' as const; -export const DEFAULT_URL_AZURE = - 'https://{your-resource-name}.openai.azure.com/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}' as const; - -export const DEFAULT_BODY = `{ - "model":"gpt-3.5-turbo", - "messages": [{ - "role":"user", - "content":"Hello world" - }] -}`; -export const DEFAULT_BODY_AZURE = `{ - "messages": [{ - "role":"user", - "content":"Hello world" - }] -}`; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/constants.tsx b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/constants.tsx new file mode 100644 index 0000000000000..706abf215295a --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/constants.tsx @@ -0,0 +1,148 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { ConfigFieldSchema, SecretsFieldSchema } from '@kbn/triggers-actions-ui-plugin/public'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiLink } from '@elastic/eui'; +import { OpenAiProviderType } from '../../../common/gen_ai/constants'; +import * as i18n from './translations'; + +export const DEFAULT_URL = 'https://api.openai.com/v1/chat/completions' as const; +export const DEFAULT_URL_AZURE = + 'https://{your-resource-name}.openai.azure.com/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}' as const; + +export const DEFAULT_BODY = `{ + "model":"gpt-3.5-turbo", + "messages": [{ + "role":"user", + "content":"Hello world" + }] +}`; +export const DEFAULT_BODY_AZURE = `{ + "messages": [{ + "role":"user", + "content":"Hello world" + }] +}`; + +export const openAiConfig: ConfigFieldSchema[] = [ + { + id: 'apiUrl', + label: i18n.API_URL_LABEL, + isUrlField: true, + defaultValue: DEFAULT_URL, + helpText: ( + + {`${i18n.OPEN_AI} ${i18n.DOCUMENTATION}`} + + ), + }} + /> + ), + }, +]; + +export const azureAiConfig: ConfigFieldSchema[] = [ + { + id: 'apiUrl', + label: i18n.API_URL_LABEL, + isUrlField: true, + defaultValue: DEFAULT_URL_AZURE, + helpText: ( + + {`${i18n.AZURE_AI} ${i18n.DOCUMENTATION}`} + + ), + }} + /> + ), + }, +]; + +export const openAiSecrets: SecretsFieldSchema[] = [ + { + id: 'apiKey', + label: i18n.API_KEY_LABEL, + isPasswordField: true, + helpText: ( + + {`${i18n.OPEN_AI} ${i18n.DOCUMENTATION}`} + + ), + }} + /> + ), + }, +]; + +export const azureAiSecrets: SecretsFieldSchema[] = [ + { + id: 'apiKey', + label: i18n.API_KEY_LABEL, + isPasswordField: true, + helpText: ( + + {`${i18n.AZURE_AI} ${i18n.DOCUMENTATION}`} + + ), + }} + /> + ), + }, +]; + +export const providerOptions = [ + { + value: OpenAiProviderType.OpenAi, + text: i18n.OPEN_AI, + label: i18n.OPEN_AI, + }, + { + value: OpenAiProviderType.AzureAi, + text: i18n.AZURE_AI, + label: i18n.AZURE_AI, + }, +]; + +export const getDashboardId = (spaceId: string): string => `generative-ai-token-usage-${spaceId}`; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/params.test.tsx index a1260e32c841f..f37ab8b39d573 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/params.test.tsx @@ -33,14 +33,12 @@ const messageVariables = [ describe('Gen AI Params Fields renders', () => { test('all params fields are rendered', () => { - const actionParams = { - subAction: SUB_ACTION.RUN, - subActionParams: { body: '{"message": "test"}' }, - }; - const { getByTestId } = render( {}} index={0} @@ -118,17 +116,16 @@ describe('Gen AI Params Fields renders', () => { }); it('calls editAction function with the correct arguments ', () => { - const actionParams = { - subAction: SUB_ACTION.RUN, - subActionParams: { - body: '{"key": "value"}', - }, - }; const editAction = jest.fn(); const errors = {}; const { getByTestId } = render( + i18n.translate('xpack.stackConnectors.components.genAi.dashboardLink', { + values: { apiProvider, connectorName }, + defaultMessage: 'View {apiProvider} Usage Dashboard for "{ connectorName }" Connector', + }); + +export const GET_DASHBOARD_API_ERROR = i18n.translate( + 'xpack.stackConnectors.components.genAi.error.dashboardApiError', + { + defaultMessage: 'Error finding Generative AI Token Usage Dashboard.', + } +); diff --git a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/use_get_dashboard.test.ts b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/use_get_dashboard.test.ts new file mode 100644 index 0000000000000..255e2aba1b000 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/use_get_dashboard.test.ts @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { useGetDashboard } from './use_get_dashboard'; +import { getDashboard } from './api'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; + +jest.mock('./api'); +const mockToasts = { addDanger: jest.fn() }; +const mockSpace = { + id: 'space', + name: 'space', + disabledFeatures: [], +}; +const mockHttp = jest.fn(); +const mockGetRedirectUrl = jest.fn(); +jest.mock('@kbn/triggers-actions-ui-plugin/public'); +const connectorId = '123'; + +const mockServices = { + http: mockHttp, + notifications: { toasts: mockToasts }, + dashboard: { + locator: { + getRedirectUrl: mockGetRedirectUrl.mockImplementation( + ({ dashboardId }) => `http://localhost:5601/app/dashboards#/view/${dashboardId}` + ), + }, + }, + spaces: { + getActiveSpace: jest.fn().mockResolvedValue(mockSpace), + }, +}; +const mockDashboard = getDashboard as jest.Mock; +const mockKibana = useKibana as jest.Mock; + +describe('useGetDashboard_function', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockDashboard.mockResolvedValue({ data: { available: true } }); + mockKibana.mockReturnValue({ + services: mockServices, + }); + }); + + it('fetches the dashboard and sets the dashboard URL', async () => { + const { result, waitForNextUpdate } = renderHook(() => useGetDashboard({ connectorId })); + await waitForNextUpdate(); + expect(mockDashboard).toHaveBeenCalledWith( + expect.objectContaining({ + connectorId, + dashboardId: 'generative-ai-token-usage-space', + }) + ); + expect(mockGetRedirectUrl).toHaveBeenCalledWith({ + query: { + language: 'kuery', + query: `kibana.saved_objects: { id : ${connectorId} }`, + }, + dashboardId: 'generative-ai-token-usage-space', + }); + expect(result.current.isLoading).toBe(false); + expect(result.current.dashboardUrl).toBe( + 'http://localhost:5601/app/dashboards#/view/generative-ai-token-usage-space' + ); + }); + + it('handles the case where the dashboard is not available.', async () => { + mockDashboard.mockResolvedValue({ data: { available: false } }); + const { result, waitForNextUpdate } = renderHook(() => useGetDashboard({ connectorId })); + await waitForNextUpdate(); + expect(mockDashboard).toHaveBeenCalledWith( + expect.objectContaining({ + connectorId, + dashboardId: 'generative-ai-token-usage-space', + }) + ); + expect(mockGetRedirectUrl).not.toHaveBeenCalled(); + + expect(result.current.isLoading).toBe(false); + expect(result.current.dashboardUrl).toBe(null); + }); + + it('handles the case where the spaces API is not available.', async () => { + mockKibana.mockReturnValue({ + services: { ...mockServices, spaces: null }, + }); + + const { result } = renderHook(() => useGetDashboard({ connectorId })); + expect(mockDashboard).not.toHaveBeenCalled(); + expect(mockGetRedirectUrl).not.toHaveBeenCalled(); + expect(result.current.isLoading).toBe(false); + expect(result.current.dashboardUrl).toBe(null); + }); + + it('handles the case where connectorId is empty string', async () => { + const { result, waitForNextUpdate } = renderHook(() => useGetDashboard({ connectorId: '' })); + await waitForNextUpdate(); + expect(mockDashboard).not.toHaveBeenCalled(); + expect(mockGetRedirectUrl).not.toHaveBeenCalled(); + expect(result.current.isLoading).toBe(false); + expect(result.current.dashboardUrl).toBe(null); + }); + + it('handles the case where the dashboard locator is not available.', async () => { + mockKibana.mockReturnValue({ + services: { ...mockServices, dashboard: {} }, + }); + const { result, waitForNextUpdate } = renderHook(() => useGetDashboard({ connectorId })); + await waitForNextUpdate(); + expect(result.current.isLoading).toBe(false); + expect(result.current.dashboardUrl).toBe(null); + }); + + it('correctly handles errors and displays the appropriate toast messages.', async () => { + mockDashboard.mockRejectedValue(new Error('Error fetching dashboard')); + const { result, waitForNextUpdate } = renderHook(() => useGetDashboard({ connectorId })); + await waitForNextUpdate(); + expect(result.current.isLoading).toBe(false); + expect(mockToasts.addDanger).toHaveBeenCalledWith({ + title: 'Error finding Generative AI Token Usage Dashboard.', + text: 'Error fetching dashboard', + }); + }); +}); diff --git a/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/use_get_dashboard.ts b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/use_get_dashboard.ts new file mode 100644 index 0000000000000..557cf2e331ca6 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/gen_ai/use_get_dashboard.ts @@ -0,0 +1,120 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { useState, useEffect, useRef, useCallback } from 'react'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; +import { getDashboardId } from './constants'; +import { getDashboard } from './api'; +import * as i18n from './translations'; + +interface Props { + connectorId: string; +} + +export interface UseGetDashboard { + dashboardUrl: string | null; + isLoading: boolean; +} + +export const useGetDashboard = ({ connectorId }: Props): UseGetDashboard => { + const { + dashboard, + http, + notifications: { toasts }, + spaces, + } = useKibana().services; + + const [spaceId, setSpaceId] = useState(null); + + useEffect(() => { + let didCancel = false; + if (spaces) { + spaces.getActiveSpace().then((space) => { + if (!didCancel) setSpaceId(space.id); + }); + } + + return () => { + didCancel = true; + }; + }, [spaces]); + + const [isLoading, setIsLoading] = useState(false); + const [dashboardUrl, setDashboardUrl] = useState(null); + const [dashboardCheckComplete, setDashboardCheckComplete] = useState(false); + const abortCtrl = useRef(new AbortController()); + + const setUrl = useCallback( + (dashboardId: string) => { + const url = dashboard?.locator?.getRedirectUrl({ + query: { + language: 'kuery', + query: `kibana.saved_objects: { id : ${connectorId} }`, + }, + dashboardId, + }); + setDashboardUrl(url ?? null); + }, + [connectorId, dashboard?.locator] + ); + + useEffect(() => { + let didCancel = false; + const fetchData = async (dashboardId: string) => { + abortCtrl.current = new AbortController(); + if (!didCancel) setIsLoading(true); + try { + const res = await getDashboard({ + http, + signal: abortCtrl.current.signal, + connectorId, + dashboardId, + }); + + if (!didCancel) { + setDashboardCheckComplete(true); + setIsLoading(false); + if (res.data?.available) { + setUrl(dashboardId); + } + + if (res.status && res.status === 'error') { + toasts.addDanger({ + title: i18n.GET_DASHBOARD_API_ERROR, + text: `${res.serviceMessage ?? res.message}`, + }); + } + } + } catch (error) { + if (!didCancel) { + setDashboardCheckComplete(true); + setIsLoading(false); + toasts.addDanger({ + title: i18n.GET_DASHBOARD_API_ERROR, + text: error.message, + }); + } + } + }; + + if (spaceId != null && connectorId.length > 0 && !dashboardCheckComplete) { + abortCtrl.current.abort(); + fetchData(getDashboardId(spaceId)); + } + + return () => { + didCancel = true; + setIsLoading(false); + abortCtrl.current.abort(); + }; + }, [connectorId, dashboardCheckComplete, dashboardUrl, http, setUrl, spaceId, toasts]); + + return { + isLoading, + dashboardUrl, + }; +}; diff --git a/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/create_dashboard.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/create_dashboard.test.ts new file mode 100644 index 0000000000000..b13fa276beacb --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/create_dashboard.test.ts @@ -0,0 +1,82 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { initGenAiDashboard } from './create_dashboard'; +import { getGenAiDashboard } from './dashboard'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; +import { loggingSystemMock } from '@kbn/core-logging-server-mocks'; +import { Logger } from '@kbn/logging'; + +jest.mock('uuid', () => ({ + v4: jest.fn().mockReturnValue('12345'), +})); + +const logger = loggingSystemMock.create().get() as jest.Mocked; + +const savedObjectsClient = savedObjectsClientMock.create(); +describe('createDashboard', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('fetches the Gen Ai Dashboard saved object', async () => { + const dashboardId = 'test-dashboard-id'; + const result = await initGenAiDashboard({ logger, savedObjectsClient, dashboardId }); + expect(result.success).toBe(true); + expect(logger.error).not.toHaveBeenCalled(); + expect(savedObjectsClient.get).toHaveBeenCalledWith('dashboard', dashboardId); + }); + + it('creates the Gen Ai Dashboard saved object when the dashboard saved object does not exist', async () => { + const dashboardId = 'test-dashboard-id'; + const soClient = { + ...savedObjectsClient, + get: jest.fn().mockRejectedValue({ + output: { + statusCode: 404, + payload: { + statusCode: 404, + error: 'Not Found', + message: 'Saved object [dashboard/generative-ai-token-usage-default] not found', + }, + headers: {}, + }, + }), + }; + const result = await initGenAiDashboard({ logger, savedObjectsClient: soClient, dashboardId }); + + expect(soClient.get).toHaveBeenCalledWith('dashboard', dashboardId); + expect(soClient.create).toHaveBeenCalledWith( + 'dashboard', + getGenAiDashboard(dashboardId).attributes, + { overwrite: true, id: dashboardId } + ); + expect(result.success).toBe(true); + }); + + it('handles an error when fetching the dashboard saved object', async () => { + const soClient = { + ...savedObjectsClient, + get: jest.fn().mockRejectedValue({ + output: { + statusCode: 500, + payload: { + statusCode: 500, + error: 'Internal Server Error', + message: 'Error happened', + }, + headers: {}, + }, + }), + }; + const dashboardId = 'test-dashboard-id'; + const result = await initGenAiDashboard({ logger, savedObjectsClient: soClient, dashboardId }); + expect(result.success).toBe(false); + expect(result.error?.message).toBe('Internal Server Error: Error happened'); + expect(result.error?.statusCode).toBe(500); + expect(soClient.get).toHaveBeenCalledWith('dashboard', dashboardId); + }); +}); diff --git a/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/create_dashboard.ts b/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/create_dashboard.ts new file mode 100644 index 0000000000000..d1d09a2e50afd --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/create_dashboard.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; + +import { DashboardAttributes } from '@kbn/dashboard-plugin/common'; +import { Logger } from '@kbn/logging'; +import { getGenAiDashboard } from './dashboard'; + +export interface OutputError { + message: string; + statusCode: number; +} + +export const initGenAiDashboard = async ({ + logger, + savedObjectsClient, + dashboardId, +}: { + logger: Logger; + savedObjectsClient: SavedObjectsClientContract; + dashboardId: string; +}): Promise<{ + success: boolean; + error?: OutputError; +}> => { + try { + await savedObjectsClient.get('dashboard', dashboardId); + return { + success: true, + }; + } catch (error) { + // if 404, does not yet exist. do not error, continue to create + if (error.output.statusCode !== 404) { + return { + success: false, + error: { + message: `${error.output.payload.error}${ + error.output.payload.message ? `: ${error.output.payload.message}` : '' + }`, + statusCode: error.output.statusCode, + }, + }; + } + } + + try { + await savedObjectsClient.create( + 'dashboard', + getGenAiDashboard(dashboardId).attributes, + { + overwrite: true, + id: dashboardId, + } + ); + logger.info(`Successfully created Gen Ai Dashboard ${dashboardId}`); + return { success: true }; + } catch (error) { + return { + success: false, + error: { message: error.message, statusCode: error.output.statusCode }, + }; + } +}; diff --git a/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/dashboard.ts b/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/dashboard.ts new file mode 100644 index 0000000000000..46a4fa5145de5 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/dashboard.ts @@ -0,0 +1,407 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { DashboardAttributes } from '@kbn/dashboard-plugin/common'; +import { v4 as uuidv4 } from 'uuid'; +import { SavedObject } from '@kbn/core-saved-objects-common/src/server_types'; + +export const dashboardTitle = `Generative AI Token Usage`; + +export const getGenAiDashboard = (dashboardId: string): SavedObject => { + const ids: Record = { + genAiSavedObjectId: dashboardId, + tokens: uuidv4(), + totalTokens: uuidv4(), + tag: uuidv4(), + }; + return { + attributes: { + description: 'Displays OpenAI token consumption per Kibana user', + kibanaSavedObjectMeta: { + searchSourceJSON: + '{"query":{"query":"kibana.saved_objects: { type_id : \\".gen-ai\\" } ","language":"kuery"},"filter":[]}', + }, + optionsJSON: + '{"useMargins":true,"syncColors":false,"syncCursor":true,"syncTooltips":false,"hidePanelTitles":false}', + panelsJSON: JSON.stringify([ + { + version: '8.9.0', + type: 'visualization', + gridData: { + x: 0, + y: 0, + w: 48, + h: 4, + i: '1c425103-57a6-4598-a092-03b8d550b440', + }, + panelIndex: '1c425103-57a6-4598-a092-03b8d550b440', + embeddableConfig: { + savedVis: { + id: '', + title: '', + description: '', + type: 'markdown', + params: { + fontSize: 12, + openLinksInNewTab: false, + markdown: + // TODO: update with better copy and link to the docs page for the Gen AI connector before 8.9 release! + 'The data powering this dashboard requires special index permissions. To access the dashboard data, contact a Kibana admin to set up a "read only" role for non-admin users who may want to view this dashboard. ', + }, + uiState: {}, + data: { + aggs: [], + searchSource: { + query: { + query: '', + language: 'kuery', + }, + filter: [], + }, + }, + }, + hidePanelTitles: false, + enhancements: {}, + }, + title: 'Permissions note', + }, + { + version: '8.9.0', + type: 'lens', + gridData: { + x: 0, + y: 0, + w: 48, + h: 20, + i: '1e45fe29-05d3-4dbd-a0bb-fc3bc5ee3d6d', + }, + panelIndex: '1e45fe29-05d3-4dbd-a0bb-fc3bc5ee3d6d', + embeddableConfig: { + attributes: { + title: '', + description: '', + visualizationType: 'lnsXY', + type: 'lens', + references: [], + state: { + visualization: { + title: 'Empty XY chart', + legend: { + isVisible: true, + position: 'right', + }, + valueLabels: 'hide', + preferredSeriesType: 'bar_stacked', + layers: [ + { + layerId: '475e8ca0-e78e-454a-8597-a5492f70dce3', + accessors: [ + '0f9814ec-0964-4efa-93a3-c7f173df2483', + 'b0e390e4-d754-4eb4-9fcc-4347dadda394', + ], + position: 'top', + seriesType: 'bar_stacked', + showGridlines: false, + layerType: 'data', + xAccessor: '5352fcb2-7b8e-4b5a-bce9-73a7f3b2b519', + yConfig: [ + { + forAccessor: '0f9814ec-0964-4efa-93a3-c7f173df2483', + color: '#9170b8', + }, + { + forAccessor: 'b0e390e4-d754-4eb4-9fcc-4347dadda394', + color: '#3383cd', + }, + ], + }, + ], + labelsOrientation: { + x: 0, + yLeft: 0, + yRight: 0, + }, + yTitle: 'Sum of GenAi Completion + Prompt Tokens', + axisTitlesVisibilitySettings: { + x: true, + yLeft: true, + yRight: true, + }, + }, + query: { + query: 'kibana.saved_objects:{ type_id: ".gen-ai" }', + language: 'kuery', + }, + filters: [], + datasourceStates: { + formBased: { + layers: { + '475e8ca0-e78e-454a-8597-a5492f70dce3': { + columns: { + '0f9814ec-0964-4efa-93a3-c7f173df2483': { + label: 'GenAI Completion Tokens', + dataType: 'number', + operationType: 'sum', + sourceField: 'kibana.action.execution.gen_ai.usage.completion_tokens', + isBucketed: false, + scale: 'ratio', + params: { + emptyAsNull: true, + }, + customLabel: true, + }, + '5352fcb2-7b8e-4b5a-bce9-73a7f3b2b519': { + label: 'user.name', + dataType: 'string', + operationType: 'terms', + scale: 'ordinal', + sourceField: 'user.name', + isBucketed: true, + params: { + size: 10000, + orderBy: { + type: 'custom', + }, + orderDirection: 'desc', + otherBucket: true, + missingBucket: false, + parentFormat: { + id: 'terms', + }, + include: [], + exclude: [], + includeIsRegex: false, + excludeIsRegex: false, + orderAgg: { + label: 'Sum of kibana.action.execution.gen_ai.usage.total_tokens', + dataType: 'number', + operationType: 'sum', + sourceField: 'kibana.action.execution.gen_ai.usage.total_tokens', + isBucketed: false, + scale: 'ratio', + params: { + emptyAsNull: true, + }, + }, + secondaryFields: [], + }, + customLabel: true, + }, + 'b0e390e4-d754-4eb4-9fcc-4347dadda394': { + label: 'GenAi Prompt Tokens', + dataType: 'number', + operationType: 'sum', + sourceField: 'kibana.action.execution.gen_ai.usage.prompt_tokens', + isBucketed: false, + scale: 'ratio', + params: { + emptyAsNull: true, + }, + customLabel: true, + }, + }, + columnOrder: [ + '5352fcb2-7b8e-4b5a-bce9-73a7f3b2b519', + '0f9814ec-0964-4efa-93a3-c7f173df2483', + 'b0e390e4-d754-4eb4-9fcc-4347dadda394', + ], + sampling: 1, + incompleteColumns: {}, + }, + }, + }, + textBased: { + layers: {}, + }, + }, + internalReferences: [ + { + type: 'index-pattern', + id: ids.tokens, + name: 'indexpattern-datasource-layer-475e8ca0-e78e-454a-8597-a5492f70dce3', + }, + ], + adHocDataViews: { + [ids.tokens]: { + id: ids.tokens, + title: '.kibana-event-log-*', + timeFieldName: '@timestamp', + sourceFilters: [], + fieldFormats: {}, + runtimeFieldMap: { + 'kibana.action.execution.gen_ai.usage.completion_tokens': { + type: 'long', + }, + 'kibana.action.execution.gen_ai.usage.prompt_tokens': { + type: 'long', + }, + }, + fieldAttrs: {}, + allowNoIndex: false, + name: 'Event Log', + }, + }, + }, + }, + hidePanelTitles: false, + enhancements: {}, + }, + title: 'Prompt + Completion Tokens per User', + }, + { + version: '8.9.0', + type: 'lens', + gridData: { + x: 0, + y: 20, + w: 48, + h: 20, + i: '80f745c6-a18b-492b-bacf-4a2499a2f95d', + }, + panelIndex: '80f745c6-a18b-492b-bacf-4a2499a2f95d', + embeddableConfig: { + attributes: { + title: '', + description: '', + visualizationType: 'lnsXY', + type: 'lens', + references: [], + state: { + visualization: { + title: 'Empty XY chart', + legend: { + isVisible: true, + position: 'right', + }, + valueLabels: 'hide', + preferredSeriesType: 'bar_stacked', + layers: [ + { + layerId: '475e8ca0-e78e-454a-8597-a5492f70dce3', + accessors: ['b0e390e4-d754-4eb4-9fcc-4347dadda394'], + position: 'top', + seriesType: 'bar_stacked', + showGridlines: false, + layerType: 'data', + xAccessor: '5352fcb2-7b8e-4b5a-bce9-73a7f3b2b519', + yConfig: [ + { + forAccessor: 'b0e390e4-d754-4eb4-9fcc-4347dadda394', + color: '#332182', + }, + ], + }, + ], + }, + query: { + query: 'kibana.saved_objects: { type_id : ".gen-ai" } ', + language: 'kuery', + }, + filters: [], + datasourceStates: { + formBased: { + layers: { + '475e8ca0-e78e-454a-8597-a5492f70dce3': { + columns: { + '5352fcb2-7b8e-4b5a-bce9-73a7f3b2b519': { + label: 'user.name', + dataType: 'string', + operationType: 'terms', + scale: 'ordinal', + sourceField: 'user.name', + isBucketed: true, + params: { + size: 10000, + orderBy: { + type: 'column', + columnId: 'b0e390e4-d754-4eb4-9fcc-4347dadda394', + }, + orderDirection: 'desc', + otherBucket: true, + missingBucket: false, + parentFormat: { + id: 'terms', + }, + include: [], + exclude: [], + includeIsRegex: false, + excludeIsRegex: false, + }, + customLabel: true, + }, + 'b0e390e4-d754-4eb4-9fcc-4347dadda394': { + label: 'Sum of GenAI Total Tokens', + dataType: 'number', + operationType: 'sum', + sourceField: 'kibana.action.execution.gen_ai.usage.total_tokens', + isBucketed: false, + scale: 'ratio', + params: { + emptyAsNull: true, + }, + customLabel: true, + }, + }, + columnOrder: [ + '5352fcb2-7b8e-4b5a-bce9-73a7f3b2b519', + 'b0e390e4-d754-4eb4-9fcc-4347dadda394', + ], + sampling: 1, + incompleteColumns: {}, + }, + }, + }, + textBased: { + layers: {}, + }, + }, + internalReferences: [ + { + type: 'index-pattern', + id: ids.totalTokens, + name: 'indexpattern-datasource-layer-475e8ca0-e78e-454a-8597-a5492f70dce3', + }, + ], + adHocDataViews: { + [ids.totalTokens]: { + id: ids.totalTokens, + title: '.kibana-event-log-*', + timeFieldName: '@timestamp', + sourceFilters: [], + fieldFormats: {}, + runtimeFieldMap: { + 'kibana.action.execution.gen_ai.usage.total_tokens': { + type: 'long', + }, + }, + fieldAttrs: {}, + allowNoIndex: false, + name: 'Event Log', + }, + }, + }, + }, + hidePanelTitles: false, + enhancements: {}, + }, + title: 'Total Tokens per User', + }, + ]), + timeRestore: false, + title: dashboardTitle, + version: 1, + }, + coreMigrationVersion: '8.8.0', + created_at: '2023-06-01T19:00:04.629Z', + id: ids.genAiSavedObjectId, + managed: false, + type: 'dashboard', + typeMigrationVersion: '8.7.0', + updated_at: '2023-06-01T19:00:04.629Z', + references: [], + }; +}; diff --git a/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/gen_ai.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/gen_ai.test.ts index 1033dda773d0a..1accca9ba9dd0 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/gen_ai.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/gen_ai.test.ts @@ -11,6 +11,8 @@ import { GEN_AI_CONNECTOR_ID, OpenAiProviderType } from '../../../common/gen_ai/ import { loggingSystemMock } from '@kbn/core-logging-server-mocks'; import { actionsMock } from '@kbn/actions-plugin/server/mocks'; import { GenAiRunActionResponseSchema } from '../../../common/gen_ai/schema'; +import { initGenAiDashboard } from './create_dashboard'; +jest.mock('./create_dashboard'); describe('GenAiConnector', () => { const sampleBody = JSON.stringify({ @@ -96,4 +98,80 @@ describe('GenAiConnector', () => { expect(response).toEqual({ result: 'success' }); }); }); + + describe('Token dashboard', () => { + const connector = new GenAiConnector({ + configurationUtilities: actionsConfigMock.create(), + connector: { id: '1', type: GEN_AI_CONNECTOR_ID }, + config: { apiUrl: 'https://example.com/api', apiProvider: OpenAiProviderType.AzureAi }, + secrets: { apiKey: '123' }, + logger: loggingSystemMock.createLogger(), + services: actionsMock.createServices(), + }); + const mockGenAi = initGenAiDashboard as jest.Mock; + beforeEach(() => { + // @ts-ignore + connector.esClient.transport.request = mockRequest; + mockRequest.mockResolvedValue({ has_all_requested: true }); + mockGenAi.mockResolvedValue({ success: true }); + jest.clearAllMocks(); + }); + it('the create dashboard API call returns available: true when user has correct permissions', async () => { + const response = await connector.getDashboard({ dashboardId: '123' }); + expect(mockRequest).toBeCalledTimes(1); + expect(mockRequest).toHaveBeenCalledWith({ + path: '/_security/user/_has_privileges', + method: 'POST', + body: { + index: [ + { + names: ['.kibana-event-log-*'], + allow_restricted_indices: true, + privileges: ['read'], + }, + ], + }, + }); + expect(response).toEqual({ available: true }); + }); + it('the create dashboard API call returns available: false when user has correct permissions', async () => { + mockRequest.mockResolvedValue({ has_all_requested: false }); + const response = await connector.getDashboard({ dashboardId: '123' }); + expect(mockRequest).toBeCalledTimes(1); + expect(mockRequest).toHaveBeenCalledWith({ + path: '/_security/user/_has_privileges', + method: 'POST', + body: { + index: [ + { + names: ['.kibana-event-log-*'], + allow_restricted_indices: true, + privileges: ['read'], + }, + ], + }, + }); + expect(response).toEqual({ available: false }); + }); + + it('the create dashboard API call returns available: false when init dashboard fails', async () => { + mockGenAi.mockResolvedValue({ success: false }); + const response = await connector.getDashboard({ dashboardId: '123' }); + expect(mockRequest).toBeCalledTimes(1); + expect(mockRequest).toHaveBeenCalledWith({ + path: '/_security/user/_has_privileges', + method: 'POST', + body: { + index: [ + { + names: ['.kibana-event-log-*'], + allow_restricted_indices: true, + privileges: ['read'], + }, + ], + }, + }); + expect(response).toEqual({ available: false }); + }); + }); }); diff --git a/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/gen_ai.ts b/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/gen_ai.ts index f9a5d5112ed89..797dbdd0ee569 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/gen_ai.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/gen_ai/gen_ai.ts @@ -7,9 +7,11 @@ import { ServiceParams, SubActionConnector } from '@kbn/actions-plugin/server'; import type { AxiosError } from 'axios'; +import { initGenAiDashboard } from './create_dashboard'; import { GenAiRunActionParamsSchema, GenAiRunActionResponseSchema, + GenAiDashboardActionParamsSchema, } from '../../../common/gen_ai/schema'; import type { GenAiConfig, @@ -18,6 +20,10 @@ import type { GenAiRunActionResponse, } from '../../../common/gen_ai/types'; import { OpenAiProviderType, SUB_ACTION } from '../../../common/gen_ai/constants'; +import { + GenAiDashboardActionParams, + GenAiDashboardActionResponse, +} from '../../../common/gen_ai/types'; export class GenAiConnector extends SubActionConnector { private url; @@ -46,6 +52,12 @@ export class GenAiConnector extends SubActionConnector { + const privilege = (await this.esClient.transport.request({ + path: '/_security/user/_has_privileges', + method: 'POST', + body: { + index: [ + { + names: ['.kibana-event-log-*'], + allow_restricted_indices: true, + privileges: ['read'], + }, + ], + }, + })) as { has_all_requested: boolean }; + + if (!privilege?.has_all_requested) { + return { available: false }; + } + + const response = await initGenAiDashboard({ + logger: this.logger, + savedObjectsClient: this.savedObjectsClient, + dashboardId, + }); + + return { available: response.success }; + } } diff --git a/x-pack/plugins/stack_connectors/tsconfig.json b/x-pack/plugins/stack_connectors/tsconfig.json index f95d55265cebf..7cc6696f04368 100644 --- a/x-pack/plugins/stack_connectors/tsconfig.json +++ b/x-pack/plugins/stack_connectors/tsconfig.json @@ -27,6 +27,12 @@ "@kbn/test-jest-helpers", "@kbn/securitysolution-io-ts-utils", "@kbn/safer-lodash-set", + "@kbn/dashboard-plugin", + "@kbn/core-http-browser", + "@kbn/core-saved-objects-api-server", + "@kbn/core-saved-objects-common", + "@kbn/core-http-browser-mocks", + "@kbn/core-saved-objects-api-server-mocks", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/triggers_actions_ui/kibana.jsonc b/x-pack/plugins/triggers_actions_ui/kibana.jsonc index 77dceae07cd2c..b11efd92eb7f2 100644 --- a/x-pack/plugins/triggers_actions_ui/kibana.jsonc +++ b/x-pack/plugins/triggers_actions_ui/kibana.jsonc @@ -21,7 +21,8 @@ "dataViews", "dataViewEditor", "alerting", - "actions" + "actions", + "dashboard", ], "optionalPlugins": [ "cloud", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/app.tsx index 5b04a6bb5d68a..f389d180772dc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/app.tsx @@ -28,6 +28,7 @@ import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; import { ActionsPublicPluginSetup } from '@kbn/actions-plugin/public'; import { ruleDetailsRoute } from '@kbn/rule-data-utils'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { DashboardStart } from '@kbn/dashboard-plugin/public'; import { suspendedComponentWithProps } from './lib/suspended_component_with_props'; import { ActionTypeRegistryContract, @@ -52,6 +53,7 @@ export interface TriggersAndActionsUiServices extends CoreStart { data: DataPublicPluginStart; dataViews: DataViewsPublicPluginStart; dataViewEditor: DataViewEditorStart; + dashboard: DashboardStart; charts: ChartsPluginStart; alerting?: AlertingStart; spaces?: SpacesPluginStart; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx index 8790b0bea8b87..985a4670122d0 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx @@ -26,6 +26,7 @@ import type { SpacesPluginStart } from '@kbn/spaces-plugin/public'; import { Storage } from '@kbn/kibana-utils-plugin/public'; import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; import { ActionsPublicPluginSetup } from '@kbn/actions-plugin/public'; +import { DashboardStart } from '@kbn/dashboard-plugin/public'; import { suspendedComponentWithProps } from './lib/suspended_component_with_props'; import { ActionTypeRegistryContract, @@ -47,6 +48,7 @@ export interface TriggersAndActionsUiServices extends CoreStart { data: DataPublicPluginStart; dataViews: DataViewsPublicPluginStart; dataViewEditor: DataViewEditorStart; + dashboard: DashboardStart; charts: ChartsPluginStart; alerting?: AlertingStart; spaces?: SpacesPluginStart; diff --git a/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts b/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts index 0486912ceacae..b145aab0116b2 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts @@ -30,6 +30,7 @@ export async function getMatchingIndices({ http: HttpSetup; }): Promise> { try { + // prepend and append index search requests with `*` to match the given text in middle of index names const formattedPattern = formatPattern(pattern); const { indices } = await http.post>( diff --git a/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts b/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts index c6b8a8376183a..0d441d09e038f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/lib/kibana/kibana_react.mock.ts @@ -10,6 +10,7 @@ import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; +import { dashboardPluginMock } from '@kbn/dashboard-plugin/public/mocks'; import { coreMock, scopedHistoryMock, themeServiceMock } from '@kbn/core/public/mocks'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { TriggersAndActionsUiServices } from '../../../application/app'; @@ -40,6 +41,7 @@ export const createStartServicesMock = (): TriggersAndActionsUiServices => { }, history: scopedHistoryMock.create(), setBreadcrumbs: jest.fn(), + dashboard: dashboardPluginMock.createStartContract(), data: dataPluginMock.createStartContract(), dataViews: dataViewPluginMocks.createStartContract(), dataViewEditor: { diff --git a/x-pack/plugins/triggers_actions_ui/public/plugin.ts b/x-pack/plugins/triggers_actions_ui/public/plugin.ts index 56ef2665052be..ce838c93ef16a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/plugin.ts +++ b/x-pack/plugins/triggers_actions_ui/public/plugin.ts @@ -24,6 +24,7 @@ import { Storage } from '@kbn/kibana-utils-plugin/public'; import type { SpacesPluginStart } from '@kbn/spaces-plugin/public'; import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import { triggersActionsRoute } from '@kbn/rule-data-utils'; +import { DashboardStart } from '@kbn/dashboard-plugin/public'; import type { AlertsSearchBarProps } from './application/sections/alerts_search_bar'; import { TypeRegistry } from './application/type_registry'; @@ -148,6 +149,7 @@ interface PluginsStart { data: DataPublicPluginStart; dataViews: DataViewsPublicPluginStart; dataViewEditor: DataViewEditorStart; + dashboard: DashboardStart; charts: ChartsPluginStart; alerting?: AlertingStart; spaces?: SpacesPluginStart; @@ -259,6 +261,7 @@ export class Plugin return renderApp({ ...coreStart, actions: plugins.actions, + dashboard: pluginsStart.dashboard, data: pluginsStart.data, dataViews: pluginsStart.dataViews, dataViewEditor: pluginsStart.dataViewEditor, @@ -306,6 +309,7 @@ export class Plugin return renderApp({ ...coreStart, actions: plugins.actions, + dashboard: pluginsStart.dashboard, data: pluginsStart.data, dataViews: pluginsStart.dataViews, dataViewEditor: pluginsStart.dataViewEditor, diff --git a/x-pack/plugins/triggers_actions_ui/tsconfig.json b/x-pack/plugins/triggers_actions_ui/tsconfig.json index 3222559bf2b9f..c49230eab3fea 100644 --- a/x-pack/plugins/triggers_actions_ui/tsconfig.json +++ b/x-pack/plugins/triggers_actions_ui/tsconfig.json @@ -52,6 +52,7 @@ "@kbn/ecs", "@kbn/alerts-as-data-utils", "@kbn/core-ui-settings-common", + "@kbn/dashboard-plugin", ], "exclude": ["target/**/*"] } diff --git a/x-pack/test/alerting_api_integration/common/lib/object_remover.ts b/x-pack/test/alerting_api_integration/common/lib/object_remover.ts index 8f0c832ade73b..4528d9cd987f2 100644 --- a/x-pack/test/alerting_api_integration/common/lib/object_remover.ts +++ b/x-pack/test/alerting_api_integration/common/lib/object_remover.ts @@ -41,7 +41,7 @@ export class ObjectRemover { `${getUrlPrefix(spaceId)}/${isInternal ? 'internal' : 'api'}/${plugin}/${type}/${id}` ) .set('kbn-xsrf', 'foo') - .expect(204); + .expect(plugin === 'saved_objects' ? 200 : 204); }) ); this.objectsToRemove = []; diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/gen_ai.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/gen_ai.ts index 14101b338ba8d..828e19470f4fe 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/gen_ai.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/gen_ai.ts @@ -12,6 +12,7 @@ import { genAiSuccessResponse, } from '@kbn/actions-simulators-plugin/server/gen_ai_simulation'; import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; +import { getUrlPrefix, ObjectRemover } from '../../../../../common/lib'; const connectorTypeId = '.gen-ai'; const name = 'A genAi action'; @@ -24,11 +25,13 @@ const defaultConfig = { apiProvider: 'OpenAI' }; // eslint-disable-next-line import/no-default-export export default function genAiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); + const objectRemover = new ObjectRemover(supertest); + const supertestWithoutAuth = getService('supertestWithoutAuth'); const configService = getService('config'); - - const createConnector = async (apiUrl: string) => { + const retry = getService('retry'); + const createConnector = async (apiUrl: string, spaceId?: string) => { const { body } = await supertest - .post('/api/actions/connector') + .post(`${getUrlPrefix(spaceId ?? 'default')}/api/actions/connector`) .set('kbn-xsrf', 'foo') .send({ name, @@ -38,10 +41,15 @@ export default function genAiTest({ getService }: FtrProviderContext) { }) .expect(200); + objectRemover.add(spaceId ?? 'default', body.id, 'connector', 'actions'); + return body.id; }; describe('GenAi', () => { + after(() => { + objectRemover.removeAll(); + }); describe('action creation', () => { const simulator = new GenAiSimulator({ returnError: false, @@ -271,6 +279,118 @@ export default function genAiTest({ getService }: FtrProviderContext) { data: genAiSuccessResponse, }); }); + describe('gen ai dashboard', () => { + const dashboardId = 'specific-dashboard-id-default'; + + it('should not create a dashboard when user does not have kibana event log permissions', async () => { + const { body } = await supertestWithoutAuth + .post(`/api/actions/connector/${genAiActionId}/_execute`) + .auth('global_read', 'global_read-password') + .set('kbn-xsrf', 'foo') + .send({ + params: { + subAction: 'getDashboard', + subActionParams: { + dashboardId, + }, + }, + }) + .expect(200); + + // check dashboard has not been created + await supertest + .get(`/api/saved_objects/dashboard/${dashboardId}`) + .set('kbn-xsrf', 'foo') + .expect(404); + + expect(body).to.eql({ + status: 'ok', + connector_id: genAiActionId, + data: { available: false }, + }); + }); + + it('should create a dashboard when user has correct permissions', async () => { + const { body } = await supertest + .post(`/api/actions/connector/${genAiActionId}/_execute`) + .set('kbn-xsrf', 'foo') + .send({ + params: { + subAction: 'getDashboard', + subActionParams: { + dashboardId, + }, + }, + }) + .expect(200); + + // check dashboard has been created + await retry.try(async () => + supertest + .get(`/api/saved_objects/dashboard/${dashboardId}`) + .set('kbn-xsrf', 'foo') + .expect(200) + ); + + objectRemover.add('default', dashboardId, 'dashboard', 'saved_objects'); + + expect(body).to.eql({ + status: 'ok', + connector_id: genAiActionId, + data: { available: true }, + }); + }); + }); + }); + describe('non-default space simulator', () => { + const simulator = new GenAiSimulator({ + proxy: { + config: configService.get('kbnTestServer.serverArgs'), + }, + }); + let apiUrl: string; + let genAiActionId: string; + + before(async () => { + apiUrl = await simulator.start(); + genAiActionId = await createConnector(apiUrl, 'space1'); + }); + after(() => { + simulator.close(); + }); + + const dashboardId = 'specific-dashboard-id-space1'; + + it('should create a dashboard in non-default space', async () => { + const { body } = await supertest + .post(`${getUrlPrefix('space1')}/api/actions/connector/${genAiActionId}/_execute`) + .set('kbn-xsrf', 'foo') + .send({ + params: { + subAction: 'getDashboard', + subActionParams: { + dashboardId, + }, + }, + }) + .expect(200); + + // check dashboard has been created + await retry.try( + async () => + await supertest + .get(`${getUrlPrefix('space1')}/api/saved_objects/dashboard/${dashboardId}`) + .set('kbn-xsrf', 'foo') + .expect(200) + ); + objectRemover.add('space1', dashboardId, 'dashboard', 'saved_objects'); + + expect(body).to.eql({ + status: 'ok', + connector_id: genAiActionId, + data: { available: true }, + }); + }); }); describe('error response simulator', () => { From 24bfa0514efb3eb16b3eb3276679dd53229d01ba Mon Sep 17 00:00:00 2001 From: Angela Chuang <6295984+angorayc@users.noreply.github.com> Date: Thu, 15 Jun 2023 20:06:30 +0100 Subject: [PATCH 33/59] [SecuritySolution] Update checkIndicesExists logic (#159806) ## Summary issue: https://github.com/elastic/kibana/issues/159107 **Steps to verify:** 1. Generate some alerts and enable host or user risk score module. 2. Hard refresh the page, select the alerts data view. Screenshot 2023-06-15 at 14 54 54 3. Visit overview, host, network and users page. All should `Not` display the get started page. https://github.com/elastic/kibana/assets/6295984/4b942604-f98f-40fe-bbca-9cfd11cdf275 ### Checklist Delete any items that are not applicable to this PR. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../common/containers/sourcerer/index.tsx | 13 ++- .../common/store/sourcerer/helpers.test.ts | 96 ++++++++++++++++++- .../public/common/store/sourcerer/helpers.ts | 6 +- 3 files changed, 112 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx b/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx index fdbd6d9d530e1..de784c876fd66 100644 --- a/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx @@ -372,6 +372,7 @@ export const useSourcererDataView = ( [] ); const { + defaultDataView, signalIndexName, selectedDataView, sourcererScope: { missingPatterns, selectedPatterns: scopeSelectedPatterns, loading }, @@ -383,6 +384,7 @@ export const useSourcererDataView = ( sourcererScope, }; }); + const selectedPatterns = useMemo( () => sortWithExcludesAtEnd(scopeSelectedPatterns), [scopeSelectedPatterns] @@ -431,8 +433,17 @@ export const useSourcererDataView = ( scopeId, signalIndexName, patternList: sourcererDataView.patternList, + isDefaultDataViewSelected: sourcererDataView.id === defaultDataView.id, }), - [loading, scopeId, signalIndexName, sourcererDataView.loading, sourcererDataView.patternList] + [ + defaultDataView.id, + loading, + scopeId, + signalIndexName, + sourcererDataView.id, + sourcererDataView.loading, + sourcererDataView.patternList, + ] ); const browserFields = useCallback(() => { diff --git a/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.test.ts b/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.test.ts index aa193026465cf..76c70530c6451 100644 --- a/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.test.ts +++ b/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.test.ts @@ -7,7 +7,11 @@ import { mockGlobalState, mockSourcererState } from '../../mock'; import { SourcererScopeName } from './model'; -import { getScopePatternListSelection, validateSelectedPatterns } from './helpers'; +import { + checkIfIndicesExist, + getScopePatternListSelection, + validateSelectedPatterns, +} from './helpers'; import { sortWithExcludesAtEnd } from '../../../../common/utils/sourcerer'; const signalIndexName = mockGlobalState.sourcerer.signalIndexName; @@ -278,3 +282,93 @@ describe('sourcerer store helpers', () => { }); }); }); + +describe('checkIfIndicesExist', () => { + it('should return true when scopeId is "detections" and patternList includes signalIndexName', () => { + const result = checkIfIndicesExist({ + patternList: ['index1', 'index2', 'signalIndex'], + scopeId: SourcererScopeName.detections, + signalIndexName: 'signalIndex', + isDefaultDataViewSelected: false, + }); + + expect(result).toBe(true); + }); + + it('should return false when scopeId is "detections" and patternList does not include signalIndexName', () => { + const result = checkIfIndicesExist({ + patternList: ['index1', 'index2'], + scopeId: SourcererScopeName.detections, + signalIndexName: 'signalIndex', + isDefaultDataViewSelected: false, + }); + + expect(result).toBe(false); + }); + + it('should return true when scopeId is "default" and isDefaultDataViewSelected is true and patternList has elements other than signalIndexName', () => { + const result = checkIfIndicesExist({ + patternList: ['index1', 'index2', 'index3'], + scopeId: SourcererScopeName.default, + signalIndexName: 'signalIndex', + isDefaultDataViewSelected: true, + }); + + expect(result).toBe(true); + }); + + it('should return false when scopeId is "default" and isDefaultDataViewSelected is true and patternList only contains signalIndexName', () => { + const result = checkIfIndicesExist({ + patternList: ['signalIndex'], + scopeId: SourcererScopeName.default, + signalIndexName: 'signalIndex', + isDefaultDataViewSelected: true, + }); + + expect(result).toBe(false); + }); + + it('should return true when scopeId is "default" and isDefaultDataViewSelected is false and patternList has elements', () => { + const result = checkIfIndicesExist({ + patternList: ['index1', 'index2'], + scopeId: SourcererScopeName.default, + signalIndexName: 'signalIndex', + isDefaultDataViewSelected: false, + }); + + expect(result).toBe(true); + }); + + it('should return false when scopeId is "default" and isDefaultDataViewSelected is false and patternList is empty', () => { + const result = checkIfIndicesExist({ + patternList: [], + scopeId: SourcererScopeName.default, + signalIndexName: 'signalIndex', + isDefaultDataViewSelected: false, + }); + + expect(result).toBe(false); + }); + + it('should return true when scopeId is not "detections" or "default" and patternList has elements', () => { + const result = checkIfIndicesExist({ + patternList: ['index1', 'index2'], + scopeId: 'other' as SourcererScopeName, + signalIndexName: 'signalIndex', + isDefaultDataViewSelected: false, + }); + + expect(result).toBe(true); + }); + + it('should return false when scopeId is not "detections" or "default" and patternList is empty', () => { + const result = checkIfIndicesExist({ + patternList: [], + scopeId: 'other' as SourcererScopeName, + signalIndexName: 'signalIndex', + isDefaultDataViewSelected: false, + }); + + expect(result).toBe(false); + }); +}); diff --git a/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.ts b/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.ts index 3d3b061194f79..06f57d9fa9624 100644 --- a/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.ts +++ b/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.ts @@ -104,14 +104,18 @@ interface CheckIfIndicesExistParams { patternList: sourcererModel.SourcererDataView['patternList']; scopeId: sourcererModel.SourcererScopeName; signalIndexName: string | null; + isDefaultDataViewSelected: boolean; } export const checkIfIndicesExist = ({ patternList, scopeId, signalIndexName, + isDefaultDataViewSelected, }: CheckIfIndicesExistParams) => scopeId === SourcererScopeName.detections ? patternList.includes(`${signalIndexName}`) : scopeId === SourcererScopeName.default - ? patternList.filter((i) => i !== signalIndexName).length > 0 + ? isDefaultDataViewSelected + ? patternList.filter((i) => i !== signalIndexName).length > 0 + : patternList.length > 0 : patternList.length > 0; From ae068a62f1618368308f89d023fef5b296631f47 Mon Sep 17 00:00:00 2001 From: Ryland Herrick Date: Thu, 15 Jun 2023 14:16:28 -0500 Subject: [PATCH 34/59] [SecuritySolution][EntityAnalytics] Risk Scoring Preview API (#155966) ## Summary This PR adds a new Risk Scoring API endpoint. Its functionality is meant to replace the current transform-based solution. ### Contents of this PR: - New feature flag: `riskScoringRoutesEnabled` - A new POST endpoint at `/internal/risk_scores/preview` - An OpenAPI doc for the endpoint - Unit and integration tests ### Current behavior, and short-term plans The endpoint as specified in this branch is _read-only_. When the endpoint is hit, it triggers some aggregations in elasticsearch, and a formatted response is returned; there is no persistence at this time. This endpoint was originally written as a POC to demonstrate the new Risk Engine's functionality, but it will now drive the [Preview Risk Scoring](https://github.com/elastic/security-team/issues/6443) feature. The main path for the Risk Engine is going to be a _scheduled task_ that calculates Risk Scores and writes them to a persistent datastream that we own. (https://github.com/elastic/security-team/issues/6450). To accomplish this, we will decompose the full functionality of this endpoint into constituent pieces (i.e. `calculate | persist, get`) ## How to review I've created a Postman collection that can be used to exercise this endpoint. It was generated by Postman from the OpenAPI spec, and modified by me to contain a valid subset of request parameters; please peruse the spec and/or feel free to generate your own scripts/tools from the spec. ``` curl -L -H 'Authorization: 10c7f646373aa116' -o 'Risk Scoring API.postman_collection.json' https://upload.elastic.co/d/007a57857fc40c791835629ea6dd692d2a8a290860f2917329d688be78c03b1d ``` ### Review against the PR instance I've created a [demo instance](https://rylnd-pr-155966-risk-score-api.kbndev.co/) containing the code on this branch, along with some realistic(ish) alert data (~200k alerts). While you can use this instance as a convenience, you will need to [set up kibana-remote-dev](https://github.com/elastic/kibana-remote-dev#access-kibana-es-locally-without-sso) and forward ports in order to be able to access the instance's API from a local machine: 1. Configure kibana-remote-dev with your SSH key and GitHub token. 2. Configure kibana-remote-dev to specify `GITHUB_USERNAME=rylnd` * This allows you to bypass kibana-remote-dev code that assumes projects are owned by you 3. Forward local ports to my instance: `./ports rd-rylnd-pr-155966-risk-score-api` 4. Use postman to talk to `http://localhost:5601`, which will be forwarded to the cloud instance via the previous command ### Review manually 1. Check out this branch 3. Enable the feature flag 4. Populate some event data and generate some alerts 5. Navigate to the new endpoint, and observe that the `host.name`s and `user.name`s from those alerts have been aggregated into these "risk scores" in the response 6. Play with the request options to see how these affect the scores (and see docs/test for more details on how those work) ## _What_ to review * Are the scores internally consistent? I.e. do they add up as expected? Does the corresponding "level" make sense? * Do parameters apply as expected? E.g. do weights predictably scale the results? * Are there discrepancies between the spec and the actual implementation? * Does pagination make sense? (i.e. the `after_keys` stuff)? #### TODO (for @rylnd) - [x] Add `description`s to the OpenAPI docs - [x] Remove remaining TODOs from code ### 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 - [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) ### 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) Related ticket: https://github.com/elastic/security-team/issues/4211 --------- Co-authored-by: Khristinin Nikita --- .../kbn-securitysolution-io-ts-types/index.ts | 1 + .../index.test.ts | 85 +++ .../index.ts | 28 + .../security_solution/common/constants.ts | 3 + .../common/experimental_features.ts | 5 + .../common/risk_engine/after_keys.test.ts | 59 ++ .../common/risk_engine/after_keys.ts | 21 + .../common/risk_engine/identifier_types.ts | 12 + .../common/risk_engine/index.ts | 10 + .../risk_score_preview/request_schema.ts | 29 + .../common/risk_engine/risk_weights/index.ts | 9 + .../risk_engine/risk_weights/schema.test.ts | 234 ++++++++ .../common/risk_engine/risk_weights/schema.ts | 57 ++ .../common/risk_engine/risk_weights/types.ts | 15 + .../common/risk_engine/utils.ts | 25 + .../security_solution/server/client/client.ts | 9 +- .../risk_engine/calculate_risk_scores.mock.ts | 61 ++ .../risk_engine/calculate_risk_scores.test.ts | 198 +++++++ .../lib/risk_engine/calculate_risk_scores.ts | 277 +++++++++ .../server/lib/risk_engine/helpers.ts | 38 ++ .../risk_engine/risk_score_service.mock.ts | 32 + .../lib/risk_engine/risk_score_service.ts | 24 + .../lib/risk_engine/risk_weights.test.ts | 108 ++++ .../server/lib/risk_engine/risk_weights.ts | 104 ++++ .../server/lib/risk_engine/routes/index.ts | 8 + .../routes/risk_score_preview_route.test.ts | 252 ++++++++ .../routes/risk_score_preview_route.ts | 94 +++ .../lib/risk_engine/routes/translations.ts | 15 + .../risk_engine/schema/risk_score_apis.yml | 223 +++++++ .../server/lib/risk_engine/types.ts | 79 +++ .../plugins/security_solution/server/mocks.ts | 1 + .../security_solution/server/routes/index.ts | 5 + .../common/config.ts | 1 + .../security_and_spaces/group10/index.ts | 1 + .../group10/risk_engine.ts | 554 ++++++++++++++++++ 35 files changed, 2676 insertions(+), 1 deletion(-) create mode 100644 packages/kbn-securitysolution-io-ts-types/src/number_between_zero_and_one_inclusive/index.test.ts create mode 100644 packages/kbn-securitysolution-io-ts-types/src/number_between_zero_and_one_inclusive/index.ts create mode 100644 x-pack/plugins/security_solution/common/risk_engine/after_keys.test.ts create mode 100644 x-pack/plugins/security_solution/common/risk_engine/after_keys.ts create mode 100644 x-pack/plugins/security_solution/common/risk_engine/identifier_types.ts create mode 100644 x-pack/plugins/security_solution/common/risk_engine/index.ts create mode 100644 x-pack/plugins/security_solution/common/risk_engine/risk_score_preview/request_schema.ts create mode 100644 x-pack/plugins/security_solution/common/risk_engine/risk_weights/index.ts create mode 100644 x-pack/plugins/security_solution/common/risk_engine/risk_weights/schema.test.ts create mode 100644 x-pack/plugins/security_solution/common/risk_engine/risk_weights/schema.ts create mode 100644 x-pack/plugins/security_solution/common/risk_engine/risk_weights/types.ts create mode 100644 x-pack/plugins/security_solution/common/risk_engine/utils.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.mock.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.test.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/helpers.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.mock.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.test.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/routes/index.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.test.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/routes/translations.ts create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/schema/risk_score_apis.yml create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/types.ts create mode 100644 x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine.ts diff --git a/packages/kbn-securitysolution-io-ts-types/index.ts b/packages/kbn-securitysolution-io-ts-types/index.ts index 1eb62ebf494a3..1b1e42e03c6f6 100644 --- a/packages/kbn-securitysolution-io-ts-types/index.ts +++ b/packages/kbn-securitysolution-io-ts-types/index.ts @@ -25,6 +25,7 @@ export * from './src/non_empty_array'; export * from './src/non_empty_or_nullable_string_array'; export * from './src/non_empty_string_array'; export * from './src/non_empty_string'; +export * from './src/number_between_zero_and_one_inclusive'; export * from './src/only_false_allowed'; export * from './src/operator'; export * from './src/positive_integer_greater_than_zero'; diff --git a/packages/kbn-securitysolution-io-ts-types/src/number_between_zero_and_one_inclusive/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/number_between_zero_and_one_inclusive/index.test.ts new file mode 100644 index 0000000000000..7373cc0e435fc --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/src/number_between_zero_and_one_inclusive/index.test.ts @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { pipe } from 'fp-ts/lib/pipeable'; +import { left } from 'fp-ts/lib/Either'; +import { NumberBetweenZeroAndOneInclusive } from '.'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; + +describe('NumberBetweenZeroAndOneInclusive', () => { + test('it should validate 1', () => { + const payload = 1; + const decoded = NumberBetweenZeroAndOneInclusive.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + test('it should validate a zero', () => { + const payload = 0; + const decoded = NumberBetweenZeroAndOneInclusive.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + test('it should validate a float between 0 and 1', () => { + const payload = 0.58; + const decoded = NumberBetweenZeroAndOneInclusive.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + test('it should NOT validate a negative number', () => { + const payload = -1; + const decoded = NumberBetweenZeroAndOneInclusive.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([ + 'Invalid value "-1" supplied to "NumberBetweenZeroAndOneInclusive"', + ]); + expect(message.schema).toEqual({}); + }); + + test('it should NOT validate NaN', () => { + const payload = NaN; + const decoded = NumberBetweenZeroAndOneInclusive.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([ + 'Invalid value "NaN" supplied to "NumberBetweenZeroAndOneInclusive"', + ]); + expect(message.schema).toEqual({}); + }); + + test('it should NOT validate Infinity', () => { + const payload = Infinity; + const decoded = NumberBetweenZeroAndOneInclusive.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([ + 'Invalid value "Infinity" supplied to "NumberBetweenZeroAndOneInclusive"', + ]); + expect(message.schema).toEqual({}); + }); + + test('it should NOT validate a string', () => { + const payload = 'some string'; + const decoded = NumberBetweenZeroAndOneInclusive.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([ + 'Invalid value "some string" supplied to "NumberBetweenZeroAndOneInclusive"', + ]); + expect(message.schema).toEqual({}); + }); +}); diff --git a/packages/kbn-securitysolution-io-ts-types/src/number_between_zero_and_one_inclusive/index.ts b/packages/kbn-securitysolution-io-ts-types/src/number_between_zero_and_one_inclusive/index.ts new file mode 100644 index 0000000000000..41f96a0b3ac11 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/src/number_between_zero_and_one_inclusive/index.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import * as t from 'io-ts'; +import { Either } from 'fp-ts/lib/Either'; + +/** + * Types a number between 0 and 1 inclusive. Useful for specifying a probability, weighting, etc. + */ +export const NumberBetweenZeroAndOneInclusive = new t.Type( + 'NumberBetweenZeroAndOneInclusive', + t.number.is, + (input, context): Either => { + return typeof input === 'number' && + !Number.isNaN(input) && + Number.isFinite(input) && + input >= 0 && + input <= 1 + ? t.success(input) + : t.failure(input, context); + }, + t.identity +); diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts index ec3c86097117c..2d88a0bb0066d 100644 --- a/x-pack/plugins/security_solution/common/constants.ts +++ b/x-pack/plugins/security_solution/common/constants.ts @@ -41,6 +41,7 @@ export const DEFAULT_SIGNALS_INDEX = '.siem-signals' as const; export const DEFAULT_PREVIEW_INDEX = '.preview.alerts-security.alerts' as const; export const DEFAULT_LISTS_INDEX = '.lists' as const; export const DEFAULT_ITEMS_INDEX = '.items' as const; +export const DEFAULT_RISK_SCORE_PAGE_SIZE = 1000 as const; // The DEFAULT_MAX_SIGNALS value exists also in `x-pack/plugins/cases/common/constants.ts` // If either changes, engineer should ensure both values are updated export const DEFAULT_MAX_SIGNALS = 100 as const; @@ -314,6 +315,8 @@ export const RISK_SCORE_CREATE_INDEX = `${INTERNAL_RISK_SCORE_URL}/indices/creat export const RISK_SCORE_DELETE_INDICES = `${INTERNAL_RISK_SCORE_URL}/indices/delete`; export const RISK_SCORE_CREATE_STORED_SCRIPT = `${INTERNAL_RISK_SCORE_URL}/stored_scripts/create`; export const RISK_SCORE_DELETE_STORED_SCRIPT = `${INTERNAL_RISK_SCORE_URL}/stored_scripts/delete`; +export const RISK_SCORE_PREVIEW_URL = `${INTERNAL_RISK_SCORE_URL}/preview`; + /** * Internal detection engine routes */ diff --git a/x-pack/plugins/security_solution/common/experimental_features.ts b/x-pack/plugins/security_solution/common/experimental_features.ts index 87651cff4bf95..07d06e4be4e6b 100644 --- a/x-pack/plugins/security_solution/common/experimental_features.ts +++ b/x-pack/plugins/security_solution/common/experimental_features.ts @@ -116,6 +116,11 @@ export const allowedExperimentalValues = Object.freeze({ * The flag doesn't have to be documented and has to be removed after the feature is ready to release. */ detectionsCoverageOverview: false, + + /** + * Enables experimental Entity Analytics HTTP endpoints + */ + riskScoringRoutesEnabled: false, }); type ExperimentalConfigKeys = Array; diff --git a/x-pack/plugins/security_solution/common/risk_engine/after_keys.test.ts b/x-pack/plugins/security_solution/common/risk_engine/after_keys.test.ts new file mode 100644 index 0000000000000..46664cd992e85 --- /dev/null +++ b/x-pack/plugins/security_solution/common/risk_engine/after_keys.test.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { pipe } from 'fp-ts/lib/pipeable'; +import { left } from 'fp-ts/lib/Either'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; + +import { afterKeysSchema } from './after_keys'; + +describe('after_keys schema', () => { + it('allows an empty object', () => { + const payload = {}; + const decoded = afterKeysSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('allows a valid host key', () => { + const payload = { host: { 'host.name': 'hello' } }; + const decoded = afterKeysSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('allows a valid user key', () => { + const payload = { user: { 'user.name': 'hello' } }; + const decoded = afterKeysSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('allows both valid host and user keys', () => { + const payload = { user: { 'user.name': 'hello' }, host: { 'host.name': 'hello' } }; + const decoded = afterKeysSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('removes an unknown identifier key if used', () => { + const payload = { bad: 'key' }; + const decoded = afterKeysSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual({}); + }); +}); diff --git a/x-pack/plugins/security_solution/common/risk_engine/after_keys.ts b/x-pack/plugins/security_solution/common/risk_engine/after_keys.ts new file mode 100644 index 0000000000000..5c6e7a22025cd --- /dev/null +++ b/x-pack/plugins/security_solution/common/risk_engine/after_keys.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as t from 'io-ts'; + +const afterKeySchema = t.record(t.string, t.string); +export type AfterKeySchema = t.TypeOf; +export type AfterKey = AfterKeySchema; + +export const afterKeysSchema = t.exact( + t.partial({ + host: afterKeySchema, + user: afterKeySchema, + }) +); +export type AfterKeysSchema = t.TypeOf; +export type AfterKeys = AfterKeysSchema; diff --git a/x-pack/plugins/security_solution/common/risk_engine/identifier_types.ts b/x-pack/plugins/security_solution/common/risk_engine/identifier_types.ts new file mode 100644 index 0000000000000..3741e321d4b0b --- /dev/null +++ b/x-pack/plugins/security_solution/common/risk_engine/identifier_types.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 * as t from 'io-ts'; + +export const identifierTypeSchema = t.keyof({ user: null, host: null }); +export type IdentifierTypeSchema = t.TypeOf; +export type IdentifierType = IdentifierTypeSchema; diff --git a/x-pack/plugins/security_solution/common/risk_engine/index.ts b/x-pack/plugins/security_solution/common/risk_engine/index.ts new file mode 100644 index 0000000000000..d22652bba8812 --- /dev/null +++ b/x-pack/plugins/security_solution/common/risk_engine/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './after_keys'; +export * from './risk_weights'; +export * from './identifier_types'; diff --git a/x-pack/plugins/security_solution/common/risk_engine/risk_score_preview/request_schema.ts b/x-pack/plugins/security_solution/common/risk_engine/risk_score_preview/request_schema.ts new file mode 100644 index 0000000000000..e76b0673c6d83 --- /dev/null +++ b/x-pack/plugins/security_solution/common/risk_engine/risk_score_preview/request_schema.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as t from 'io-ts'; +import { DataViewId } from '../../detection_engine/rule_schema'; +import { afterKeysSchema } from '../after_keys'; +import { identifierTypeSchema } from '../identifier_types'; +import { riskWeightsSchema } from '../risk_weights/schema'; + +export const riskScorePreviewRequestSchema = t.exact( + t.partial({ + after_keys: afterKeysSchema, + data_view_id: DataViewId, + debug: t.boolean, + filter: t.unknown, + page_size: t.number, + identifier_type: identifierTypeSchema, + range: t.type({ + start: t.string, + end: t.string, + }), + weights: riskWeightsSchema, + }) +); +export type RiskScorePreviewRequestSchema = t.TypeOf; diff --git a/x-pack/plugins/security_solution/common/risk_engine/risk_weights/index.ts b/x-pack/plugins/security_solution/common/risk_engine/risk_weights/index.ts new file mode 100644 index 0000000000000..8aa51f283cef7 --- /dev/null +++ b/x-pack/plugins/security_solution/common/risk_engine/risk_weights/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './types'; +export type { RiskWeight, RiskWeights, GlobalRiskWeight, RiskCategoryRiskWeight } from './schema'; diff --git a/x-pack/plugins/security_solution/common/risk_engine/risk_weights/schema.test.ts b/x-pack/plugins/security_solution/common/risk_engine/risk_weights/schema.test.ts new file mode 100644 index 0000000000000..7052a4d781ce3 --- /dev/null +++ b/x-pack/plugins/security_solution/common/risk_engine/risk_weights/schema.test.ts @@ -0,0 +1,234 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { pipe } from 'fp-ts/lib/pipeable'; +import { left } from 'fp-ts/lib/Either'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; + +import { riskWeightSchema } from './schema'; +import { RiskCategories, RiskWeightTypes } from './types'; + +describe('risk weight schema', () => { + let type: string; + + describe('allowed types', () => { + it('allows the global weight type', () => { + const payload = { + type: RiskWeightTypes.global, + host: 0.1, + }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('allows the risk category weight type', () => { + const payload = { + type: RiskWeightTypes.global, + host: 0.1, + }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('rejects an unknown weight type', () => { + const payload = { + type: 'unknown', + host: 0.1, + }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors)).length).toBeGreaterThan(0); + expect(message.schema).toEqual({}); + }); + }); + + describe('conditional fields', () => { + describe('global weights', () => { + beforeEach(() => { + type = RiskWeightTypes.global; + }); + + it('rejects if neither host nor user weight are specified', () => { + const payload = { type }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([ + 'Invalid value "undefined" supplied to "host"', + 'Invalid value "undefined" supplied to "user"', + ]); + expect(message.schema).toEqual({}); + }); + + it('allows a single host weight', () => { + const payload = { type, host: 0.1 }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('allows a single user weight', () => { + const payload = { type, user: 0.1 }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('allows both a host and user weight', () => { + const payload = { type, host: 0.1, user: 0.5 }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual({ type, host: 0.1, user: 0.5 }); + }); + + it('rejects a weight outside of 0-1', () => { + const payload = { type, user: 55 }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toContain('Invalid value "55" supplied to "user"'); + expect(message.schema).toEqual({}); + }); + + it('removes extra keys if specified', () => { + const payload = { + type, + host: 0.1, + value: 'superfluous', + extra: 'even more', + }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual({ type, host: 0.1 }); + }); + }); + + describe('risk category weights', () => { + beforeEach(() => { + type = RiskWeightTypes.riskCategory; + }); + + it('requires a value', () => { + const payload = { type, user: 0.1 }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([ + 'Invalid value "undefined" supplied to "value"', + ]); + expect(message.schema).toEqual({}); + }); + + it('rejects if neither host nor user weight are specified', () => { + const payload = { type, value: RiskCategories.alerts }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([ + 'Invalid value "undefined" supplied to "host"', + 'Invalid value "undefined" supplied to "user"', + ]); + expect(message.schema).toEqual({}); + }); + + it('allows a single host weight', () => { + const payload = { type, value: RiskCategories.alerts, host: 0.1 }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('allows a single user weight', () => { + const payload = { type, value: RiskCategories.alerts, user: 0.1 }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('allows both a host and user weight', () => { + const payload = { type, value: RiskCategories.alerts, user: 0.1, host: 0.5 }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('rejects a weight outside of 0-1', () => { + const payload = { type, value: RiskCategories.alerts, host: -5 }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toContain('Invalid value "-5" supplied to "host"'); + expect(message.schema).toEqual({}); + }); + + it('removes extra keys if specified', () => { + const payload = { + type, + value: RiskCategories.alerts, + host: 0.1, + extra: 'even more', + }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual({ type, value: RiskCategories.alerts, host: 0.1 }); + }); + + describe('allowed category values', () => { + it('allows the alerts type for a category', () => { + const payload = { + type, + value: RiskCategories.alerts, + host: 0.1, + }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + it('rejects an unknown category value', () => { + const payload = { + type, + value: 'unknown', + host: 0.1, + }; + const decoded = riskWeightSchema.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toContain( + 'Invalid value "unknown" supplied to "value"' + ); + expect(message.schema).toEqual({}); + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/common/risk_engine/risk_weights/schema.ts b/x-pack/plugins/security_solution/common/risk_engine/risk_weights/schema.ts new file mode 100644 index 0000000000000..16a8a6da03ae6 --- /dev/null +++ b/x-pack/plugins/security_solution/common/risk_engine/risk_weights/schema.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as t from 'io-ts'; +import { NumberBetweenZeroAndOneInclusive } from '@kbn/securitysolution-io-ts-types'; + +import { fromEnum } from '../utils'; +import { RiskCategories, RiskWeightTypes } from './types'; + +const hostWeight = t.type({ + host: NumberBetweenZeroAndOneInclusive, +}); + +const userWeight = t.type({ + user: NumberBetweenZeroAndOneInclusive, +}); + +const identifierWeights = t.union([ + t.exact(t.intersection([hostWeight, userWeight])), + t.exact(t.intersection([hostWeight, t.partial({ user: t.undefined })])), + t.exact(t.intersection([userWeight, t.partial({ host: t.undefined })])), +]); + +const riskCategories = fromEnum('riskCategories', RiskCategories); + +const globalRiskWeightSchema = t.intersection([ + t.exact( + t.type({ + type: t.literal(RiskWeightTypes.global), + }) + ), + identifierWeights, +]); +export type GlobalRiskWeight = t.TypeOf; + +const riskCategoryRiskWeightSchema = t.intersection([ + t.exact( + t.type({ + type: t.literal(RiskWeightTypes.riskCategory), + value: riskCategories, + }) + ), + identifierWeights, +]); +export type RiskCategoryRiskWeight = t.TypeOf; + +export const riskWeightSchema = t.union([globalRiskWeightSchema, riskCategoryRiskWeightSchema]); +export type RiskWeightSchema = t.TypeOf; +export type RiskWeight = RiskWeightSchema; + +export const riskWeightsSchema = t.array(riskWeightSchema); +export type RiskWeightsSchema = t.TypeOf; +export type RiskWeights = RiskWeightsSchema; diff --git a/x-pack/plugins/security_solution/common/risk_engine/risk_weights/types.ts b/x-pack/plugins/security_solution/common/risk_engine/risk_weights/types.ts new file mode 100644 index 0000000000000..de995d565e696 --- /dev/null +++ b/x-pack/plugins/security_solution/common/risk_engine/risk_weights/types.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export enum RiskWeightTypes { + global = 'global_identifier', + riskCategory = 'risk_category', +} + +export enum RiskCategories { + alerts = 'alerts', +} diff --git a/x-pack/plugins/security_solution/common/risk_engine/utils.ts b/x-pack/plugins/security_solution/common/risk_engine/utils.ts new file mode 100644 index 0000000000000..51401eb9ff19d --- /dev/null +++ b/x-pack/plugins/security_solution/common/risk_engine/utils.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as t from 'io-ts'; +/* + * This utility function can be used to turn a TypeScript enum into a io-ts codec. + */ +export function fromEnum( + enumName: string, + theEnum: Record +): t.Type { + const isEnumValue = (input: unknown): input is EnumType => + Object.values(theEnum).includes(input); + + return new t.Type( + enumName, + isEnumValue, + (input, context) => (isEnumValue(input) ? t.success(input) : t.failure(input, context)), + t.identity + ); +} diff --git a/x-pack/plugins/security_solution/server/client/client.ts b/x-pack/plugins/security_solution/server/client/client.ts index 03d7afa4b39bd..c7e63769ac1e0 100644 --- a/x-pack/plugins/security_solution/server/client/client.ts +++ b/x-pack/plugins/security_solution/server/client/client.ts @@ -6,9 +6,14 @@ */ import type { ConfigType } from '../config'; -import { DEFAULT_DATA_VIEW_ID, DEFAULT_PREVIEW_INDEX } from '../../common/constants'; +import { + DEFAULT_ALERTS_INDEX, + DEFAULT_DATA_VIEW_ID, + DEFAULT_PREVIEW_INDEX, +} from '../../common/constants'; export class AppClient { + private readonly alertsIndex: string; private readonly signalsIndex: string; private readonly spaceId: string; private readonly previewIndex: string; @@ -19,6 +24,7 @@ export class AppClient { constructor(spaceId: string, config: ConfigType, kibanaVersion: string, kibanaBranch: string) { const configuredSignalsIndex = config.signalsIndex; + this.alertsIndex = `${DEFAULT_ALERTS_INDEX}-${spaceId}`; this.signalsIndex = `${configuredSignalsIndex}-${spaceId}`; this.previewIndex = `${DEFAULT_PREVIEW_INDEX}-${spaceId}`; this.sourcererDataViewId = `${DEFAULT_DATA_VIEW_ID}-${spaceId}`; @@ -27,6 +33,7 @@ export class AppClient { this.kibanaBranch = kibanaBranch; } + public getAlertsIndex = (): string => this.alertsIndex; public getSignalsIndex = (): string => this.signalsIndex; public getPreviewIndex = (): string => this.previewIndex; public getSourcererDataViewId = (): string => this.sourcererDataViewId; diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.mock.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.mock.ts new file mode 100644 index 0000000000000..0c091cdbc494d --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.mock.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { CalculateRiskScoreAggregations, RiskScoreBucket } from './types'; + +const createRiskScoreBucketMock = (overrides: Partial = {}): RiskScoreBucket => ({ + key: { 'user.name': 'username', category: 'alert' }, + doc_count: 2, + risk_details: { + value: { + score: 20, + normalized_score: 30.0, + level: 'Unknown', + notes: [], + alerts_score: 30, + other_score: 0, + }, + }, + riskiest_inputs: { + took: 17, + timed_out: false, + _shards: { + total: 1, + successful: 1, + skipped: 0, + failed: 0, + }, + hits: { + total: { + value: 1, + relation: 'eq', + }, + hits: [{ _id: '_id', _index: '_index', sort: [30] }], + }, + }, + + ...overrides, +}); + +const createAggregationResponseMock = ( + overrides: Partial = {} +): CalculateRiskScoreAggregations => ({ + host: { + after_key: { 'host.name': 'hostname' }, + buckets: [createRiskScoreBucketMock(), createRiskScoreBucketMock()], + }, + user: { + after_key: { 'user.name': 'username' }, + buckets: [createRiskScoreBucketMock(), createRiskScoreBucketMock()], + }, + ...overrides, +}); + +export const calculateRiskScoreMock = { + createAggregationResponse: createAggregationResponseMock, + createRiskScoreBucket: createRiskScoreBucketMock, +}; diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.test.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.test.ts new file mode 100644 index 0000000000000..0bca9036dc72d --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.test.ts @@ -0,0 +1,198 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { ElasticsearchClient, Logger } from '@kbn/core/server'; +import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; + +import { calculateRiskScores } from './calculate_risk_scores'; +import { calculateRiskScoreMock } from './calculate_risk_scores.mock'; + +describe('calculateRiskScores()', () => { + let params: Parameters[0]; + let esClient: ElasticsearchClient; + let logger: Logger; + + beforeEach(() => { + esClient = elasticsearchServiceMock.createScopedClusterClient().asCurrentUser; + logger = loggingSystemMock.createLogger(); + params = { + afterKeys: {}, + esClient, + logger, + index: 'index', + pageSize: 500, + range: { start: 'now - 15d', end: 'now' }, + }; + }); + + describe('inputs', () => { + it('builds a filter on @timestamp based on the provided range', async () => { + await calculateRiskScores(params); + expect(esClient.search).toHaveBeenCalledWith( + expect.objectContaining({ + query: { + bool: { + filter: expect.arrayContaining([ + { + range: { '@timestamp': { gte: 'now - 15d', lt: 'now' } }, + }, + ]), + }, + }, + }) + ); + }); + + describe('identifierType', () => { + it('creates aggs for both host and user by default', async () => { + await calculateRiskScores(params); + expect(esClient.search).toHaveBeenCalledWith( + expect.objectContaining({ + aggs: expect.objectContaining({ host: expect.anything(), user: expect.anything() }), + }) + ); + }); + + it('creates an aggregation per specified identifierType', async () => { + params = { ...params, identifierType: 'host' }; + await calculateRiskScores(params); + const [[call]] = (esClient.search as jest.Mock).mock.calls; + expect(call).toEqual( + expect.objectContaining({ aggs: expect.objectContaining({ host: expect.anything() }) }) + ); + expect(call.aggs).toHaveProperty('host'); + expect(call.aggs).not.toHaveProperty('user'); + }); + }); + + describe('after_keys', () => { + it('applies a single after_key to the correct aggregation', async () => { + params = { ...params, afterKeys: { host: { 'host.name': 'foo' } } }; + await calculateRiskScores(params); + const [[call]] = (esClient.search as jest.Mock).mock.calls; + expect(call).toEqual( + expect.objectContaining({ + aggs: expect.objectContaining({ + host: expect.objectContaining({ + composite: expect.objectContaining({ after: { 'host.name': 'foo' } }), + }), + }), + }) + ); + }); + + it('applies multiple after_keys to the correct aggregations', async () => { + params = { + ...params, + afterKeys: { + host: { 'host.name': 'foo' }, + user: { 'user.name': 'bar' }, + }, + }; + await calculateRiskScores(params); + const [[call]] = (esClient.search as jest.Mock).mock.calls; + + expect(call).toEqual( + expect.objectContaining({ + aggs: expect.objectContaining({ + host: expect.objectContaining({ + composite: expect.objectContaining({ after: { 'host.name': 'foo' } }), + }), + user: expect.objectContaining({ + composite: expect.objectContaining({ after: { 'user.name': 'bar' } }), + }), + }), + }) + ); + }); + + it('uses an undefined after_key by default', async () => { + await calculateRiskScores(params); + const [[call]] = (esClient.search as jest.Mock).mock.calls; + + expect(call).toEqual( + expect.objectContaining({ + aggs: expect.objectContaining({ + host: expect.objectContaining({ + composite: expect.objectContaining({ after: undefined }), + }), + user: expect.objectContaining({ + composite: expect.objectContaining({ after: undefined }), + }), + }), + }) + ); + }); + }); + }); + + describe('outputs', () => { + beforeEach(() => { + // stub out a reasonable response + (esClient.search as jest.Mock).mockResolvedValueOnce({ + aggregations: calculateRiskScoreMock.createAggregationResponse(), + }); + }); + + it('returns a flattened list of risk scores', async () => { + const response = await calculateRiskScores(params); + expect(response).toHaveProperty('scores'); + expect(response.scores).toHaveLength(4); + }); + + it('returns scores in the expected format', async () => { + const { + scores: [score], + } = await calculateRiskScores(params); + expect(score).toEqual( + expect.objectContaining({ + '@timestamp': expect.any(String), + identifierField: expect.any(String), + identifierValue: expect.any(String), + level: 'Unknown', + totalScore: expect.any(Number), + totalScoreNormalized: expect.any(Number), + alertsScore: expect.any(Number), + otherScore: expect.any(Number), + }) + ); + }); + + it('returns risk inputs in the expected format', async () => { + const { + scores: [score], + } = await calculateRiskScores(params); + expect(score).toEqual( + expect.objectContaining({ + riskiestInputs: expect.arrayContaining([ + expect.objectContaining({ + id: expect.any(String), + index: expect.any(String), + riskScore: expect.any(Number), + }), + ]), + }) + ); + }); + }); + + describe('error conditions', () => { + beforeEach(() => { + // stub out a rejected response + (esClient.search as jest.Mock).mockRejectedValueOnce({ + aggregations: calculateRiskScoreMock.createAggregationResponse(), + }); + }); + + it('raises an error if elasticsearch client rejects', () => { + expect.assertions(1); + expect(() => calculateRiskScores(params)).rejects.toEqual({ + aggregations: calculateRiskScoreMock.createAggregationResponse(), + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.ts new file mode 100644 index 0000000000000..c92513649b4f8 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.ts @@ -0,0 +1,277 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { + AggregationsAggregationContainer, + QueryDslQueryContainer, +} from '@elastic/elasticsearch/lib/api/types'; +import type { ElasticsearchClient, Logger } from '@kbn/core/server'; +import { + ALERT_RISK_SCORE, + EVENT_KIND, +} from '@kbn/rule-registry-plugin/common/technical_rule_data_field_names'; +import type { AfterKeys, IdentifierType, RiskWeights } from '../../../common/risk_engine'; +import { withSecuritySpan } from '../../utils/with_security_span'; +import { getAfterKeyForIdentifierType, getFieldForIdentifierAgg } from './helpers'; +import { + buildCategoryScoreAssignment, + buildCategoryScoreDeclarations, + buildWeightingOfScoreByCategory, + getGlobalWeightForIdentifierType, +} from './risk_weights'; +import type { + CalculateRiskScoreAggregations, + GetScoresParams, + GetScoresResponse, + RiskScore, + RiskScoreBucket, +} from './types'; + +const bucketToResponse = ({ + bucket, + now, + identifierField, +}: { + bucket: RiskScoreBucket; + now: string; + identifierField: string; +}): RiskScore => ({ + '@timestamp': now, + identifierField, + identifierValue: bucket.key[identifierField], + level: bucket.risk_details.value.level, + totalScore: bucket.risk_details.value.score, + totalScoreNormalized: bucket.risk_details.value.normalized_score, + alertsScore: bucket.risk_details.value.alerts_score, + otherScore: bucket.risk_details.value.other_score, + notes: bucket.risk_details.value.notes, + riskiestInputs: bucket.riskiest_inputs.hits.hits.map((riskInput) => ({ + id: riskInput._id, + index: riskInput._index, + riskScore: riskInput.sort?.[0] ?? undefined, + })), +}); + +const filterFromRange = (range: GetScoresParams['range']): QueryDslQueryContainer => ({ + range: { '@timestamp': { lt: range.end, gte: range.start } }, +}); + +const buildReduceScript = ({ + globalIdentifierTypeWeight, +}: { + globalIdentifierTypeWeight?: number; +}): string => { + return ` + Map results = new HashMap(); + List inputs = []; + for (state in states) { + inputs.addAll(state.inputs) + } + Collections.sort(inputs, (a, b) -> b.get('weighted_score').compareTo(a.get('weighted_score'))); + + double num_inputs_to_score = Math.min(inputs.length, params.max_risk_inputs_per_identity); + results['notes'] = []; + if (num_inputs_to_score == params.max_risk_inputs_per_identity) { + results['notes'].add('Number of risk inputs (' + inputs.length + ') exceeded the maximum allowed (' + params.max_risk_inputs_per_identity + ').'); + } + + ${buildCategoryScoreDeclarations()} + + double total_score = 0; + double current_score = 0; + for (int i = 0; i < num_inputs_to_score; i++) { + current_score = inputs[i].weighted_score / Math.pow(i + 1, params.p); + + ${buildCategoryScoreAssignment()} + total_score += current_score; + } + + ${globalIdentifierTypeWeight != null ? `total_score *= ${globalIdentifierTypeWeight};` : ''} + double score_norm = 100 * total_score / params.risk_cap; + results['score'] = total_score; + results['normalized_score'] = score_norm; + + if (score_norm < 20) { + results['level'] = 'Unknown' + } + else if (score_norm >= 20 && score_norm < 40) { + results['level'] = 'Low' + } + else if (score_norm >= 40 && score_norm < 70) { + results['level'] = 'Moderate' + } + else if (score_norm >= 70 && score_norm < 90) { + results['level'] = 'High' + } + else if (score_norm >= 90) { + results['level'] = 'Critical' + } + + return results; + `; +}; + +const buildIdentifierTypeAggregation = ({ + afterKeys, + identifierType, + pageSize, + weights, +}: { + afterKeys: AfterKeys; + identifierType: IdentifierType; + pageSize: number; + weights?: RiskWeights; +}): AggregationsAggregationContainer => { + const globalIdentifierTypeWeight = getGlobalWeightForIdentifierType({ identifierType, weights }); + const identifierField = getFieldForIdentifierAgg(identifierType); + + return { + composite: { + size: pageSize, + sources: [ + { + [identifierField]: { + terms: { + field: identifierField, + }, + }, + }, + ], + after: getAfterKeyForIdentifierType({ identifierType, afterKeys }), + }, + aggs: { + riskiest_inputs: { + top_hits: { + size: 10, + sort: { [ALERT_RISK_SCORE]: 'desc' }, + _source: false, + }, + }, + risk_details: { + scripted_metric: { + init_script: 'state.inputs = []', + map_script: ` + Map fields = new HashMap(); + String category = doc['${EVENT_KIND}'].value; + double score = doc['${ALERT_RISK_SCORE}'].value; + double weighted_score = 0.0; + + fields.put('time', doc['@timestamp'].value); + fields.put('category', category); + fields.put('score', score); + ${buildWeightingOfScoreByCategory({ userWeights: weights, identifierType })} + fields.put('weighted_score', weighted_score); + + state.inputs.add(fields); + `, + combine_script: 'return state;', + params: { + max_risk_inputs_per_identity: 999999, + p: 1.5, + risk_cap: 261.2, + }, + reduce_script: buildReduceScript({ globalIdentifierTypeWeight }), + }, + }, + }, + }; +}; + +export const calculateRiskScores = async ({ + afterKeys: userAfterKeys, + debug, + esClient, + filter: userFilter, + identifierType, + index, + logger, + pageSize, + range, + weights, +}: { + esClient: ElasticsearchClient; + logger: Logger; +} & GetScoresParams): Promise => + withSecuritySpan('calculateRiskScores', async () => { + const now = new Date().toISOString(); + + const filter = [{ exists: { field: ALERT_RISK_SCORE } }, filterFromRange(range)]; + if (userFilter) { + filter.push(userFilter as QueryDslQueryContainer); + } + const identifierTypes: IdentifierType[] = identifierType ? [identifierType] : ['host', 'user']; + + const request = { + size: 0, + _source: false, + index, + query: { + bool: { + filter, + }, + }, + aggs: identifierTypes.reduce((aggs, _identifierType) => { + aggs[_identifierType] = buildIdentifierTypeAggregation({ + afterKeys: userAfterKeys, + identifierType: _identifierType, + pageSize, + weights, + }); + return aggs; + }, {} as Record), + }; + + if (debug) { + logger.info(`Executing Risk Score query:\n${JSON.stringify(request)}`); + } + + const response = await esClient.search(request); + + if (debug) { + logger.info(`Received Risk Score response:\n${JSON.stringify(response)}`); + } + + if (response.aggregations == null) { + return { + ...(debug ? { request, response } : {}), + after_keys: {}, + scores: [], + }; + } + + const userBuckets = response.aggregations.user?.buckets ?? []; + const hostBuckets = response.aggregations.host?.buckets ?? []; + + const afterKeys = { + host: response.aggregations.host?.after_key, + user: response.aggregations.user?.after_key, + }; + + const scores = userBuckets + .map((bucket) => + bucketToResponse({ + bucket, + identifierField: 'user.name', + now, + }) + ) + .concat( + hostBuckets.map((bucket) => + bucketToResponse({ + bucket, + identifierField: 'host.name', + now, + }) + ) + ); + + return { + ...(debug ? { request, response } : {}), + after_keys: afterKeys, + scores, + }; + }); diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/helpers.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/helpers.ts new file mode 100644 index 0000000000000..a8f9563ba5e90 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/helpers.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Logger, SavedObjectsClientContract } from '@kbn/core/server'; +import type { DataViewAttributes } from '@kbn/data-views-plugin/common'; +import type { AfterKey, AfterKeys, IdentifierType } from '../../../common/risk_engine'; + +export const getRiskInputsIndex = async ({ + dataViewId, + logger, + soClient, +}: { + dataViewId: string; + logger: Logger; + soClient: SavedObjectsClientContract; +}): Promise => { + try { + const dataView = await soClient.get('index-pattern', dataViewId); + return dataView.attributes.title; + } catch (e) { + logger.debug(`No dataview found for ID '${dataViewId}'`); + } +}; + +export const getFieldForIdentifierAgg = (identifierType: IdentifierType): string => + identifierType === 'host' ? 'host.name' : 'user.name'; + +export const getAfterKeyForIdentifierType = ({ + afterKeys, + identifierType, +}: { + afterKeys: AfterKeys; + identifierType: IdentifierType; +}): AfterKey | undefined => afterKeys[identifierType]; diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.mock.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.mock.ts new file mode 100644 index 0000000000000..642e71c155e46 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.mock.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RiskScoreService } from './risk_score_service'; +import type { RiskScore } from './types'; + +const createRiskScoreMock = (overrides: Partial = {}): RiskScore => ({ + '@timestamp': '2023-02-15T00:15:19.231Z', + identifierField: 'host.name', + identifierValue: 'hostname', + level: 'High', + totalScore: 149, + totalScoreNormalized: 85.332, + alertsScore: 85, + otherScore: 0, + notes: [], + riskiestInputs: [], + ...overrides, +}); + +const createRiskScoreServiceMock = (): jest.Mocked => ({ + getScores: jest.fn(), +}); + +export const riskScoreServiceMock = { + create: createRiskScoreServiceMock, + createRiskScore: createRiskScoreMock, +}; diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.ts new file mode 100644 index 0000000000000..c60ea852f5603 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ElasticsearchClient, Logger } from '@kbn/core/server'; +import type { GetScoresParams, GetScoresResponse } from './types'; +import { calculateRiskScores } from './calculate_risk_scores'; + +export interface RiskScoreService { + getScores: (params: GetScoresParams) => Promise; +} + +export const riskScoreService = ({ + esClient, + logger, +}: { + esClient: ElasticsearchClient; + logger: Logger; +}): RiskScoreService => ({ + getScores: (params) => calculateRiskScores({ ...params, esClient, logger }), +}); diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.test.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.test.ts new file mode 100644 index 0000000000000..4d93bb83452e1 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.test.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 { RiskWeightTypes, RiskCategories } from '../../../common/risk_engine'; +import { + buildCategoryScoreAssignment, + buildCategoryWeights, + buildWeightingOfScoreByCategory, +} from './risk_weights'; + +describe('buildCategoryWeights', () => { + it('returns the default weights if nothing else is provided', () => { + const result = buildCategoryWeights(); + + expect(result).toEqual([ + { host: 1, type: RiskWeightTypes.riskCategory, user: 1, value: RiskCategories.alerts }, + ]); + }); + + it('allows user weights to override defaults', () => { + const result = buildCategoryWeights([ + { type: RiskWeightTypes.riskCategory, value: RiskCategories.alerts, host: 0.1, user: 0.2 }, + ]); + + expect(result).toEqual([ + { host: 0.1, type: RiskWeightTypes.riskCategory, user: 0.2, value: RiskCategories.alerts }, + ]); + }); + + it('uses default category weights if unspecified in user-provided weight', () => { + const result = buildCategoryWeights([ + { type: RiskWeightTypes.riskCategory, value: RiskCategories.alerts, host: 0.1 }, + ]); + + expect(result).toEqual([ + { host: 0.1, type: RiskWeightTypes.riskCategory, user: 1, value: RiskCategories.alerts }, + ]); + }); +}); + +describe('buildCategoryScoreAssignment', () => { + it('builds the expected assignment statement', () => { + const result = buildCategoryScoreAssignment(); + + expect(result).toMatchInlineSnapshot( + `"if (inputs[i].category == 'signal') { results['alerts_score'] += current_score; } else { results['other_score'] += current_score; }"` + ); + }); +}); + +describe('buildWeightingOfScoreByCategory', () => { + it('returns default weights if no user values provided', () => { + const result = buildWeightingOfScoreByCategory({ identifierType: 'user' }); + + expect(result).toMatchInlineSnapshot( + `"if (category == 'signal') { weighted_score = score * 1; } else { weighted_score = score; }"` + ); + }); + + it('returns default weights if no weights provided', () => { + const result = buildWeightingOfScoreByCategory({ userWeights: [], identifierType: 'host' }); + + expect(result).toMatchInlineSnapshot( + `"if (category == 'signal') { weighted_score = score * 1; } else { weighted_score = score; }"` + ); + }); + + it('returns default weights if only global weights provided', () => { + const result = buildWeightingOfScoreByCategory({ + userWeights: [{ type: RiskWeightTypes.global, host: 0.1 }], + identifierType: 'host', + }); + + expect(result).toMatchInlineSnapshot( + `"if (category == 'signal') { weighted_score = score * 1; } else { weighted_score = score; }"` + ); + }); + + it('returns specified weight when a category weight is provided', () => { + const result = buildWeightingOfScoreByCategory({ + userWeights: [ + { type: RiskWeightTypes.riskCategory, value: RiskCategories.alerts, host: 0.1, user: 0.2 }, + ], + identifierType: 'host', + }); + + expect(result).toMatchInlineSnapshot( + `"if (category == 'signal') { weighted_score = score * 0.1; } else { weighted_score = score; }"` + ); + }); + + it('returns a default weight when a category weight is provided but not the one being used', () => { + const result = buildWeightingOfScoreByCategory({ + userWeights: [ + { type: RiskWeightTypes.riskCategory, value: RiskCategories.alerts, host: 0.1 }, + ], + identifierType: 'user', + }); + + expect(result).toMatchInlineSnapshot( + `"if (category == 'signal') { weighted_score = score * 1; } else { weighted_score = score; }"` + ); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.ts new file mode 100644 index 0000000000000..60651140a779e --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.ts @@ -0,0 +1,104 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { keyBy, merge } from 'lodash'; +import type { + GlobalRiskWeight, + IdentifierType, + RiskCategoryRiskWeight, + RiskWeight, + RiskWeights, +} from '../../../common/risk_engine'; +import { RiskCategories, RiskWeightTypes } from '../../../common/risk_engine'; + +const RISK_CATEGORIES = Object.values(RiskCategories); + +const DEFAULT_CATEGORY_WEIGHTS: RiskWeights = RISK_CATEGORIES.map((category) => ({ + type: RiskWeightTypes.riskCategory, + value: category, + host: 1, + user: 1, +})); + +/* + * This function and its use can be deleted once we've replaced our use of event.kind with a proper risk category field. + */ +const convertCategoryToEventKindValue = (category?: string): string | undefined => + category === 'alerts' ? 'signal' : category; + +const isGlobalIdentifierTypeWeight = (weight: RiskWeight): weight is GlobalRiskWeight => + weight.type === RiskWeightTypes.global; +const isRiskCategoryWeight = (weight: RiskWeight): weight is RiskCategoryRiskWeight => + weight.type === RiskWeightTypes.riskCategory; + +export const getGlobalWeightForIdentifierType = ({ + identifierType, + weights, +}: { + identifierType: IdentifierType; + weights?: RiskWeights; +}): number | undefined => { + return weights?.find(isGlobalIdentifierTypeWeight)?.[identifierType]; +}; + +const getRiskCategoryWeights = (weights?: RiskWeights): RiskCategoryRiskWeight[] => + weights?.filter(isRiskCategoryWeight) ?? []; + +const getWeightForIdentifierType = (weight: RiskWeight, identifierType: IdentifierType): number => { + const configuredWeight = weight[identifierType]; + return typeof configuredWeight === 'number' ? configuredWeight : 1; +}; + +export const buildCategoryScoreDeclarations = (): string => { + const otherScoreDeclaration = `results['other_score'] = 0;`; + + return RISK_CATEGORIES.map((riskCategory) => `results['${riskCategory}_score'] = 0;`) + .join('') + .concat(otherScoreDeclaration); +}; + +export const buildCategoryWeights = (userWeights?: RiskWeights): RiskCategoryRiskWeight[] => { + const categoryWeights = getRiskCategoryWeights(userWeights); + + return Object.values( + merge({}, keyBy(DEFAULT_CATEGORY_WEIGHTS, 'value'), keyBy(categoryWeights, 'value')) + ); +}; + +export const buildCategoryScoreAssignment = (): string => { + const otherClause = `results['other_score'] += current_score;`; + + return RISK_CATEGORIES.map( + (category) => + `if (inputs[i].category == '${convertCategoryToEventKindValue( + category + )}') { results['${category}_score'] += current_score; }` + ) + .join(' else ') + .concat(` else { ${otherClause} }`); +}; + +export const buildWeightingOfScoreByCategory = ({ + userWeights, + identifierType, +}: { + userWeights?: RiskWeights; + identifierType: IdentifierType; +}): string => { + const otherClause = `weighted_score = score;`; + const categoryWeights = buildCategoryWeights(userWeights); + + return categoryWeights + .map( + (weight) => + `if (category == '${convertCategoryToEventKindValue( + weight.value + )}') { weighted_score = score * ${getWeightForIdentifierType(weight, identifierType)}; }` + ) + .join(' else ') + .concat(` else { ${otherClause} }`); +}; diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/index.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/index.ts new file mode 100644 index 0000000000000..2d76d490948d2 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { riskScorePreviewRoute } from './risk_score_preview_route'; diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.test.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.test.ts new file mode 100644 index 0000000000000..fcf98c1b1ef7c --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.test.ts @@ -0,0 +1,252 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { loggerMock } from '@kbn/logging-mocks'; + +import { RISK_SCORE_PREVIEW_URL } from '../../../../common/constants'; +import { RiskCategories, RiskWeightTypes } from '../../../../common/risk_engine'; +import { + serverMock, + requestContextMock, + requestMock, +} from '../../detection_engine/routes/__mocks__'; +import { riskScoreService } from '../risk_score_service'; +import { riskScoreServiceMock } from '../risk_score_service.mock'; +import { riskScorePreviewRoute } from './risk_score_preview_route'; + +jest.mock('../risk_score_service'); + +describe('POST risk_engine/preview route', () => { + let server: ReturnType; + let { clients, context } = requestContextMock.createTools(); + let logger: ReturnType; + let mockRiskScoreService: ReturnType; + + beforeEach(() => { + jest.resetAllMocks(); + + server = serverMock.create(); + logger = loggerMock.create(); + ({ clients, context } = requestContextMock.createTools()); + mockRiskScoreService = riskScoreServiceMock.create(); + + clients.appClient.getAlertsIndex.mockReturnValue('default-alerts-index'); + (riskScoreService as jest.Mock).mockReturnValue(mockRiskScoreService); + + riskScorePreviewRoute(server.router, logger); + }); + + const buildRequest = (body: object = {}) => + requestMock.create({ + method: 'get', + path: RISK_SCORE_PREVIEW_URL, + body, + }); + + describe('parameters', () => { + describe('index / dataview', () => { + it('defaults to scoring the alerts index if no dataview is provided', async () => { + const request = buildRequest(); + + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.getScores).toHaveBeenCalledWith( + expect.objectContaining({ index: 'default-alerts-index' }) + ); + }); + + it('respects the provided dataview', async () => { + const request = buildRequest({ data_view_id: 'custom-dataview-id' }); + + // mock call to get dataview title + clients.savedObjectsClient.get.mockResolvedValueOnce({ + id: '', + type: '', + references: [], + attributes: { title: 'custom-dataview-index' }, + }); + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.getScores).toHaveBeenCalledWith( + expect.objectContaining({ index: 'custom-dataview-index' }) + ); + }); + + it('returns a 404 if dataview is not found', async () => { + const request = buildRequest({ data_view_id: 'custom-dataview-id' }); + + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(404); + expect(response.body.message).toEqual( + 'The specified dataview (custom-dataview-id) was not found. Please use an existing dataview, or omit the parameter to use the default risk inputs.' + ); + expect(mockRiskScoreService.getScores).not.toHaveBeenCalled(); + }); + }); + + describe('date range', () => { + it('defaults to the last 15 days of data', async () => { + const request = buildRequest(); + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.getScores).toHaveBeenCalledWith( + expect.objectContaining({ range: { start: 'now-15d', end: 'now' } }) + ); + }); + + it('respects the provided range if provided', async () => { + const request = buildRequest({ range: { start: 'now-30d', end: 'now-20d' } }); + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.getScores).toHaveBeenCalledWith( + expect.objectContaining({ range: { start: 'now-30d', end: 'now-20d' } }) + ); + }); + + it('rejects an invalid date range', async () => { + const request = buildRequest({ + range: { end: 'now' }, + }); + + const result = await server.validate(request); + expect(result.badRequest).toHaveBeenCalledWith( + expect.stringContaining('Invalid value "undefined" supplied to "range,start"') + ); + }); + }); + + describe('data filter', () => { + it('respects the provided filter if provided', async () => { + const request = buildRequest({ + filter: { + bool: { + filter: [ + { + ids: { + values: '1', + }, + }, + ], + }, + }, + }); + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.getScores).toHaveBeenCalledWith( + expect.objectContaining({ + filter: { + bool: { + filter: [ + { + ids: { + values: '1', + }, + }, + ], + }, + }, + }) + ); + }); + }); + + describe('weights', () => { + it('uses the specified weights when provided', async () => { + const request = buildRequest({ + weights: [ + { + type: RiskWeightTypes.riskCategory, + value: RiskCategories.alerts, + host: 0.1, + user: 0.2, + }, + ], + }); + + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.getScores).toHaveBeenCalledWith( + expect.objectContaining({ + weights: [ + { + type: RiskWeightTypes.riskCategory, + value: RiskCategories.alerts, + host: 0.1, + user: 0.2, + }, + ], + }) + ); + }); + + it('rejects weight values outside the 0-1 range', async () => { + const request = buildRequest({ + weights: [ + { + type: RiskWeightTypes.riskCategory, + value: RiskCategories.alerts, + host: 1.1, + }, + ], + }); + + const result = await server.validate(request); + expect(result.badRequest).toHaveBeenCalledWith( + expect.stringContaining('Invalid value "1.1" supplied to "weights,host"') + ); + }); + + it('rejects unknown weight types', async () => { + const request = buildRequest({ + weights: [ + { + type: 'something new', + host: 1.1, + }, + ], + }); + + const result = await server.validate(request); + expect(result.badRequest).toHaveBeenCalledWith( + 'Invalid value "{"type":"something new","host":1.1}" supplied to "weights"' + ); + }); + }); + + describe('pagination', () => { + it('respects the provided after_key', async () => { + const afterKey = { 'host.name': 'hi mom' }; + const request = buildRequest({ after_keys: { host: afterKey } }); + + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.getScores).toHaveBeenCalledWith( + expect.objectContaining({ afterKeys: { host: afterKey } }) + ); + }); + + it('rejects an invalid after_key', async () => { + const request = buildRequest({ + after_keys: { + bad: 'key', + }, + }); + + const result = await server.validate(request); + expect(result.badRequest).toHaveBeenCalledWith('invalid keys "bad"'); + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts new file mode 100644 index 0000000000000..c5a699264c321 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { Logger } from '@kbn/core/server'; +import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; +import { DEFAULT_RISK_SCORE_PAGE_SIZE, RISK_SCORE_PREVIEW_URL } from '../../../../common/constants'; +import { riskScorePreviewRequestSchema } from '../../../../common/risk_engine/risk_score_preview/request_schema'; +import type { SecuritySolutionPluginRouter } from '../../../types'; +import { buildRouteValidation } from '../../../utils/build_validation/route_validation'; +import { riskScoreService } from '../risk_score_service'; +import { getRiskInputsIndex } from '../helpers'; +import { DATAVIEW_NOT_FOUND } from './translations'; + +export const riskScorePreviewRoute = (router: SecuritySolutionPluginRouter, logger: Logger) => { + router.post( + { + path: RISK_SCORE_PREVIEW_URL, + validate: { body: buildRouteValidation(riskScorePreviewRequestSchema) }, + options: { + tags: ['access:securitySolution'], + }, + }, + async (context, request, response) => { + const siemResponse = buildSiemResponse(response); + const esClient = (await context.core).elasticsearch.client.asCurrentUser; + const soClient = (await context.core).savedObjects.client; + const siemClient = (await context.securitySolution).getAppClient(); + const riskScore = riskScoreService({ + esClient, + logger, + }); + + const { + after_keys: userAfterKeys, + data_view_id: dataViewId, + debug, + page_size: userPageSize, + identifier_type: identifierType, + filter, + range: userRange, + weights, + } = request.body; + + try { + let index: string; + if (dataViewId) { + const dataViewIndex = await getRiskInputsIndex({ + dataViewId, + logger, + soClient, + }); + + if (!dataViewIndex) { + return siemResponse.error({ + statusCode: 404, + body: DATAVIEW_NOT_FOUND(dataViewId), + }); + } + index = dataViewIndex; + } + index ??= siemClient.getAlertsIndex(); + + const afterKeys = userAfterKeys ?? {}; + const range = userRange ?? { start: 'now-15d', end: 'now' }; + const pageSize = userPageSize ?? DEFAULT_RISK_SCORE_PAGE_SIZE; + + const result = await riskScore.getScores({ + afterKeys, + debug, + pageSize, + identifierType, + index, + filter, + range, + weights, + }); + + return response.ok({ body: result }); + } catch (e) { + const error = transformError(e); + + return siemResponse.error({ + statusCode: error.statusCode, + body: { message: error.message, full_error: JSON.stringify(e) }, + }); + } + } + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/translations.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/translations.ts new file mode 100644 index 0000000000000..b825ed497ab1f --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/translations.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const DATAVIEW_NOT_FOUND = (dataViewId: string): string => + i18n.translate('xpack.securitySolution.riskEngine.calculateScores.dataViewNotFoundError', { + values: { dataViewId }, + defaultMessage: + 'The specified dataview ({dataViewId}) was not found. Please use an existing dataview, or omit the parameter to use the default risk inputs.', + }); diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/schema/risk_score_apis.yml b/x-pack/plugins/security_solution/server/lib/risk_engine/schema/risk_score_apis.yml new file mode 100644 index 0000000000000..a84fae4d7fefa --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/schema/risk_score_apis.yml @@ -0,0 +1,223 @@ +openapi: 3.0.0 +info: + version: 1.0.0 + title: Risk Scoring API + description: These APIs allow the consumer to manage Entity Risk Scores within Entity Analytics. +paths: + /preview: + post: + summary: Preview the calculation of Risk Scores + description: Calculates and returns a list of Risk Scores, sorted by identifier_type and risk score. + requestBody: + description: Details about the Risk Scores being requested + content: + application/json: + schema: + $ref: '#/components/schemas/RiskScoresRequest' + required: false + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/RiskScoresResponse' + '400': + description: Invalid request + +components: + schemas: + RiskScoresRequest: + type: object + properties: + after_keys: + description: Used to retrieve a specific "page" of risk scores. If unspecified, the first "page" of scores is returned. See also the `after_keys` key in a risk scores response. + allOf: + - $ref: '#/components/schemas/AfterKeys' + data_view_id: + description: The identifier of the Kibana data view to be used when generating risk scores. If unspecified, the Security Alerts data view for the current space will be used. + example: security-solution-default + type: string + debug: + description: If set to `true`, a `debug` key is added to the response, containing both the internal request and response with elasticsearch. + type: boolean + filter: + description: An elasticsearch DSL filter object. Used to filter the data being scored, which implicitly filters the risk scores returned. + $ref: 'https://cloud.elastic.co/api/v1/api-docs/spec.json#/definitions/QueryContainer' + page_size: + description: Specifies how many scores will be returned in a given response. Note that this value is per `identifier_type`, i.e. a value of 10 will return 10 host scores and 10 user scores, if available. To avoid missed data, keep this value consistent while paginating through scores. + default: 1000 + type: number + identifier_type: + description: Used to restrict the type of risk scores being returned. If unspecified, both `host` and `user` scores will be returned. + allOf: + - $ref: '#/components/schemas/IdentifierType' + range: + description: Defines the time period over which scores will be evaluated. If unspecified, a range of `[now, now-30d]` will be used. + type: object + required: + - start + - end + properties: + start: + $ref: '#/components/schemas/KibanaDate' + end: + $ref: '#/components/schemas/KibanaDate' + weights: + description: 'A list of weights to be applied to the scoring calculation.' + type: array + items: + $ref: '#/components/schemas/RiskScoreWeight' + example: + - type: 'risk_category' + value: 'alerts' + host: 0.8 + user: 0.4 + - type: 'global_identifier' + host: 0.5 + user: 0.1 + RiskScoresResponse: + type: object + required: + - scores + properties: + after_keys: + description: Used to obtain the next "page" of risk scores. See also the `after_keys` key in a risk scores request. + allOf: + - $ref: '#/components/schemas/AfterKeys' + debug: + description: Object containing debug information, particularly the internal request and response from elasticsearch + type: object + properties: + request: + type: string + response: + type: string + scores: + type: array + description: A list of risk scores + items: + $ref: '#/components/schemas/RiskScore' + + AfterKeys: + type: object + properties: + host: + type: object + additionalProperties: + type: string + user: + type: object + additionalProperties: + type: string + example: + host: + 'host.name': 'example.host' + user: + 'user.name': 'example_user_name' + KibanaDate: + type: string + oneOf: + - format: date + - format: date-time + - format: datemath + example: '2017-07-21T17:32:28Z' + IdentifierType: + type: string + enum: + - host + - user + RiskScore: + type: object + required: + - '@timestamp' + - identifierField + - identifierValue + - level + - totalScore + - totalScoreNormalized + - alertsScore + - otherScore + - riskiestInputs + properties: + '@timestamp': + type: string + format: 'date-time' + example: '2017-07-21T17:32:28Z' + description: The time at which the risk score was calculated. + identifierField: + type: string + example: 'host.name' + description: The identifier field defining this risk score. Coupled with `identifierValue`, uniquely identifies the entity being scored. + identifierValue: + type: string + example: 'example.host' + description: The identifier value defining this risk score. Coupled with `identifierField`, uniquely identifies the entity being scored. + level: + type: string + example: 'Critical' + description: Lexical description of the entity's risk. + totalScore: + type: number + format: double + description: The raw numeric value of the given entity's risk score. + totalScoreNormalized: + type: number + format: double + minimum: 0 + maximum: 100 + description: The normalized numeric value of the given entity's risk score. Useful for comparing with other entities. + alertsScore: + type: number + format: double + description: The raw numeric risk score attributed to Security Alerts. + otherScore: + type: number + format: double + description: The raw numeric risk score attributed to other data sources + riskiestInputs: + type: array + description: A list of the 10 highest-risk documents contributing to this risk score. Useful for investigative purposes. + items: + $ref: '#/components/schemas/RiskScoreInput' + + RiskScoreInput: + description: A generic representation of a document contributing to a Risk Score. + type: object + properties: + id: + type: string + example: 91a93376a507e86cfbf282166275b89f9dbdb1f0be6c8103c6ff2909ca8e1a1c + index: + type: string + example: .internal.alerts-security.alerts-default-000001 + riskScore: + type: number + format: double + minimum: 0 + maximum: 100 + RiskScoreWeight: + description: "Configuration used to tune risk scoring. Weights can be used to change the score contribution of risk inputs for hosts and users at both a global level and also for Risk Input categories (e.g. 'alerts')." + type: object + required: + - type + properties: + type: + type: string + value: + type: string + host: + type: number + format: double + minimum: 0 + maximum: 1 + user: + type: number + format: double + minimum: 0 + maximum: 1 + example: + type: 'risk_category' + value: 'alerts' + host: 0.8 + user: 0.4 diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/types.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/types.ts new file mode 100644 index 0000000000000..9ab80f7dabfa9 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/types.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; +import type { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; +import type { AfterKey, AfterKeys, IdentifierType, RiskWeights } from '../../../common/risk_engine'; + +export interface GetScoresParams { + afterKeys: AfterKeys; + debug?: boolean; + index: string; + filter?: unknown; + identifierType?: IdentifierType; + pageSize: number; + range: { start: string; end: string }; + weights?: RiskWeights; +} + +export interface GetScoresResponse { + debug?: { + request: unknown; + response: unknown; + }; + after_keys: AfterKeys; + scores: RiskScore[]; +} + +export interface SimpleRiskInput { + id: string; + index: string; + riskScore: string | number | undefined; +} + +export type RiskInput = Ecs; + +export interface RiskScore { + '@timestamp': string; + identifierField: string; + identifierValue: string; + level: string; + totalScore: number; + totalScoreNormalized: number; + alertsScore: number; + otherScore: number; + notes: string[]; + riskiestInputs: SimpleRiskInput[] | RiskInput[]; +} + +export interface CalculateRiskScoreAggregations { + user?: { + after_key: AfterKey; + buckets: RiskScoreBucket[]; + }; + host?: { + after_key: AfterKey; + buckets: RiskScoreBucket[]; + }; +} + +export interface RiskScoreBucket { + key: { [identifierField: string]: string; category: string }; + doc_count: number; + risk_details: { + value: { + score: number; + normalized_score: number; + notes: string[]; + level: string; + alerts_score: number; + other_score: number; + }; + }; + + riskiest_inputs: SearchResponse; +} diff --git a/x-pack/plugins/security_solution/server/mocks.ts b/x-pack/plugins/security_solution/server/mocks.ts index fad5686e2e2e3..7575a5d13f4b6 100644 --- a/x-pack/plugins/security_solution/server/mocks.ts +++ b/x-pack/plugins/security_solution/server/mocks.ts @@ -10,6 +10,7 @@ import type { AppClient } from './types'; type AppClientMock = jest.Mocked; const createAppClientMock = (): AppClientMock => ({ + getAlertsIndex: jest.fn(), getSignalsIndex: jest.fn(), getSourcererDataViewId: jest.fn().mockReturnValue('security-solution'), } as unknown as AppClientMock); diff --git a/x-pack/plugins/security_solution/server/routes/index.ts b/x-pack/plugins/security_solution/server/routes/index.ts index 38dea982d5a9e..3d6027b6b5143 100644 --- a/x-pack/plugins/security_solution/server/routes/index.ts +++ b/x-pack/plugins/security_solution/server/routes/index.ts @@ -73,6 +73,7 @@ import { import { registerManageExceptionsRoutes } from '../lib/exceptions/api/register_routes'; import { registerDashboardsRoutes } from '../lib/dashboards/routes'; import { registerTagsRoutes } from '../lib/tags/routes'; +import { riskScorePreviewRoute } from '../lib/risk_engine/routes'; export const initRoutes = ( router: SecuritySolutionPluginRouter, @@ -169,4 +170,8 @@ export const initRoutes = ( // telemetry preview endpoint for e2e integration tests only at the moment. telemetryDetectionRulesPreviewRoute(router, logger, previewTelemetryReceiver, telemetrySender); } + + if (config.experimentalFeatures.riskScoringRoutesEnabled) { + riskScorePreviewRoute(router, logger); + } }; diff --git a/x-pack/test/detection_engine_api_integration/common/config.ts b/x-pack/test/detection_engine_api_integration/common/config.ts index a1a71bf907b86..8454915db9a7d 100644 --- a/x-pack/test/detection_engine_api_integration/common/config.ts +++ b/x-pack/test/detection_engine_api_integration/common/config.ts @@ -76,6 +76,7 @@ export function createTestConfig(options: CreateTestConfigOptions, testFiles?: s '--xpack.ruleRegistry.unsafe.legacyMultiTenancy.enabled=true', `--xpack.securitySolution.enableExperimental=${JSON.stringify([ 'previewTelemetryUrlEnabled', + 'riskScoringRoutesEnabled', ])}`, '--xpack.task_manager.poll_interval=1000', `--xpack.actions.preconfigured=${JSON.stringify({ diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/index.ts index 4449e9ca07800..1758ce0e99c07 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/index.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/index.ts @@ -37,5 +37,6 @@ export default ({ loadTestFile }: FtrProviderContext): void => { loadTestFile(require.resolve('./throttle')); loadTestFile(require.resolve('./ignore_fields')); loadTestFile(require.resolve('./migrations')); + loadTestFile(require.resolve('./risk_engine')); }); }; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine.ts new file mode 100644 index 0000000000000..1e41f244140fb --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine.ts @@ -0,0 +1,554 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { ALERT_RISK_SCORE } from '@kbn/rule-data-utils'; +import { RISK_SCORE_PREVIEW_URL } from '@kbn/security-solution-plugin/common/constants'; +import type { RiskScore } from '@kbn/security-solution-plugin/server/lib/risk_engine/types'; +import { v4 as uuidv4 } from 'uuid'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; +import { + createSignalsIndex, + deleteAllAlerts, + deleteAllRules, + createRule, + waitForSignalsToBePresent, + waitForRuleSuccess, + getRuleForSignalTesting, +} from '../../utils'; +import { dataGeneratorFactory } from '../../utils/data_generator'; + +const removeFields = (scores: any[]) => + scores.map((item) => { + delete item['@timestamp']; + delete item.riskiestInputs; + delete item.notes; + delete item.alertsScore; + delete item.otherScore; + return item; + }); + +const buildDocument = (body: any, id?: string) => { + const firstTimestamp = Date.now(); + const doc = { + id: id || uuidv4(), + '@timestamp': firstTimestamp, + agent: { + name: 'agent-12345', + }, + ...body, + }; + return doc; +}; + +// eslint-disable-next-line import/no-default-export +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + const es = getService('es'); + const log = getService('log'); + + const createAndSyncRuleAndAlerts = async ({ + alerts = 1, + riskScore = 21, + maxSignals = 100, + query, + riskScoreOverride, + }: { + alerts?: number; + riskScore?: number; + maxSignals?: number; + query: string; + riskScoreOverride?: string; + }): Promise => { + const rule = getRuleForSignalTesting(['ecs_compliant']); + const { id } = await createRule(supertest, log, { + ...rule, + risk_score: riskScore, + query, + max_signals: maxSignals, + ...(riskScoreOverride + ? { + risk_score_mapping: [ + { field: riskScoreOverride, operator: 'equals', value: '', risk_score: undefined }, + ], + } + : {}), + }); + await waitForRuleSuccess({ supertest, log, id }); + await waitForSignalsToBePresent(supertest, log, alerts, [id]); + }; + + const getRiskScores = async ({ body }: { body: object }): Promise<{ scores: RiskScore[] }> => { + const { body: result } = await supertest + .post(RISK_SCORE_PREVIEW_URL) + .set('kbn-xsrf', 'true') + .send(body) + .expect(200); + return result; + }; + + const getRiskScoreAfterRuleCreationAndExecution = async ( + documentId: string, + { + alerts = 1, + riskScore = 21, + maxSignals = 100, + }: { alerts?: number; riskScore?: number; maxSignals?: number } = {} + ) => { + await createAndSyncRuleAndAlerts({ query: `id: ${documentId}`, alerts, riskScore, maxSignals }); + + return await getRiskScores({ body: { debug: true } }); + }; + + describe('Risk engine', () => { + context('with auditbeat data', () => { + const { indexListOfDocuments } = dataGeneratorFactory({ + es, + index: 'ecs_compliant', + log, + }); + + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/security_solution/ecs_compliant'); + }); + + after(async () => { + await esArchiver.unload( + 'x-pack/test/functional/es_archives/security_solution/ecs_compliant' + ); + }); + + beforeEach(async () => { + await deleteAllAlerts(supertest, log, es); + + await deleteAllRules(supertest, log); + await createSignalsIndex(supertest, log); + }); + + afterEach(async () => { + await deleteAllAlerts(supertest, log, es); + await deleteAllRules(supertest, log); + }); + + context('with a rule generating alerts with risk_score of 21', () => { + it('calculates risk from a single alert', async () => { + const documentId = uuidv4(); + await indexListOfDocuments([buildDocument({ host: { name: 'host-1' } }, documentId)]); + + const body = await getRiskScoreAfterRuleCreationAndExecution(documentId); + + expect(removeFields(body.scores)).to.eql([ + { + level: 'Unknown', + totalScore: 21, + totalScoreNormalized: 8.039816232771823, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + ]); + }); + + it('calculates risk from two alerts, each representing a unique host', async () => { + const documentId = uuidv4(); + await indexListOfDocuments([ + buildDocument({ host: { name: 'host-1' } }, documentId), + buildDocument({ host: { name: 'host-2' } }, documentId), + ]); + + const body = await getRiskScoreAfterRuleCreationAndExecution(documentId, { + alerts: 2, + }); + + expect(removeFields(body.scores)).to.eql([ + { + level: 'Unknown', + totalScore: 21, + totalScoreNormalized: 8.039816232771823, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + { + level: 'Unknown', + totalScore: 21, + totalScoreNormalized: 8.039816232771823, + identifierField: 'host.name', + identifierValue: 'host-2', + }, + ]); + }); + + it('calculates risk from two alerts, both for the same host', async () => { + const documentId = uuidv4(); + await indexListOfDocuments([ + buildDocument({ host: { name: 'host-1' } }, documentId), + buildDocument({ host: { name: 'host-1' } }, documentId), + ]); + + const body = await getRiskScoreAfterRuleCreationAndExecution(documentId, { + alerts: 2, + }); + + expect(removeFields(body.scores)).to.eql([ + { + level: 'Unknown', + totalScore: 28.42462120245875, + totalScoreNormalized: 10.88232052161514, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + ]); + }); + + it('calculates risk from 30 alerts, all for the same host', async () => { + const documentId = uuidv4(); + const doc = buildDocument({ host: { name: 'host-1' } }, documentId); + await indexListOfDocuments(Array(30).fill(doc)); + + const body = await getRiskScoreAfterRuleCreationAndExecution(documentId, { + alerts: 30, + }); + + expect(removeFields(body.scores)).to.eql([ + { + level: 'Unknown', + totalScore: 47.25513506055279, + totalScoreNormalized: 18.091552473412246, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + ]); + }); + + it('calculates risk from 31 alerts, 30 from the same host', async () => { + const documentId = uuidv4(); + const doc = buildDocument({ host: { name: 'host-1' } }, documentId); + await indexListOfDocuments([ + ...Array(30).fill(doc), + buildDocument({ host: { name: 'host-2' } }, documentId), + ]); + + const body = await getRiskScoreAfterRuleCreationAndExecution(documentId, { + alerts: 31, + }); + + expect(removeFields(body.scores)).to.eql([ + { + level: 'Unknown', + totalScore: 47.25513506055279, + totalScoreNormalized: 18.091552473412246, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + { + level: 'Unknown', + totalScore: 21, + totalScoreNormalized: 8.039816232771823, + identifierField: 'host.name', + identifierValue: 'host-2', + }, + ]); + }); + + it('calculates risk from 100 alerts, all for the same host', async () => { + const documentId = uuidv4(); + const doc = buildDocument({ host: { name: 'host-1' } }, documentId); + await indexListOfDocuments(Array(100).fill(doc)); + + const body = await getRiskScoreAfterRuleCreationAndExecution(documentId, { + alerts: 100, + }); + + expect(removeFields(body.scores)).to.eql([ + { + level: 'Unknown', + totalScore: 50.67035607277805, + totalScoreNormalized: 19.399064346392823, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + ]); + }); + }); + + context('with a rule generating alerts with risk_score of 100', () => { + it('calculates risk from 100 alerts, all for the same host', async () => { + const documentId = uuidv4(); + const doc = buildDocument({ host: { name: 'host-1' } }, documentId); + await indexListOfDocuments(Array(100).fill(doc)); + + const body = await getRiskScoreAfterRuleCreationAndExecution(documentId, { + riskScore: 100, + alerts: 100, + }); + + expect(removeFields(body.scores)).to.eql([ + { + level: 'Critical', + totalScore: 241.2874098703716, + totalScoreNormalized: 92.37649688758484, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + ]); + }); + + it('calculates risk from 1,000 alerts, all for the same host', async () => { + const documentId = uuidv4(); + const doc = buildDocument({ host: { name: 'host-1' } }, documentId); + await indexListOfDocuments( + Array(1000) + .fill(doc) + .map((item, index) => ({ + ...item, + ['@timestamp']: item['@timestamp'] - index, + })) + ); + + const body = await getRiskScoreAfterRuleCreationAndExecution(documentId, { + riskScore: 100, + alerts: 1000, + maxSignals: 1000, + }); + + expect(removeFields(body.scores)).to.eql([ + { + level: 'Critical', + totalScore: 254.91456029175757, + totalScoreNormalized: 97.59362951445543, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + ]); + }); + }); + + describe('risk score pagination', () => { + it('respects the specified after_keys', async () => { + const aaaId = uuidv4(); + const zzzId = uuidv4(); + const aaaDoc = buildDocument({ 'user.name': 'aaa' }, aaaId); + const zzzDoc = buildDocument({ 'user.name': 'zzz' }, zzzId); + await indexListOfDocuments(Array(50).fill(aaaDoc).concat(Array(50).fill(zzzDoc))); + + await createAndSyncRuleAndAlerts({ + query: `id: ${aaaId} OR ${zzzId}`, + alerts: 100, + riskScore: 100, + }); + + const { scores } = await getRiskScores({ + body: { + after_keys: { user: { 'user.name': 'aaa' } }, + }, + }); + // if after_key was not respected, 'aaa' would be included here + expect(scores).to.have.length(1); + expect(scores[0].identifierValue).to.equal('zzz'); + }); + }); + + describe('risk score filtering', () => { + it('restricts the range of risk inputs used for scoring', async () => { + const documentId = uuidv4(); + const doc = buildDocument({ host: { name: 'host-1' } }, documentId); + await indexListOfDocuments( + Array(100) + .fill(doc) + .map((_doc, i) => ({ ...doc, 'event.risk_score': i === 99 ? 1 : 100 })) + ); + + await createAndSyncRuleAndAlerts({ + query: `id: ${documentId}`, + alerts: 100, + riskScore: 100, + riskScoreOverride: 'event.risk_score', + }); + const { scores } = await getRiskScores({ + body: { + filter: { + bool: { + filter: [ + { + range: { + [ALERT_RISK_SCORE]: { + lte: 1, + }, + }, + }, + ], + }, + }, + }, + }); + + expect(scores).to.have.length(1); + expect(scores[0].riskiestInputs).to.have.length(1); + }); + }); + + describe('risk score ordering', () => { + it('aggregates multiple scores such that the highest-risk scores contribute the majority of the score', async () => { + const documentId = uuidv4(); + const doc = buildDocument({ host: { name: 'host-1' } }, documentId); + await indexListOfDocuments( + Array(100) + .fill(doc) + .map((_doc, i) => ({ ...doc, 'event.risk_score': 100 - i })) + ); + + await createAndSyncRuleAndAlerts({ + query: `id: ${documentId}`, + alerts: 100, + riskScore: 100, + riskScoreOverride: 'event.risk_score', + }); + const { scores } = await getRiskScores({ body: {} }); + + expect(removeFields(scores)).to.eql([ + { + level: 'High', + totalScore: 225.1106801442913, + totalScoreNormalized: 86.18326192354185, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + ]); + }); + }); + + context('with global risk weights', () => { + it('weights host scores differently when host risk weight is configured', async () => { + const documentId = uuidv4(); + const doc = buildDocument({ host: { name: 'host-1' } }, documentId); + await indexListOfDocuments(Array(100).fill(doc)); + + await createAndSyncRuleAndAlerts({ + query: `id: ${documentId}`, + alerts: 100, + riskScore: 100, + }); + const { scores } = await getRiskScores({ + body: { weights: [{ type: 'global_identifier', host: 0.5 }] }, + }); + + expect(removeFields(scores)).to.eql([ + { + level: 'Moderate', + totalScore: 120.6437049351858, + totalScoreNormalized: 46.18824844379242, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + ]); + }); + + it('weights user scores differently if user risk weight is configured', async () => { + const documentId = uuidv4(); + const doc = buildDocument({ user: { name: 'user-1' } }, documentId); + await indexListOfDocuments(Array(100).fill(doc)); + + await createAndSyncRuleAndAlerts({ + query: `id: ${documentId}`, + alerts: 100, + riskScore: 100, + }); + const { scores } = await getRiskScores({ + body: { weights: [{ type: 'global_identifier', user: 0.7 }] }, + }); + + expect(removeFields(scores)).to.eql([ + { + level: 'Moderate', + totalScore: 168.9011869092601, + totalScoreNormalized: 64.66354782130938, + identifierField: 'user.name', + identifierValue: 'user-1', + }, + ]); + }); + + it('weights entity scores differently when host and user risk weights are configured', async () => { + const usersId = uuidv4(); + const hostsId = uuidv4(); + const userDocs = buildDocument({ 'user.name': 'user-1' }, usersId); + const hostDocs = buildDocument({ 'host.name': 'host-1' }, usersId); + await indexListOfDocuments(Array(50).fill(userDocs).concat(Array(50).fill(hostDocs))); + + await createAndSyncRuleAndAlerts({ + query: `id: ${hostsId} OR ${usersId}`, + alerts: 100, + riskScore: 100, + }); + const { scores } = await getRiskScores({ + body: { weights: [{ type: 'global_identifier', host: 0.4, user: 0.8 }] }, + }); + + expect(removeFields(scores)).to.eql([ + { + level: 'High', + totalScore: 186.47518232942502, + totalScoreNormalized: 71.39172370958079, + identifierField: 'user.name', + identifierValue: 'user-1', + }, + { + level: 'Low', + totalScore: 93.23759116471251, + totalScoreNormalized: 35.695861854790394, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + ]); + }); + }); + + context('with category weights', () => { + it('weights risk inputs from different categories according to the category weight', async () => { + const documentId = uuidv4(); + const userSignal = buildDocument( + { 'event.kind': 'signal', 'user.name': 'user-1' }, + documentId + ); + const hostSignal = buildDocument( + { 'event.kind': 'signal', 'host.name': 'host-1' }, + documentId + ); + await indexListOfDocuments(Array(50).fill(userSignal).concat(Array(50).fill(hostSignal))); + + await createAndSyncRuleAndAlerts({ + query: `id: ${documentId}`, + alerts: 100, + riskScore: 100, + }); + const { scores } = await getRiskScores({ + body: { + weights: [{ type: 'risk_category', value: 'alerts', host: 0.4, user: 0.8 }], + }, + }); + + expect(removeFields(scores)).to.eql([ + { + level: 'High', + totalScore: 186.475182329425, + totalScoreNormalized: 71.39172370958079, + identifierField: 'user.name', + identifierValue: 'user-1', + }, + { + level: 'Low', + totalScore: 93.2375911647125, + totalScoreNormalized: 35.695861854790394, + identifierField: 'host.name', + identifierValue: 'host-1', + }, + ]); + }); + }); + }); + }); +}; From f60d43e27b7c28e73f13b122453ac27c8e2e62bd Mon Sep 17 00:00:00 2001 From: Devon Thomson Date: Thu, 15 Jun 2023 16:10:55 -0400 Subject: [PATCH 35/59] [Dashboard] Fix Time Range Regression (#159337) Fixed Dashboard loading with a saved time range when the URL also contains a time range. --- .../create/create_dashboard.test.ts | 24 +++++- .../embeddable/create/create_dashboard.ts | 42 +++++++---- .../sync_dashboard_unified_search_state.ts | 74 +++++++++++++++++-- .../apps/dashboard/group4/dashboard_time.ts | 31 ++++++++ 4 files changed, 151 insertions(+), 20 deletions(-) diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts b/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts index 60c8c6cde2e75..c2499a2168350 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts @@ -146,7 +146,29 @@ test('applies time range and refresh interval from initial input to query servic ).toHaveBeenCalledWith(refreshInterval); }); -test('applied time range from query service to initial input if time restore is off', async () => { +test('applies time range from query service to initial input if time restore is on but there is an explicit time range in the URL', async () => { + const urlTimeRange = { from: new Date().toISOString(), to: new Date().toISOString() }; + const savedTimeRange = { from: 'now - 7 days', to: 'now' }; + pluginServices.getServices().data.query.timefilter.timefilter.getTime = jest + .fn() + .mockReturnValue(urlTimeRange); + const kbnUrlStateStorage = createKbnUrlStateStorage(); + kbnUrlStateStorage.get = jest.fn().mockReturnValue({ time: urlTimeRange }); + + const dashboard = await createDashboard({ + useUnifiedSearchIntegration: true, + unifiedSearchSettings: { + kbnUrlStateStorage, + }, + getInitialInput: () => ({ + timeRestore: true, + timeRange: savedTimeRange, + }), + }); + expect(dashboard.getState().explicitInput.timeRange).toEqual(urlTimeRange); +}); + +test('applies time range from query service to initial input if time restore is off', async () => { const timeRange = { from: new Date().toISOString(), to: new Date().toISOString() }; pluginServices.getServices().data.query.timefilter.timefilter.getTime = jest .fn() diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts b/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts index 4fc296acbf1cc..e8f9020ba3fcb 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts @@ -13,19 +13,20 @@ import { CONTROL_GROUP_TYPE, getDefaultControlGroupInput, } from '@kbn/controls-plugin/common'; -import { syncGlobalQueryStateWithUrl } from '@kbn/data-plugin/public'; +import { TimeRange } from '@kbn/es-query'; import { isErrorEmbeddable, ViewMode } from '@kbn/embeddable-plugin/public'; import { lazyLoadReduxToolsPackage } from '@kbn/presentation-util-plugin/public'; import { type ControlGroupContainer, ControlGroupOutput } from '@kbn/controls-plugin/public'; +import { GlobalQueryStateFromUrl, syncGlobalQueryStateWithUrl } from '@kbn/data-plugin/public'; import { DashboardContainerInput } from '../../../../common'; import { DashboardContainer } from '../dashboard_container'; import { pluginServices } from '../../../services/plugin_services'; -import { DEFAULT_DASHBOARD_INPUT } from '../../../dashboard_constants'; import { DashboardCreationOptions } from '../dashboard_container_factory'; import { startSyncingDashboardDataViews } from './data_views/sync_dashboard_data_views'; import { LoadDashboardReturn } from '../../../services/dashboard_content_management/types'; import { syncUnifiedSearchState } from './unified_search/sync_dashboard_unified_search_state'; +import { DEFAULT_DASHBOARD_INPUT, GLOBAL_STATE_STORAGE_KEY } from '../../../dashboard_constants'; import { startSyncingDashboardControlGroup } from './controls/dashboard_control_group_integration'; import { startDashboardSearchSessionIntegration } from './search_sessions/start_dashboard_search_session_integration'; @@ -175,7 +176,13 @@ export const initializeDashboard = async ({ // Set up unified search integration. // -------------------------------------------------------------------------------------- if (useUnifiedSearchIntegration && unifiedSearchSettings?.kbnUrlStateStorage) { - const { filters, query, timeRestore, timeRange, refreshInterval } = initialInput; + const { + query, + filters, + timeRestore, + timeRange: savedTimeRange, + refreshInterval: savedRefreshInterval, + } = initialInput; const { kbnUrlStateStorage } = unifiedSearchSettings; // apply filters and query to the query service @@ -183,26 +190,35 @@ export const initializeDashboard = async ({ queryString.setQuery(query ?? queryString.getDefaultQuery()); /** - * If a global time range is not set explicitly and the time range was saved with the dashboard, apply - * time range and refresh interval to the query service. Otherwise, set the current dashboard time range - * from the query service. The order of the following lines is very important. + * Get initial time range, and set up dashboard time restore if applicable */ + const initialTimeRange: TimeRange = (() => { + // if there is an explicit time range in the URL it always takes precedence. + const urlOverrideTimeRange = + kbnUrlStateStorage.get(GLOBAL_STATE_STORAGE_KEY)?.time; + if (urlOverrideTimeRange) return urlOverrideTimeRange; + + // if this Dashboard has timeRestore return the time range that was saved with the dashboard. + if (timeRestore && savedTimeRange) return savedTimeRange; + + // otherwise fall back to the time range from the timefilterService. + return timefilterService.getTime(); + })(); + initialInput.timeRange = initialTimeRange; if (timeRestore) { - if (timeRange) timefilterService.setTime(timeRange); - if (refreshInterval) timefilterService.setRefreshInterval(refreshInterval); + if (savedTimeRange) timefilterService.setTime(savedTimeRange); + if (savedRefreshInterval) timefilterService.setRefreshInterval(savedRefreshInterval); } + // start syncing global query state with the URL. const { stop: stopSyncingQueryServiceStateWithUrl } = syncGlobalQueryStateWithUrl( queryService, kbnUrlStateStorage ); - if (!timeRestore) { - initialInput.timeRange = timefilterService.getTime(); - } - untilDashboardReady().then((dashboardContainer) => { - const stopSyncingUnifiedSearchState = syncUnifiedSearchState.bind(dashboardContainer)(); + const stopSyncingUnifiedSearchState = + syncUnifiedSearchState.bind(dashboardContainer)(kbnUrlStateStorage); dashboardContainer.stopSyncingWithUnifiedSearch = () => { stopSyncingUnifiedSearchState(); stopSyncingQueryServiceStateWithUrl(); diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/create/unified_search/sync_dashboard_unified_search_state.ts b/src/plugins/dashboard/public/dashboard_container/embeddable/create/unified_search/sync_dashboard_unified_search_state.ts index 43220de9b69e4..d65ddb18fa40b 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/create/unified_search/sync_dashboard_unified_search_state.ts +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/create/unified_search/sync_dashboard_unified_search_state.ts @@ -7,20 +7,31 @@ */ import { Subject } from 'rxjs'; +import fastIsEqual from 'fast-deep-equal'; import { distinctUntilChanged, finalize, switchMap, tap } from 'rxjs/operators'; import type { Filter, Query } from '@kbn/es-query'; +import { IKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; import { cleanFiltersForSerialize } from '@kbn/presentation-util-plugin/public'; -import { connectToQueryState, waitUntilNextSessionCompletes$ } from '@kbn/data-plugin/public'; +import { + connectToQueryState, + GlobalQueryStateFromUrl, + waitUntilNextSessionCompletes$, +} from '@kbn/data-plugin/public'; import { DashboardContainer } from '../../dashboard_container'; import { pluginServices } from '../../../../services/plugin_services'; +import { GLOBAL_STATE_STORAGE_KEY } from '../../../../dashboard_constants'; +import { areTimesEqual } from '../../../state/diffing/dashboard_diffing_utils'; /** * Sets up syncing and subscriptions between the filter state from the Data plugin * and the dashboard Redux store. */ -export function syncUnifiedSearchState(this: DashboardContainer) { +export function syncUnifiedSearchState( + this: DashboardContainer, + kbnUrlStateStorage: IKbnUrlStateStorage +) { const { data: { query: queryService, search }, } = pluginServices.getServices(); @@ -65,13 +76,64 @@ export function syncUnifiedSearchState(this: DashboardContainer) { } ); - const timeUpdateSubscription = timefilterService - .getTimeUpdate$() - .subscribe(() => this.dispatch.setTimeRange(timefilterService.getTime())); + const timeUpdateSubscription = timefilterService.getTimeUpdate$().subscribe(() => { + const newTimeRange = (() => { + // if there is an override time range in the URL, use it. + const urlOverrideTimeRange = + kbnUrlStateStorage.get(GLOBAL_STATE_STORAGE_KEY)?.time; + if (urlOverrideTimeRange) return urlOverrideTimeRange; + + // if there is no url override time range, check if this dashboard uses time restore, and restore to that. + const timeRestoreTimeRange = + this.getState().explicitInput.timeRestore && + this.getState().componentState.lastSavedInput.timeRange; + if (timeRestoreTimeRange) { + timefilterService.setTime(timeRestoreTimeRange); + return timeRestoreTimeRange; + } + + // otherwise fall back to the time range from the time filter service + return timefilterService.getTime(); + })(); + + const lastTimeRange = this.getState().explicitInput.timeRange; + if ( + !areTimesEqual(newTimeRange.from, lastTimeRange?.from) || + !areTimesEqual(newTimeRange.to, lastTimeRange?.to) + ) { + this.dispatch.setTimeRange(newTimeRange); + } + }); const refreshIntervalSubscription = timefilterService .getRefreshIntervalUpdate$() - .subscribe(() => this.dispatch.setRefreshInterval(timefilterService.getRefreshInterval())); + .subscribe(() => { + const newRefreshInterval = (() => { + // if there is an override refresh interval in the URL, dispatch that to the dashboard. + const urlOverrideRefreshInterval = + kbnUrlStateStorage.get( + GLOBAL_STATE_STORAGE_KEY + )?.refreshInterval; + if (urlOverrideRefreshInterval) return urlOverrideRefreshInterval; + + // if there is no url override refresh interval, check if this dashboard uses time restore, and restore to that. + const timeRestoreRefreshInterval = + this.getState().explicitInput.timeRestore && + this.getState().componentState.lastSavedInput.refreshInterval; + if (timeRestoreRefreshInterval) { + timefilterService.setRefreshInterval(timeRestoreRefreshInterval); + return timeRestoreRefreshInterval; + } + + // otherwise fall back to the refresh interval from the time filter service + return timefilterService.getRefreshInterval(); + })(); + + const lastRefreshInterval = this.getState().explicitInput.refreshInterval; + if (!fastIsEqual(newRefreshInterval, lastRefreshInterval)) { + this.dispatch.setRefreshInterval(newRefreshInterval); + } + }); const autoRefreshSubscription = timefilterService .getAutoRefreshFetch$() diff --git a/test/functional/apps/dashboard/group4/dashboard_time.ts b/test/functional/apps/dashboard/group4/dashboard_time.ts index 2ff91185be60a..e1dbefa63ac74 100644 --- a/test/functional/apps/dashboard/group4/dashboard_time.ts +++ b/test/functional/apps/dashboard/group4/dashboard_time.ts @@ -14,6 +14,7 @@ const dashboardName = 'Dashboard Test Time'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'dashboard', 'header', 'timePicker']); + const pieChart = getService('pieChart'); const browser = getService('browser'); describe('dashboard time', () => { @@ -81,6 +82,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const time = await PageObjects.timePicker.getTimeConfig(); expect(time.start).to.equal('~ an hour ago'); expect(time.end).to.equal('now'); + + /** + * With the time range set to an hour ago until now there should be no data. This ensures that the URL time + * range and NOT the saved time range was properly set on the Dashboard and passed down to its children. + */ + await pieChart.expectEmptyPieChart(); }); it('should use saved time, if time is missing in global state, but _g is present in the url', async function () { @@ -96,6 +103,30 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(time.start).to.equal(PageObjects.timePicker.defaultStartTime); expect(time.end).to.equal(PageObjects.timePicker.defaultEndTime); }); + + it('should use saved time after time change is undone', async function () { + const currentUrl = await browser.getCurrentUrl(); + const kibanaBaseUrl = currentUrl.substring(0, currentUrl.indexOf('#')); + const id = await PageObjects.dashboard.getDashboardIdFromCurrentUrl(); + + await PageObjects.dashboard.gotoDashboardLandingPage(); + + const urlWithGlobalTime = `${kibanaBaseUrl}#/view/${id}?_g=(filters:!())`; + await browser.get(urlWithGlobalTime, false); + + // set the time to something else + await PageObjects.timePicker.setAbsoluteRange( + 'Jan 1, 2019 @ 00:00:00.000', + 'Jan 2, 2019 @ 00:00:00.000' + ); + await PageObjects.dashboard.waitForRenderComplete(); + await browser.goBack(); + + // time should have restored to the saved time range. + const time = await PageObjects.timePicker.getTimeConfig(); + expect(time.start).to.equal(PageObjects.timePicker.defaultStartTime); + expect(time.end).to.equal(PageObjects.timePicker.defaultEndTime); + }); }); // If the user has time stored with a dashboard, it's supposed to override the current time settings From 74ae6d1b042e25e7116d946dfaeed12c2248a269 Mon Sep 17 00:00:00 2001 From: Kevin Delemme Date: Thu, 15 Jun 2023 16:23:41 -0400 Subject: [PATCH 36/59] chore(slo): cleanup slo form (#159821) --- .../hooks/slo/use_fetch_active_alerts.ts | 2 +- .../slo/use_fetch_index_pattern_fields.ts | 20 ++++++------------- .../apm_availability_indicator_type_form.tsx | 3 +-- .../apm_latency_indicator_type_form.tsx | 1 - .../common/query_builder.stories.tsx | 2 +- .../components/common/query_builder.tsx | 6 ++---- .../custom_kql_indicator_type_form.tsx | 11 +++------- .../custom_metric/custom_metric_type_form.tsx | 1 - 8 files changed, 14 insertions(+), 32 deletions(-) diff --git a/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts b/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts index a19f9d5014f1e..319f3e57a4a4c 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts @@ -62,7 +62,7 @@ export function useFetchActiveAlerts({ sloIds = [] }: Params): UseFetchActiveAle { range: { '@timestamp': { - gte: 'now-15m/m', + gte: 'now-5m/m', }, }, }, diff --git a/x-pack/plugins/observability/public/hooks/slo/use_fetch_index_pattern_fields.ts b/x-pack/plugins/observability/public/hooks/slo/use_fetch_index_pattern_fields.ts index cd6f91dfacd07..bd83b069133c3 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_fetch_index_pattern_fields.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_fetch_index_pattern_fields.ts @@ -23,29 +23,21 @@ export interface Field { export function useFetchIndexPatternFields( indexPattern?: string ): UseFetchIndexPatternFieldsResponse { - const { http } = useKibana().services; + const { dataViews } = useKibana().services; const { isLoading, isError, isSuccess, data } = useQuery({ queryKey: ['fetchIndexPatternFields', indexPattern], queryFn: async ({ signal }) => { + if (!indexPattern) { + return []; + } try { - const response = await http.get<{ fields: Field[] }>( - `/api/index_patterns/_fields_for_wildcard`, - { - query: { - pattern: indexPattern, - }, - headers: { - 'Elastic-Api-Version': 1, - }, - signal, - } - ); - return response.fields; + return await dataViews.getFieldsForWildcard({ pattern: indexPattern }); } catch (error) { throw new Error(`Something went wrong. Error: ${error}`); } }, + retry: false, refetchOnWindowFocus: false, enabled: Boolean(indexPattern), }); diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx index c73b903050582..3cb379f48a2eb 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx @@ -16,7 +16,7 @@ import { FieldSelector } from '../apm_common/field_selector'; import { QueryBuilder } from '../common/query_builder'; export function ApmAvailabilityIndicatorTypeForm() { - const { control, setValue, watch } = useFormContext(); + const { setValue, watch } = useFormContext(); const { data: apmIndex } = useFetchApmIndex(); useEffect(() => { setValue('indicator.params.index', apmIndex); @@ -99,7 +99,6 @@ export function ApmAvailabilityIndicatorTypeForm() { = (props: Props) => { const methods = useForm({ defaultValues: SLO_EDIT_FORM_DEFAULT_VALUES }); return ( - + ); }; diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx index 25179a417269e..be2114acd5ab1 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx @@ -6,7 +6,7 @@ */ import React, { ReactNode } from 'react'; -import { Control, Controller, FieldPath, useFormContext } from 'react-hook-form'; +import { Controller, FieldPath, useFormContext } from 'react-hook-form'; import { EuiFormRow } from '@elastic/eui'; import { CreateSLOInput } from '@kbn/slo-schema'; import { QueryStringInput } from '@kbn/unified-search-plugin/public'; @@ -14,7 +14,6 @@ import { useKibana } from '../../../../utils/kibana_react'; import { useCreateDataView } from '../../../../hooks/use_create_data_view'; export interface Props { - control: Control; dataTestSubj: string; indexPatternString: string | undefined; label: string; @@ -25,7 +24,6 @@ export interface Props { } export function QueryBuilder({ - control, dataTestSubj, indexPatternString, label, @@ -37,7 +35,7 @@ export function QueryBuilder({ const { data, dataViews, docLinks, http, notifications, storage, uiSettings, unifiedSearch } = useKibana().services; - const { getFieldState } = useFormContext(); + const { control, getFieldState } = useFormContext(); const { dataView } = useCreateDataView({ indexPatternString }); diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx index 5299a54656b2c..c0b8ee400efb9 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx @@ -5,7 +5,6 @@ * 2.0. */ -import React from 'react'; import { EuiComboBox, EuiComboBoxOptionOption, @@ -15,15 +14,15 @@ import { EuiIconTip, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { Controller, useFormContext } from 'react-hook-form'; import { CreateSLOInput } from '@kbn/slo-schema'; - +import React from 'react'; +import { Controller, useFormContext } from 'react-hook-form'; import { Field, useFetchIndexPatternFields, } from '../../../../hooks/slo/use_fetch_index_pattern_fields'; -import { IndexSelection } from '../custom_common/index_selection'; import { QueryBuilder } from '../common/query_builder'; +import { IndexSelection } from '../custom_common/index_selection'; interface Option { label: string; @@ -91,7 +90,6 @@ export function CustomKqlIndicatorTypeForm() { { value: field.value, label: field.value, - 'data-test-subj': `customKqlIndicatorFormTimestampFieldSelectedValue`, }, ] : [] @@ -106,7 +104,6 @@ export function CustomKqlIndicatorTypeForm() { Date: Thu, 15 Jun 2023 22:37:50 +0200 Subject: [PATCH 37/59] Add support for the ES profiling plugin returning a sampling rate (#159211) ## Summary When visualizing profiling data, the backend ElasticSearch plugin performs statistical sampling to approximate the results, and returns the "sampling rate" to the user. This means that the Kibana profiling UI needs to ... 1) Signal to the user that certain numbers are estimates if the sampling rate is smaller than 1.0 2) Multiply the numbers that it derives from the sample by the inverse of the sample rate. This change does both, for the flamegraph and the TopN view. For the stacked bar chart, a separate PR will be needed. ![Screenshot from 2023-06-07 15-59-03](https://github.com/elastic/kibana/assets/4587964/e6f0b5bd-ec83-45e9-8a1d-a380cde9328e) This screenshot shows that we are displaying a `~` in the flamechart popups to indicate estimated quantities. There are further UI changes in the topN functions window. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../plugins/profiling/common/callee.test.ts | 2 +- x-pack/plugins/profiling/common/callee.ts | 10 ++++- .../common/columnar_view_model.test.ts | 4 +- .../profiling/common/flamegraph.test.ts | 4 +- x-pack/plugins/profiling/common/flamegraph.ts | 10 ++++- .../profiling/common/functions.test.ts | 3 +- x-pack/plugins/profiling/common/functions.ts | 16 ++++--- x-pack/plugins/profiling/common/profiling.ts | 3 ++ .../plugins/profiling/common/stack_traces.ts | 1 + .../flamegraph/flamegraph_tooltip.tsx | 9 ++++ .../public/components/flamegraph/index.tsx | 1 + .../components/flamegraph/tooltip_row.tsx | 6 ++- .../get_impact_rows.tsx | 2 + .../frame_information_window/index.tsx | 10 ++++- .../key_value_list.tsx | 9 ++-- .../components/topn_functions/index.tsx | 45 ++++++++++++++----- .../profiling/server/routes/flamechart.ts | 23 ++++++---- .../profiling/server/routes/functions.ts | 10 ++--- .../server/routes/search_stacktraces.test.ts | 4 ++ .../server/routes/search_stacktraces.ts | 1 + 20 files changed, 126 insertions(+), 47 deletions(-) diff --git a/x-pack/plugins/profiling/common/callee.test.ts b/x-pack/plugins/profiling/common/callee.test.ts index 4e3ef4b286e31..3cf6fb7484372 100644 --- a/x-pack/plugins/profiling/common/callee.test.ts +++ b/x-pack/plugins/profiling/common/callee.test.ts @@ -12,7 +12,7 @@ import { events, stackTraces, stackFrames, executables } from './__fixtures__/st const totalSamples = sum([...events.values()]); const totalFrames = sum([...stackTraces.values()].map((trace) => trace.FrameIDs.length)); -const tree = createCalleeTree(events, stackTraces, stackFrames, executables, totalFrames); +const tree = createCalleeTree(events, stackTraces, stackFrames, executables, totalFrames, 1.0); describe('Callee operations', () => { test('inclusive count of root equals total sampled stacktraces', () => { diff --git a/x-pack/plugins/profiling/common/callee.ts b/x-pack/plugins/profiling/common/callee.ts index 5f373dc25d25b..04206843463fc 100644 --- a/x-pack/plugins/profiling/common/callee.ts +++ b/x-pack/plugins/profiling/common/callee.ts @@ -43,7 +43,8 @@ export function createCalleeTree( stackTraces: Map, stackFrames: Map, executables: Map, - totalFrames: number + totalFrames: number, + samplingRate: number ): CalleeTree { const tree: CalleeTree = { Size: 1, @@ -62,6 +63,9 @@ export function createCalleeTree( CountExclusive: new Array(totalFrames), }; + // The inverse of the sampling rate is the number with which to multiply the number of + // samples to get an estimate of the actual number of samples the backend received. + const scalingFactor = 1.0 / samplingRate; tree.Edges[0] = new Map(); tree.FileID[0] = ''; @@ -97,10 +101,12 @@ export function createCalleeTree( // e.g. when stopping the host agent or on network errors. const stackTrace = stackTraces.get(stackTraceID) ?? emptyStackTrace; const lenStackTrace = stackTrace.FrameIDs.length; - const samples = events.get(stackTraceID) ?? 0; + const samples = (events.get(stackTraceID) ?? 0) * scalingFactor; let currentNode = 0; + // Increment the count by the number of samples observed, multiplied with the inverse of the + // samplingrate (this essentially means scaling up the total samples). It would incur tree.CountInclusive[currentNode] += samples; tree.CountExclusive[currentNode] = 0; diff --git a/x-pack/plugins/profiling/common/columnar_view_model.test.ts b/x-pack/plugins/profiling/common/columnar_view_model.test.ts index c41e2b0aef4ea..a40f2225b6c19 100644 --- a/x-pack/plugins/profiling/common/columnar_view_model.test.ts +++ b/x-pack/plugins/profiling/common/columnar_view_model.test.ts @@ -14,8 +14,8 @@ import { events, stackTraces, stackFrames, executables } from './__fixtures__/st const totalFrames = sum([...stackTraces.values()].map((trace) => trace.FrameIDs.length)); -const tree = createCalleeTree(events, stackTraces, stackFrames, executables, totalFrames); -const graph = createFlameGraph(createBaseFlameGraph(tree, 60)); +const tree = createCalleeTree(events, stackTraces, stackFrames, executables, totalFrames, 1.0); +const graph = createFlameGraph(createBaseFlameGraph(tree, 1.0, 60)); describe('Columnar view model operations', () => { test('color values are generated by default', () => { diff --git a/x-pack/plugins/profiling/common/flamegraph.test.ts b/x-pack/plugins/profiling/common/flamegraph.test.ts index 5f13d8f9db89b..a5e22e783ce65 100644 --- a/x-pack/plugins/profiling/common/flamegraph.test.ts +++ b/x-pack/plugins/profiling/common/flamegraph.test.ts @@ -12,8 +12,8 @@ import { createBaseFlameGraph, createFlameGraph } from './flamegraph'; import { events, stackTraces, stackFrames, executables } from './__fixtures__/stacktraces'; const totalFrames = sum([...stackTraces.values()].map((trace) => trace.FrameIDs.length)); -const tree = createCalleeTree(events, stackTraces, stackFrames, executables, totalFrames); -const baseFlamegraph = createBaseFlameGraph(tree, 60); +const tree = createCalleeTree(events, stackTraces, stackFrames, executables, totalFrames, 1.0); +const baseFlamegraph = createBaseFlameGraph(tree, 1.0, 60); const flamegraph = createFlameGraph(baseFlamegraph); describe('Flamegraph operations', () => { diff --git a/x-pack/plugins/profiling/common/flamegraph.ts b/x-pack/plugins/profiling/common/flamegraph.ts index ae9adc37679f2..16fb8c1a396c5 100644 --- a/x-pack/plugins/profiling/common/flamegraph.ts +++ b/x-pack/plugins/profiling/common/flamegraph.ts @@ -28,12 +28,18 @@ export interface BaseFlameGraph { CountExclusive: number[]; TotalSeconds: number; + SamplingRate: number; } // createBaseFlameGraph encapsulates the tree representation into a serialized form. -export function createBaseFlameGraph(tree: CalleeTree, totalSeconds: number): BaseFlameGraph { +export function createBaseFlameGraph( + tree: CalleeTree, + samplingRate: number, + totalSeconds: number +): BaseFlameGraph { const graph: BaseFlameGraph = { Size: tree.Size, + SamplingRate: samplingRate, Edges: new Array(tree.Size), FileID: tree.FileID.slice(0, tree.Size), @@ -76,6 +82,7 @@ export interface ElasticFlameGraph extends BaseFlameGraph { export function createFlameGraph(base: BaseFlameGraph): ElasticFlameGraph { const graph: ElasticFlameGraph = { Size: base.Size, + SamplingRate: base.SamplingRate, Edges: base.Edges, FileID: base.FileID, @@ -137,6 +144,7 @@ export function createFlameGraph(base: BaseFlameGraph): ElasticFlameGraph { FunctionOffset: graph.FunctionOffset[i], SourceFilename: graph.SourceFilename[i], SourceLine: graph.SourceLine[i], + SamplingRate: graph.SamplingRate, }); graph.Label[i] = getCalleeLabel(metadata); } diff --git a/x-pack/plugins/profiling/common/functions.test.ts b/x-pack/plugins/profiling/common/functions.test.ts index c17687453c2fd..491fd06ecb2b0 100644 --- a/x-pack/plugins/profiling/common/functions.test.ts +++ b/x-pack/plugins/profiling/common/functions.test.ts @@ -20,7 +20,8 @@ describe('TopN function operations', () => { stackFrames, executables, 0, - maxTopN + maxTopN, + 1.0 ); expect(topNFunctions.TotalCount).toEqual(totalSamples); diff --git a/x-pack/plugins/profiling/common/functions.ts b/x-pack/plugins/profiling/common/functions.ts index 50dd7b3b793d3..6e5f97a6cdbfe 100644 --- a/x-pack/plugins/profiling/common/functions.ts +++ b/x-pack/plugins/profiling/common/functions.ts @@ -35,6 +35,7 @@ type TopNFunction = Pick< export interface TopNFunctions { TotalCount: number; TopN: TopNFunction[]; + SamplingRate: number; } export function createTopNFunctions( @@ -43,7 +44,8 @@ export function createTopNFunctions( stackFrames: Map, executables: Map, startIndex: number, - endIndex: number + endIndex: number, + samplingRate: number ): TopNFunctions { // The `count` associated with a frame provides the total number of // traces in which that node has appeared at least once. However, a @@ -52,12 +54,14 @@ export function createTopNFunctions( // far in each trace. let totalCount = 0; const topNFunctions = new Map(); + // The factor to apply to sampled events to scale the estimated result correctly. + const scalingFactor = 1.0 / samplingRate; // Collect metadata and inclusive + exclusive counts for each distinct frame. for (const [stackTraceID, count] of events) { const uniqueFrameGroupsPerEvent = new Set(); - - totalCount += count; + const scaledCount = count * scalingFactor; + totalCount += scaledCount; // It is possible that we do not have a stacktrace for an event, // e.g. when stopping the host agent or on network errors. @@ -107,12 +111,12 @@ export function createTopNFunctions( if (!uniqueFrameGroupsPerEvent.has(frameGroupID)) { uniqueFrameGroupsPerEvent.add(frameGroupID); - topNFunction.CountInclusive += count; + topNFunction.CountInclusive += scaledCount; } if (i === lenStackTrace - 1) { // Leaf frame: sum up counts for exclusive CPU. - topNFunction.CountExclusive += count; + topNFunction.CountExclusive += scaledCount; } } } @@ -146,10 +150,10 @@ export function createTopNFunctions( CountInclusive: frameAndCount.CountInclusive, Id: frameAndCount.FrameGroupID, })); - return { TotalCount: totalCount, TopN: framesAndCountsAndIds, + SamplingRate: samplingRate, }; } diff --git a/x-pack/plugins/profiling/common/profiling.ts b/x-pack/plugins/profiling/common/profiling.ts index a2e1af7d4ae60..22480a26f8ab2 100644 --- a/x-pack/plugins/profiling/common/profiling.ts +++ b/x-pack/plugins/profiling/common/profiling.ts @@ -159,6 +159,8 @@ export interface StackFrameMetadata { // unused atm due to lack of symbolization metadata SourcePackageURL: string; // unused atm due to lack of symbolization metadata + + SamplingRate: number; } export function createStackFrameMetadata( @@ -181,6 +183,7 @@ export function createStackFrameMetadata( metadata.SourceFilename = options.SourceFilename ?? ''; metadata.SourcePackageHash = options.SourcePackageHash ?? ''; metadata.SourcePackageURL = options.SourcePackageURL ?? ''; + metadata.SamplingRate = options.SamplingRate ?? 1.0; // Unknown/invalid offsets are currently set to 0. // diff --git a/x-pack/plugins/profiling/common/stack_traces.ts b/x-pack/plugins/profiling/common/stack_traces.ts index 5384e60639b9d..2b7ce4f700f29 100644 --- a/x-pack/plugins/profiling/common/stack_traces.ts +++ b/x-pack/plugins/profiling/common/stack_traces.ts @@ -55,6 +55,7 @@ export interface StackTraceResponse { ['stack_frames']?: ProfilingStackFrames; ['executables']?: ProfilingExecutables; ['total_frames']: number; + ['sampling_rate']: number; } export enum StackTracesDisplayOption { diff --git a/x-pack/plugins/profiling/public/components/flamegraph/flamegraph_tooltip.tsx b/x-pack/plugins/profiling/public/components/flamegraph/flamegraph_tooltip.tsx index 9a4f53be00e8c..6f0de5ee500ac 100644 --- a/x-pack/plugins/profiling/public/components/flamegraph/flamegraph_tooltip.tsx +++ b/x-pack/plugins/profiling/public/components/flamegraph/flamegraph_tooltip.tsx @@ -38,6 +38,7 @@ interface Props { comparisonCountExclusive?: number; comparisonTotalSamples?: number; comparisonTotalSeconds?: number; + samplingRate?: number; onShowMoreClick?: () => void; } @@ -54,6 +55,7 @@ export function FlameGraphTooltip({ comparisonCountExclusive, comparisonTotalSamples, comparisonTotalSeconds, + samplingRate, onShowMoreClick, }: Props) { const theme = useEuiTheme(); @@ -78,6 +80,8 @@ export function FlameGraphTooltip({ }) : undefined; + const prependString = samplingRate === 1.0 ? ' ' : '~'; + return ( @@ -100,6 +104,7 @@ export function FlameGraphTooltip({ formatValue={asPercentage} showDifference formatDifferenceAsPercentage + prependValue={prependString} /> )} @@ -132,6 +138,7 @@ export function FlameGraphTooltip({ } showDifference formatDifferenceAsPercentage={false} + prependValue={prependString} /> {onShowMoreClick && ( <> diff --git a/x-pack/plugins/profiling/public/components/flamegraph/index.tsx b/x-pack/plugins/profiling/public/components/flamegraph/index.tsx index 1d5ac238ce017..b16da9a6db8e8 100644 --- a/x-pack/plugins/profiling/public/components/flamegraph/index.tsx +++ b/x-pack/plugins/profiling/public/components/flamegraph/index.tsx @@ -176,6 +176,7 @@ export function FlameGraph({ frame={selected} totalSeconds={primaryFlamegraph?.TotalSeconds ?? 0} totalSamples={totalSamples} + samplingRate={primaryFlamegraph?.SamplingRate ?? 1.0} /> )} diff --git a/x-pack/plugins/profiling/public/components/flamegraph/tooltip_row.tsx b/x-pack/plugins/profiling/public/components/flamegraph/tooltip_row.tsx index 5f3511169ecdc..de2054371f5d2 100644 --- a/x-pack/plugins/profiling/public/components/flamegraph/tooltip_row.tsx +++ b/x-pack/plugins/profiling/public/components/flamegraph/tooltip_row.tsx @@ -17,6 +17,7 @@ export function TooltipRow({ formatDifferenceAsPercentage, showDifference, formatValue, + prependValue = '', }: { value: number; label: string | React.ReactElement; @@ -24,8 +25,11 @@ export function TooltipRow({ formatDifferenceAsPercentage: boolean; showDifference: boolean; formatValue?: (value: number) => string; + prependValue?: string; }) { - const valueLabel = formatValue ? formatValue(Math.abs(value)) : value.toString(); + const valueLabel = `${prependValue}${ + formatValue ? formatValue(Math.abs(value)) : value.toString() + }`; const comparisonLabel = formatValue && isNumber(comparison) ? formatValue(comparison) : comparison?.toString(); diff --git a/x-pack/plugins/profiling/public/components/frame_information_window/get_impact_rows.tsx b/x-pack/plugins/profiling/public/components/frame_information_window/get_impact_rows.tsx index fb5478b65aa2e..85a15206166c5 100644 --- a/x-pack/plugins/profiling/public/components/frame_information_window/get_impact_rows.tsx +++ b/x-pack/plugins/profiling/public/components/frame_information_window/get_impact_rows.tsx @@ -20,11 +20,13 @@ export function getImpactRows({ countExclusive, totalSamples, totalSeconds, + isApproximate = false, }: { countInclusive: number; countExclusive: number; totalSamples: number; totalSeconds: number; + isApproximate: boolean; }) { const { percentage, diff --git a/x-pack/plugins/profiling/public/components/frame_information_window/index.tsx b/x-pack/plugins/profiling/public/components/frame_information_window/index.tsx index 41717078fe3f6..db3fc5d10c9dd 100644 --- a/x-pack/plugins/profiling/public/components/frame_information_window/index.tsx +++ b/x-pack/plugins/profiling/public/components/frame_information_window/index.tsx @@ -30,9 +30,10 @@ export interface Props { }; totalSamples: number; totalSeconds: number; + samplingRate: number; } -export function FrameInformationWindow({ frame, totalSamples, totalSeconds }: Props) { +export function FrameInformationWindow({ frame, totalSamples, totalSeconds, samplingRate }: Props) { const coPilotService = useCoPilot(); const promptParams = useMemo(() => { @@ -84,11 +85,16 @@ export function FrameInformationWindow({ frame, totalSamples, totalSeconds }: Pr sourceLine, }); + // Are the results sampled? If yes, prepend a '~'. + const isApproximate = (samplingRate ?? 1.0) === 1.0; + const prependString = isApproximate ? undefined : '~'; + const impactRows = getImpactRows({ countInclusive, countExclusive, totalSamples, totalSeconds, + isApproximate, }); return ( @@ -138,7 +144,7 @@ export function FrameInformationWindow({ frame, totalSamples, totalSeconds }: Pr - +
diff --git a/x-pack/plugins/profiling/public/components/frame_information_window/key_value_list.tsx b/x-pack/plugins/profiling/public/components/frame_information_window/key_value_list.tsx index 752be18349be1..4dc6909173e63 100644 --- a/x-pack/plugins/profiling/public/components/frame_information_window/key_value_list.tsx +++ b/x-pack/plugins/profiling/public/components/frame_information_window/key_value_list.tsx @@ -10,20 +10,21 @@ import React from 'react'; interface Props { rows: Array<{ label: string | React.ReactNode; value: React.ReactNode }>; + prependString?: string; } -export function KeyValueList({ rows }: Props) { +export function KeyValueList({ rows, prependString = '' }: Props) { return ( {rows.map((row, index) => ( - <> + {row.label}: - {row.value} + {`${prependString}row.value`} @@ -32,7 +33,7 @@ export function KeyValueList({ rows }: Props) { ) : undefined} - + ))} ); diff --git a/x-pack/plugins/profiling/public/components/topn_functions/index.tsx b/x-pack/plugins/profiling/public/components/topn_functions/index.tsx index d86f5fe62d66f..0b5736c72fe39 100644 --- a/x-pack/plugins/profiling/public/components/topn_functions/index.tsx +++ b/x-pack/plugins/profiling/public/components/topn_functions/index.tsx @@ -45,24 +45,36 @@ interface Row { }; } +function getTotalSamplesLabel(samplingRate?: number) { + if (samplingRate === undefined) { + return i18n.translate('xpack.profiling.functionsView.totalSampleCountLabel', { + defaultMessage: 'Total sample estimate:', + }); + } + return i18n.translate('xpack.profiling.functionsView.totalSampleCountLabelWithSamplingRate', { + defaultMessage: 'Total sample (estimate sample rate: {samplingRate}):', + values: { samplingRate }, + }); +} + function TotalSamplesStat({ totalSamples, newSamples, + samplingRateA, + samplingRateB, }: { totalSamples: number; newSamples: number | undefined; + samplingRateA: number; + samplingRateB: number | undefined; }) { const value = totalSamples.toLocaleString(); - const sampleHeader = i18n.translate('xpack.profiling.functionsView.totalSampleCountLabel', { - defaultMessage: ' Total sample estimate: ', - }); - if (newSamples === undefined || newSamples === 0) { return ( {value}} - description={sampleHeader} + description={getTotalSamplesLabel(samplingRateA)} /> ); } @@ -75,10 +87,10 @@ function TotalSamplesStat({ title={ {value} - + } - description={sampleHeader} + description={getTotalSamplesLabel(samplingRateB)} /> ); } @@ -87,12 +99,14 @@ function SampleStat({ samples, diffSamples, totalSamples, + isSampled, }: { samples: number; diffSamples?: number; totalSamples: number; + isSampled: boolean; }) { - const samplesLabel = samples.toLocaleString(); + const samplesLabel = `${isSampled ? '~ ' : ''}${samples.toLocaleString()}`; if (diffSamples === undefined || diffSamples === 0 || totalSamples === 0) { return <>{samplesLabel}; @@ -114,7 +128,7 @@ function SampleStat({ ); } -function CPUStat({ cpu, diffCPU }: { cpu: number; diffCPU?: number }) { +function CPUStat({ cpu, diffCPU }: { cpu: number; diffCPU?: number; isSampled?: boolean }) { const cpuLabel = `${cpu.toFixed(2)}%`; if (diffCPU === undefined || diffCPU === 0) { @@ -162,7 +176,7 @@ export function TopNFunctionsTable({ comparisonScaleFactor, }: Props) { const [selectedRow, setSelectedRow] = useState(); - + const isEstimatedA = (topNFunctions?.SamplingRate ?? 1.0) !== 1.0; const totalCount: number = useMemo(() => { if (!topNFunctions || !topNFunctions.TotalCount) { return 0; @@ -268,7 +282,12 @@ export function TopNFunctionsTable({ }), render: (_, { samples, diff }) => { return ( - + ); }, align: 'right', @@ -394,12 +413,13 @@ export function TopNFunctionsTable({ }, [sortDirection] ).slice(0, 100); - return ( <> @@ -439,6 +459,7 @@ export function TopNFunctionsTable({ }} totalSeconds={totalSeconds ?? 0} totalSamples={selectedRow.samples} + samplingRate={topNFunctions?.SamplingRate ?? 1.0} /> )} diff --git a/x-pack/plugins/profiling/server/routes/flamechart.ts b/x-pack/plugins/profiling/server/routes/flamechart.ts index 3cd0591e63179..3b33267892e0e 100644 --- a/x-pack/plugins/profiling/server/routes/flamechart.ts +++ b/x-pack/plugins/profiling/server/routes/flamechart.ts @@ -49,12 +49,18 @@ export function registerFlameChartSearchRoute({ const totalSeconds = timeTo - timeFrom; const t0 = Date.now(); - const { stackTraceEvents, stackTraces, executables, stackFrames, totalFrames } = - await searchStackTraces({ - client: profilingElasticsearchClient, - filter, - sampleSize: targetSampleSize, - }); + const { + stackTraceEvents, + stackTraces, + executables, + stackFrames, + totalFrames, + samplingRate, + } = await searchStackTraces({ + client: profilingElasticsearchClient, + filter, + sampleSize: targetSampleSize, + }); logger.info(`querying stacktraces took ${Date.now() - t0} ms`); const flamegraph = await withProfilingSpan('create_flamegraph', async () => { @@ -64,12 +70,13 @@ export function registerFlameChartSearchRoute({ stackTraces, stackFrames, executables, - totalFrames + totalFrames, + samplingRate ); logger.info(`creating callee tree took ${Date.now() - t1} ms`); const t2 = Date.now(); - const fg = createBaseFlameGraph(tree, totalSeconds); + const fg = createBaseFlameGraph(tree, samplingRate, totalSeconds); logger.info(`creating flamegraph took ${Date.now() - t2} ms`); return fg; diff --git a/x-pack/plugins/profiling/server/routes/functions.ts b/x-pack/plugins/profiling/server/routes/functions.ts index 59a13a5df4a20..52790c7a9b35b 100644 --- a/x-pack/plugins/profiling/server/routes/functions.ts +++ b/x-pack/plugins/profiling/server/routes/functions.ts @@ -52,13 +52,12 @@ export function registerTopNFunctionsSearchRoute({ }); const t0 = Date.now(); - const { stackTraceEvents, stackTraces, executables, stackFrames } = await searchStackTraces( - { + const { stackTraceEvents, stackTraces, executables, stackFrames, samplingRate } = + await searchStackTraces({ client: profilingElasticsearchClient, filter, sampleSize: targetSampleSize, - } - ); + }); logger.info(`querying stacktraces took ${Date.now() - t0} ms`); const t1 = Date.now(); @@ -69,7 +68,8 @@ export function registerTopNFunctionsSearchRoute({ stackFrames, executables, startIndex, - endIndex + endIndex, + samplingRate ); }); logger.info(`creating topN functions took ${Date.now() - t1} ms`); diff --git a/x-pack/plugins/profiling/server/routes/search_stacktraces.test.ts b/x-pack/plugins/profiling/server/routes/search_stacktraces.test.ts index b8adc472fe9f5..ede7a7a32f10d 100644 --- a/x-pack/plugins/profiling/server/routes/search_stacktraces.test.ts +++ b/x-pack/plugins/profiling/server/routes/search_stacktraces.test.ts @@ -12,6 +12,7 @@ describe('Stack trace response operations', () => { test('empty stack trace response', () => { const original: StackTraceResponse = { total_frames: 0, + sampling_rate: 1.0, }; const expected = { @@ -72,6 +73,7 @@ describe('Stack trace response operations', () => { def: 'def.c', }, total_frames: 1, + sampling_rate: 1.0, }; const expected = { @@ -121,6 +123,7 @@ describe('Stack trace response operations', () => { ['def', { FileName: 'def.c' }], ]), totalFrames: 1, + samplingRate: 1.0, }; const decoded = decodeStackTraceResponse(original); @@ -146,6 +149,7 @@ describe('Stack trace response operations', () => { stack_trace_events: { a: 1, }, + sampling_rate: 1.0, stack_traces: { a: { file_ids: ['abc'], diff --git a/x-pack/plugins/profiling/server/routes/search_stacktraces.ts b/x-pack/plugins/profiling/server/routes/search_stacktraces.ts index c1145ba57a5d1..452b07c526bac 100644 --- a/x-pack/plugins/profiling/server/routes/search_stacktraces.ts +++ b/x-pack/plugins/profiling/server/routes/search_stacktraces.ts @@ -102,6 +102,7 @@ export function decodeStackTraceResponse(response: StackTraceResponse) { stackFrames, executables, totalFrames: response.total_frames, + samplingRate: response.sampling_rate, }; } From 323cd25115531dc7e4fd5c51a5c20ca4572a9072 Mon Sep 17 00:00:00 2001 From: Adam Demjen Date: Thu, 15 Jun 2023 17:32:10 -0400 Subject: [PATCH 38/59] [8.9] Add ESRE landing page sections (#159809) ## Summary This PR continues #159589 and adds 4 sections to the ESRE landing page, with a few caveats - these will be addressed in subsequent PRs: - The accordions only have placeholders for inner content - Multiple accordions can be opened at the same time - Links are missing ![ESRE_landing_page](https://github.com/elastic/kibana/assets/14224983/5237b4ba-3abb-413a-b4be-9a935fe19883) ### Checklist Delete any items that are not applicable to this PR. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [x] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../esre_guide/esre_docs_section.tsx | 123 ++++++ .../esre/components/esre_guide/esre_guide.tsx | 67 +++- .../esre_guide/esre_guide_accordion.tsx | 68 ++++ .../measure_performance_section.tsx | 85 ++++ .../esre_guide/rank_aggregation_section.tsx | 88 +++++ .../esre_guide/semantic_search_section.tsx | 106 +++++ .../public/assets/images/analytics.svg | 353 +++++++++++++++++ .../public/assets/images/elser.svg | 10 + .../public/assets/images/linear.svg | 9 + .../public/assets/images/nlp.svg | 9 + .../public/assets/images/rrf.svg | 8 + .../public/assets/images/scalable.svg | 367 ++++++++++++++++++ .../public/assets/images/simplify.svg | 289 ++++++++++++++ .../public/assets/images/vector.svg | 11 + 14 files changed, 1592 insertions(+), 1 deletion(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_docs_section.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide_accordion.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/measure_performance_section.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/rank_aggregation_section.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/semantic_search_section.tsx create mode 100644 x-pack/plugins/enterprise_search/public/assets/images/analytics.svg create mode 100644 x-pack/plugins/enterprise_search/public/assets/images/elser.svg create mode 100644 x-pack/plugins/enterprise_search/public/assets/images/linear.svg create mode 100644 x-pack/plugins/enterprise_search/public/assets/images/nlp.svg create mode 100644 x-pack/plugins/enterprise_search/public/assets/images/rrf.svg create mode 100644 x-pack/plugins/enterprise_search/public/assets/images/scalable.svg create mode 100644 x-pack/plugins/enterprise_search/public/assets/images/simplify.svg create mode 100644 x-pack/plugins/enterprise_search/public/assets/images/vector.svg diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_docs_section.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_docs_section.tsx new file mode 100644 index 0000000000000..b932ed76cd795 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_docs_section.tsx @@ -0,0 +1,123 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiText, EuiTitle } from '@elastic/eui'; + +import { FormattedMessage } from '@kbn/i18n-react'; + +export const EsreDocsSection: React.FC = () => ( + + + + + +

+ +

+
+
+ + +

+ +

+
+
+
+
+ + + + + + + +

+ +

+
+
+ + +

+ +

+
+
+
+
+
+ + + + + +

+ +

+
+
+ + +

+ +

+
+
+
+
+
+ + + + + +

+ +

+
+
+ + +

+ +

+
+
+
+
+
+
+
+
+); diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide.tsx index 4286c136f2fda..b06759071301a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide.tsx @@ -7,15 +7,37 @@ import React from 'react'; +import { + EuiImage, + EuiPanel, + EuiFlexGroup, + EuiFlexItem, + EuiText, + EuiHorizontalRule, + EuiFlexGrid, + useIsWithinBreakpoints, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import analyticsIllustration from '../../../../assets/images/analytics.svg'; +import scalableIllustration from '../../../../assets/images/scalable.svg'; +import simplifyIllustration from '../../../../assets/images/simplify.svg'; import { SetEsreChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { EnterpriseSearchEsrePageTemplate } from '../layout/page_template'; +import { EsreDocsSection } from './esre_docs_section'; +import { MeasurePerformanceSection } from './measure_performance_section'; +import { RankAggregationSection } from './rank_aggregation_section'; +import { SemanticSearchSection } from './semantic_search_section'; + export const EsreGuide: React.FC = () => { + const isMobile = useIsWithinBreakpoints(['xs']); + return ( { }} > -

ESRE placeholder

+ + + + + + + + + + + + + + + + + + + +

+ +

+
+
+ + + + + + + + + + + + + + + +
+
); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide_accordion.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide_accordion.tsx new file mode 100644 index 0000000000000..35af242e9e5a0 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/esre_guide_accordion.tsx @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { + EuiAccordion, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiTitle, + EuiText, + IconType, + EuiPanel, +} from '@elastic/eui'; + +export interface EsreGuideAccordionProps { + id: string; + icon: IconType; + title: string; + description: string; + initialIsOpen?: boolean; +} + +export const EsreGuideAccordion: React.FC = ({ + id, + icon, + title, + description, + initialIsOpen = false, + children, +}) => { + return ( + + + + + + + + + +

{title}

+
+
+ + +

{description}

+
+
+
+
+
+ } + > + {children} + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/measure_performance_section.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/measure_performance_section.tsx new file mode 100644 index 0000000000000..c3b839b754da8 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/measure_performance_section.tsx @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; + +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSteps, EuiText, EuiTitle } from '@elastic/eui'; +import { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +const steps: EuiContainedStepProps[] = [ + { + title: i18n.translate('xpack.enterpriseSearch.esre.measurePerformanceSection.step1.title', { + defaultMessage: 'Create a collection', + }), + children: ( + + ), + status: 'incomplete', + }, + { + title: i18n.translate('xpack.enterpriseSearch.esre.measurePerformanceSection.step2.title', { + defaultMessage: 'Integrate the analytics tracker', + }), + children: ( + + ), + status: 'incomplete', + }, + { + title: i18n.translate('xpack.enterpriseSearch.esre.measurePerformanceSection.step3.title', { + defaultMessage: 'Review your dashboard', + }), + children: ( + + ), + status: 'incomplete', + }, +]; + +export const MeasurePerformanceSection: React.FC = () => ( + + + + + +

+ +

+
+
+ + +

+ +

+
+
+
+
+ + + + + +
+); diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/rank_aggregation_section.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/rank_aggregation_section.tsx new file mode 100644 index 0000000000000..1e17a1228da20 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/rank_aggregation_section.tsx @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { EuiFlexGroup, EuiFlexItem, EuiText, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import linearCombinationIllustration from '../../../../assets/images/linear.svg'; +import rrfRankingIllustration from '../../../../assets/images/rrf.svg'; + +import { EsreGuideAccordion } from './esre_guide_accordion'; + +export const RankAggregationSection: React.FC = () => ( + + + + + +

+ +

+
+
+ + +

+ +

+
+
+
+
+ + + + + <> +

Placeholder

+ +
+
+ + + <> +

Placeholder

+ +
+
+
+
+
+); diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/semantic_search_section.tsx b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/semantic_search_section.tsx new file mode 100644 index 0000000000000..2aec9fe706a35 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/components/esre_guide/semantic_search_section.tsx @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { EuiFlexGroup, EuiFlexItem, EuiText, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import elserIllustration from '../../../../assets/images/elser.svg'; +import nlpEnrichmentIllustration from '../../../../assets/images/nlp.svg'; +import vectorSearchIllustration from '../../../../assets/images/vector.svg'; + +import { EsreGuideAccordion } from './esre_guide_accordion'; + +export const SemanticSearchSection: React.FC = () => ( + + + + + +

+ +

+
+
+ + +

+ +

+
+
+
+
+ + + + + <> +

Placeholder

+ +
+
+ + + <> +

Placeholder

+ +
+
+ + + <> +

Placeholder

+ +
+
+
+
+
+); diff --git a/x-pack/plugins/enterprise_search/public/assets/images/analytics.svg b/x-pack/plugins/enterprise_search/public/assets/images/analytics.svg new file mode 100644 index 0000000000000..11f59ea0f7807 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/assets/images/analytics.svg @@ -0,0 +1,353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/x-pack/plugins/enterprise_search/public/assets/images/elser.svg b/x-pack/plugins/enterprise_search/public/assets/images/elser.svg new file mode 100644 index 0000000000000..fc16f98934e59 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/assets/images/elser.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/x-pack/plugins/enterprise_search/public/assets/images/linear.svg b/x-pack/plugins/enterprise_search/public/assets/images/linear.svg new file mode 100644 index 0000000000000..bcedba45d9776 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/assets/images/linear.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/x-pack/plugins/enterprise_search/public/assets/images/nlp.svg b/x-pack/plugins/enterprise_search/public/assets/images/nlp.svg new file mode 100644 index 0000000000000..90fa46f16ed8a --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/assets/images/nlp.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/x-pack/plugins/enterprise_search/public/assets/images/rrf.svg b/x-pack/plugins/enterprise_search/public/assets/images/rrf.svg new file mode 100644 index 0000000000000..dbf4b4cea6e88 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/assets/images/rrf.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/x-pack/plugins/enterprise_search/public/assets/images/scalable.svg b/x-pack/plugins/enterprise_search/public/assets/images/scalable.svg new file mode 100644 index 0000000000000..343bc813f2ce2 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/assets/images/scalable.svg @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/x-pack/plugins/enterprise_search/public/assets/images/simplify.svg b/x-pack/plugins/enterprise_search/public/assets/images/simplify.svg new file mode 100644 index 0000000000000..a639ce10dcb0a --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/assets/images/simplify.svg @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/x-pack/plugins/enterprise_search/public/assets/images/vector.svg b/x-pack/plugins/enterprise_search/public/assets/images/vector.svg new file mode 100644 index 0000000000000..0a25945853b5d --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/assets/images/vector.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + From dd5ac1500906190b67af70fd6af5dc2b706a3f17 Mon Sep 17 00:00:00 2001 From: Luke <11671118+lgestc@users.noreply.github.com> Date: Thu, 15 Jun 2023 23:57:42 +0200 Subject: [PATCH 39/59] Session preview for expandable flyout (#159767) --- ...ert_details_right_panel_overview_tab.cy.ts | 11 +- .../alert_details_right_panel_overview_tab.ts | 4 + .../public/flyout/left/index.tsx | 1 + .../right/components/analyzer_tree.test.tsx | 56 ++++++- .../flyout/right/components/analyzer_tree.tsx | 27 +++- .../components/prevalence_overview.test.tsx | 1 + .../right/components/prevalence_overview.tsx | 3 +- .../right/components/session_preview.test.tsx | 116 ++++++++++++++ .../right/components/session_preview.tsx | 148 ++++++++++++++++++ .../flyout/right/components/test_ids.ts | 5 + .../flyout/right/components/translations.ts | 35 +++++ .../visualizations_section.test.tsx | 13 +- .../components/visualizations_section.tsx | 6 + .../right/hooks/use_process_data.test.tsx | 84 ++++++++++ .../flyout/right/hooks/use_process_data.ts | 58 +++++++ 15 files changed, 556 insertions(+), 12 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/flyout/right/components/session_preview.test.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/right/components/session_preview.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.test.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.ts diff --git a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts index ba66d5a87068f..faec335d14039 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts @@ -41,6 +41,7 @@ import { DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_MITRE_ATTACK_TITLE, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_DETAILS, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_TITLE, + DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_SESSION_PREVIEW, } from '../../../../screens/expandable_flyout/alert_details_right_panel_overview_tab'; import { clickCorrelationsViewAllButton, @@ -324,11 +325,19 @@ describe( }); describe('visualizations section', () => { - it('should display analyzer preview', () => { + it('should display analyzer and session previews', () => { toggleOverviewTabDescriptionSection(); toggleOverviewTabVisualizationsSection(); + + cy.log('analyzer graph preview'); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ANALYZER_TREE).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ANALYZER_TREE).should('be.visible'); + + cy.log('session view preview'); + + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_SESSION_PREVIEW).scrollIntoView(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_SESSION_PREVIEW).should('be.visible'); }); }); } diff --git a/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts b/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts index d3e1fe10d26f2..922d57b9c49fc 100644 --- a/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts +++ b/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts @@ -42,6 +42,7 @@ import { MITRE_ATTACK_TITLE_TEST_ID, REASON_DETAILS_TEST_ID, REASON_TITLE_TEST_ID, + SESSION_PREVIEW_TEST_ID, VISUALIZATIONS_SECTION_HEADER_TEST_ID, } from '../../../public/flyout/right/components/test_ids'; @@ -132,3 +133,6 @@ export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_VISUALIZATIONS_SECTION_HEADER getDataTestSubjectSelector(VISUALIZATIONS_SECTION_HEADER_TEST_ID); export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ANALYZER_TREE = getDataTestSubjectSelector(ANALYZER_TREE_TEST_ID); + +export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_SESSION_PREVIEW = + getDataTestSubjectSelector(SESSION_PREVIEW_TEST_ID); diff --git a/x-pack/plugins/security_solution/public/flyout/left/index.tsx b/x-pack/plugins/security_solution/public/flyout/left/index.tsx index c92483a0c20aa..8c77babd483df 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/index.tsx +++ b/x-pack/plugins/security_solution/public/flyout/left/index.tsx @@ -20,6 +20,7 @@ import { useLeftPanelContext } from './context'; export type LeftPanelPaths = 'visualize' | 'insights' | 'investigation'; export const LeftPanelKey: LeftPanelProps['key'] = 'document-details-left'; +export const LeftPanelVisualizeTabPath: LeftPanelProps['path'] = ['visualize']; export const LeftPanelInsightsTabPath: LeftPanelProps['path'] = ['insights']; export const LeftPanelInvestigationTabPath: LeftPanelProps['path'] = ['investigation']; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_tree.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_tree.test.tsx index b07fe9b17bc2d..cf05f61ace9eb 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_tree.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_tree.test.tsx @@ -11,25 +11,54 @@ import { ANALYZER_TREE_TEST_ID, ANALYZER_TREE_LOADING_TEST_ID, ANALYZER_TREE_ERROR_TEST_ID, + ANALYZER_TREE_VIEW_DETAILS_BUTTON_TEST_ID, } from './test_ids'; import { ANALYZER_PREVIEW_TITLE } from './translations'; import * as mock from '../mocks/mock_analyzer_data'; +import type { AnalyzerTreeProps } from './analyzer_tree'; import { AnalyzerTree } from './analyzer_tree'; +import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; +import { TestProviders } from '@kbn/timelines-plugin/public/mock'; +import { RightPanelContext } from '../context'; +import { LeftPanelKey, LeftPanelVisualizeTabPath } from '../../left'; -const defaultProps = { +const defaultProps: AnalyzerTreeProps = { statsNodes: mock.mockStatsNodes, loading: false, error: false, }; + +const flyoutContextValue = { + openLeftPanel: jest.fn(), +} as unknown as ExpandableFlyoutContext; + +const panelContextValue = { + eventId: 'event id', + indexName: 'indexName', + browserFields: {}, + dataFormattedForFieldBrowser: [], +} as unknown as RightPanelContext; + +const renderAnalyzerTree = (children: React.ReactNode) => + render( + + + + {children} + + + + ); + describe('', () => { it('should render the component when data is passed', () => { - const { getByTestId, getByText } = render(); + const { getByTestId, getByText } = renderAnalyzerTree(); expect(getByText(ANALYZER_PREVIEW_TITLE)).toBeInTheDocument(); expect(getByTestId(ANALYZER_TREE_TEST_ID)).toBeInTheDocument(); }); it('should render blank when data is not passed', () => { - const { queryByTestId, queryByText } = render( + const { queryByTestId, queryByText } = renderAnalyzerTree( ); expect(queryByText(ANALYZER_PREVIEW_TITLE)).not.toBeInTheDocument(); @@ -37,13 +66,30 @@ describe('', () => { }); it('should render loading spinner when loading is true', () => { - const { getByTestId } = render(); + const { getByTestId } = renderAnalyzerTree(); expect(getByTestId(ANALYZER_TREE_LOADING_TEST_ID)).toBeInTheDocument(); }); it('should display error message when error is true', () => { - const { getByTestId, getByText } = render(); + const { getByTestId, getByText } = renderAnalyzerTree( + + ); expect(getByText('Unable to display analyzer preview.')).toBeInTheDocument(); expect(getByTestId(ANALYZER_TREE_ERROR_TEST_ID)).toBeInTheDocument(); }); + + it('should navigate to left section Visualize tab when clicking on title', () => { + const { getByTestId } = renderAnalyzerTree(); + + getByTestId(ANALYZER_TREE_VIEW_DETAILS_BUTTON_TEST_ID).click(); + expect(flyoutContextValue.openLeftPanel).toHaveBeenCalledWith({ + id: LeftPanelKey, + path: LeftPanelVisualizeTabPath, + params: { + id: panelContextValue.eventId, + indexName: panelContextValue.indexName, + scopeId: panelContextValue.scopeId, + }, + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_tree.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_tree.tsx index 99d5924083a12..d1c15dc48b492 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_tree.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_tree.tsx @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React, { useMemo } from 'react'; +import React, { useCallback, useMemo } from 'react'; import { EuiPanel, EuiButtonEmpty, @@ -12,11 +12,15 @@ import { EuiLoadingSpinner, EuiEmptyPrompt, } from '@elastic/eui'; +import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; +import { useRightPanelContext } from '../context'; +import { LeftPanelKey, LeftPanelVisualizeTabPath } from '../../left'; import { ANALYZER_PREVIEW_TITLE, ANALYZER_PREVIEW_TEXT } from './translations'; import { ANALYZER_TREE_TEST_ID, ANALYZER_TREE_LOADING_TEST_ID, ANALYZER_TREE_ERROR_TEST_ID, + ANALYZER_TREE_VIEW_DETAILS_BUTTON_TEST_ID, } from './test_ids'; import type { StatsNode } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; import { getTreeNodes } from '../utils/analyzer_helpers'; @@ -41,8 +45,22 @@ export interface AnalyzerTreeProps { * Analyzer tree that represent a summary view of analyzer. It shows current process, and its parent and child processes */ export const AnalyzerTree: React.FC = ({ statsNodes, loading, error }) => { + const { eventId, indexName, scopeId } = useRightPanelContext(); + const { openLeftPanel } = useExpandableFlyoutContext(); const items = useMemo(() => getTreeNodes(statsNodes ?? []), [statsNodes]); + const goToAnalyserTab = useCallback(() => { + openLeftPanel({ + id: LeftPanelKey, + path: LeftPanelVisualizeTabPath, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + }, [eventId, openLeftPanel, indexName, scopeId]); + if (loading) { return ; } @@ -63,7 +81,12 @@ export const AnalyzerTree: React.FC = ({ statsNodes, loading, return ( - {}}> + {ANALYZER_PREVIEW_TITLE} diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.test.tsx index fc0e234c52e1b..13f51e47c6a78 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.test.tsx @@ -133,6 +133,7 @@ describe('', () => { params: { id: panelContextValue.eventId, indexName: panelContextValue.indexName, + scopeId: panelContextValue.scopeId, }, }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.tsx index a0480468d328b..77f5065bad450 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.tsx @@ -33,9 +33,10 @@ export const PrevalenceOverview: FC = () => { params: { id: eventId, indexName, + scopeId, }, }); - }, [eventId, openLeftPanel, indexName]); + }, [eventId, openLeftPanel, indexName, scopeId]); const { empty, prevalenceRows } = usePrevalence({ eventId, diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/session_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/session_preview.test.tsx new file mode 100644 index 0000000000000..42b8129919782 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/right/components/session_preview.test.tsx @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render, screen } from '@testing-library/react'; +import { useProcessData } from '../hooks/use_process_data'; +import { SessionPreview } from './session_preview'; +import { TestProviders } from '../../../common/mock'; +import React from 'react'; +import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; +import { RightPanelContext } from '../context'; +import { SESSION_PREVIEW_VIEW_DETAILS_BUTTON_TEST_ID } from './test_ids'; +import { LeftPanelKey, LeftPanelVisualizeTabPath } from '../../left'; + +jest.mock('../hooks/use_process_data'); + +const flyoutContextValue = { + openLeftPanel: jest.fn(), +} as unknown as ExpandableFlyoutContext; + +const panelContextValue = { + eventId: 'event id', + indexName: 'indexName', + browserFields: {}, + dataFormattedForFieldBrowser: [], +} as unknown as RightPanelContext; + +const renderSessionPreview = () => + render( + + + + + + + + ); + +describe('SessionPreview', () => { + afterEach(() => { + jest.resetAllMocks(); + }); + + it('renders session preview with all data', () => { + jest.mocked(useProcessData).mockReturnValue({ + processName: 'process1', + userName: 'user1', + startAt: '2022-01-01T00:00:00.000Z', + ruleName: 'rule1', + ruleId: 'id', + workdir: '/path/to/workdir', + command: 'command1', + }); + + renderSessionPreview(); + + expect(screen.getByText('user1')).toBeInTheDocument(); + expect(screen.getByText('started')).toBeInTheDocument(); + expect(screen.getByText('process1')).toBeInTheDocument(); + expect(screen.getByText('at')).toBeInTheDocument(); + expect(screen.getByText('Jan 1, 2022 @ 00:00:00.000')).toBeInTheDocument(); + expect(screen.getByText('with rule')).toBeInTheDocument(); + expect(screen.getByText('rule1')).toBeInTheDocument(); + expect(screen.getByText('by')).toBeInTheDocument(); + expect(screen.getByText('/path/to/workdir command1')).toBeInTheDocument(); + }); + + it('renders session preview without optional data', () => { + jest.mocked(useProcessData).mockReturnValue({ + processName: 'process1', + userName: 'user1', + startAt: null, + ruleName: null, + ruleId: null, + command: null, + workdir: null, + }); + + renderSessionPreview(); + + expect(screen.getByText('user1')).toBeInTheDocument(); + expect(screen.getByText('started')).toBeInTheDocument(); + expect(screen.getByText('process1')).toBeInTheDocument(); + expect(screen.queryByText('at')).not.toBeInTheDocument(); + expect(screen.queryByText('with rule')).not.toBeInTheDocument(); + expect(screen.queryByText('by')).not.toBeInTheDocument(); + }); + + it('should navigate to left section Visualize tab when clicking on title', () => { + jest.mocked(useProcessData).mockReturnValue({ + processName: 'process1', + userName: 'user1', + startAt: '2022-01-01T00:00:00.000Z', + ruleName: 'rule1', + ruleId: 'id', + workdir: '/path/to/workdir', + command: 'command1', + }); + + const { getByTestId } = renderSessionPreview(); + + getByTestId(SESSION_PREVIEW_VIEW_DETAILS_BUTTON_TEST_ID).click(); + expect(flyoutContextValue.openLeftPanel).toHaveBeenCalledWith({ + id: LeftPanelKey, + path: LeftPanelVisualizeTabPath, + params: { + id: panelContextValue.eventId, + indexName: panelContextValue.indexName, + scopeId: panelContextValue.scopeId, + }, + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/session_preview.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/session_preview.tsx new file mode 100644 index 0000000000000..0d79d2b51f25b --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/right/components/session_preview.tsx @@ -0,0 +1,148 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { EuiButtonEmpty, EuiCode, EuiIcon, EuiPanel, useEuiTheme } from '@elastic/eui'; +import React, { useMemo, type FC, useCallback } from 'react'; +import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; +import { SIGNAL_RULE_NAME_FIELD_NAME } from '../../../timelines/components/timeline/body/renderers/constants'; +import { useRightPanelContext } from '../context'; +import { PreferenceFormattedDate } from '../../../common/components/formatted_date'; + +import { useProcessData } from '../hooks/use_process_data'; +import { SESSION_PREVIEW_TEST_ID, SESSION_PREVIEW_VIEW_DETAILS_BUTTON_TEST_ID } from './test_ids'; +import { + SESSION_PREVIEW_COMMAND_TEXT, + SESSION_PREVIEW_PROCESS_TEXT, + SESSION_PREVIEW_RULE_TEXT, + SESSION_PREVIEW_TIME_TEXT, + SESSION_PREVIEW_TITLE, +} from './translations'; +import { LeftPanelKey, LeftPanelVisualizeTabPath } from '../../left'; +import { RenderRuleName } from '../../../timelines/components/timeline/body/renderers/formatted_field_helpers'; + +/** + * One-off helper to make sure that inline values are rendered consistently + */ +const ValueContainer: FC<{ text?: string }> = ({ text, children }) => ( + <> + {text && ( + <> +   + {text} +   + + )} + {children} + +); + +/** + * Renders session preview under visualistions section in the flyout right EuiPanel + */ +export const SessionPreview: FC = () => { + const { eventId, indexName, scopeId } = useRightPanelContext(); + const { openLeftPanel } = useExpandableFlyoutContext(); + + const goToSessionViewTab = useCallback(() => { + openLeftPanel({ + id: LeftPanelKey, + path: LeftPanelVisualizeTabPath, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + }, [eventId, openLeftPanel, indexName, scopeId]); + + const { processName, userName, startAt, ruleName, ruleId, workdir, command } = useProcessData(); + const { euiTheme } = useEuiTheme(); + + const emphasisStyles = useMemo( + () => ({ fontWeight: euiTheme.font.weight.bold }), + [euiTheme.font.weight.bold] + ); + + const processNameFragment = useMemo(() => { + return ( + processName && ( + + {processName} + + ) + ); + }, [emphasisStyles, processName]); + + const timeFragment = useMemo(() => { + return ( + startAt && ( + + + + ) + ); + }, [startAt]); + + const ruleFragment = useMemo(() => { + return ( + ruleName && + ruleId && ( + + + + ) + ); + }, [ruleName, ruleId, scopeId, eventId]); + + const commandFragment = useMemo(() => { + return ( + command && ( + + + {workdir} {command} + + + ) + ); + }, [command, workdir]); + + return ( + + + + {SESSION_PREVIEW_TITLE} + + +
+ + +   + {userName} + + {processNameFragment} + {timeFragment} + {ruleFragment} + {commandFragment} +
+
+
+ ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts index 002effd64ee30..48d4ba287785b 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts @@ -129,5 +129,10 @@ export const VISUALIZATIONS_SECTION_HEADER_TEST_ID = 'securitySolutionDocumentDetailsVisualizationsTitleHeader'; export const ANALYZER_PREVIEW_TEST_ID = 'securitySolutionDocumentDetailsAnalayzerPreview'; export const ANALYZER_TREE_TEST_ID = 'securitySolutionDocumentDetailsAnalayzerTree'; +export const ANALYZER_TREE_VIEW_DETAILS_BUTTON_TEST_ID = + 'securitySolutionDocumentDetailsAnalayzerTreeViewDetailsButton'; export const ANALYZER_TREE_LOADING_TEST_ID = 'securitySolutionDocumentDetailsAnalayzerTreeLoading'; export const ANALYZER_TREE_ERROR_TEST_ID = 'securitySolutionDocumentDetailsAnalayzerTreeError'; +export const SESSION_PREVIEW_TEST_ID = 'securitySolutionDocumentDetailsSessionPreview'; +export const SESSION_PREVIEW_VIEW_DETAILS_BUTTON_TEST_ID = + 'securitySolutionDocumentDetailsSessionPreviewViewDetailsButton'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts b/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts index 80b7bf54a1f18..7952c4dbe8847 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts +++ b/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts @@ -296,3 +296,38 @@ export const INVESTIGATION_GUIDE_TITLE = i18n.translate( defaultMessage: 'Investigation guide', } ); + +export const SESSION_PREVIEW_TITLE = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.sessionPreview.title', + { + defaultMessage: 'Session viewer preview', + } +); + +export const SESSION_PREVIEW_PROCESS_TEXT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.sessionPreview.processText', + { + defaultMessage: 'started', + } +); + +export const SESSION_PREVIEW_TIME_TEXT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.sessionPreview.timeText', + { + defaultMessage: 'at', + } +); + +export const SESSION_PREVIEW_RULE_TEXT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.sessionPreview.ruleText', + { + defaultMessage: 'with rule', + } +); + +export const SESSION_PREVIEW_COMMAND_TEXT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.sessionPreview.commandText', + { + defaultMessage: 'by', + } +); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.test.tsx index 2b447967ca80b..d5d3a48340652 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.test.tsx @@ -13,6 +13,7 @@ import { VisualizationsSection } from './visualizations_section'; import { mockContextValue, mockDataFormattedForFieldBrowser } from '../mocks/mock_context'; import { RightPanelContext } from '../context'; import { useAlertPrevalenceFromProcessTree } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; +import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; jest.mock('../../../common/containers/alerts/use_alert_prevalence_from_process_tree', () => ({ useAlertPrevalenceFromProcessTree: jest.fn(), @@ -35,10 +36,16 @@ describe('', () => { }); it('should render visualizations component', () => { + const flyoutContextValue = { + openLeftPanel: jest.fn(), + } as unknown as ExpandableFlyoutContext; + const { getByTestId, getAllByRole } = render( - - - + + + + + ); expect(getByTestId(VISUALIZATIONS_SECTION_HEADER_TEST_ID)).toBeInTheDocument(); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.tsx index c6c84a6a6b34d..a8e3e56c0a5cb 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.tsx @@ -6,10 +6,12 @@ */ import React from 'react'; +import { EuiSpacer } from '@elastic/eui'; import { ExpandableSection } from './expandable_section'; import { VISUALIZATIONS_SECTION_TEST_ID } from './test_ids'; import { VISUALIZATIONS_TITLE } from './translations'; import { AnalyzerPreview } from './analyzer_preview'; +import { SessionPreview } from './session_preview'; export interface VisualizatioinsSectionProps { /** @@ -30,6 +32,10 @@ export const VisualizationsSection: React.FC = ({ title={VISUALIZATIONS_TITLE} data-test-subj={VISUALIZATIONS_SECTION_TEST_ID} > + + + + ); diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.test.tsx new file mode 100644 index 0000000000000..ac6c628ed090e --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.test.tsx @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { getUserDisplayName, useProcessData } from './use_process_data'; +import { renderHook } from '@testing-library/react-hooks'; +import type { FC } from 'react'; +import { RightPanelContext } from '../context'; +import React from 'react'; + +describe('getUserDisplayName', () => { + const getFieldsData = jest.fn(); + + it('should return userName', () => { + getFieldsData.mockImplementation((field: string) => { + if (field === 'process.entry_leader.user.name') { + return 'userName'; + } + }); + + expect(getUserDisplayName(getFieldsData)).toEqual('userName'); + }); + + it('should return unknown', () => { + getFieldsData.mockImplementation((field: string) => undefined); + + expect(getUserDisplayName(getFieldsData)).toEqual('unknown'); + }); + + it('should return root', () => { + getFieldsData.mockImplementation((field: string) => { + if (field === 'process.entry_leader.user.name') { + return undefined; + } + if (field === 'process.entry_leader.user.id') { + return '0'; + } + }); + + expect(getUserDisplayName(getFieldsData)).toEqual('root'); + }); + + it('should return uid+userId', () => { + getFieldsData.mockImplementation((field: string) => { + if (field === 'process.entry_leader.user.name') { + return undefined; + } + if (field === 'process.entry_leader.user.id') { + return 'userId'; + } + }); + + expect(getUserDisplayName(getFieldsData)).toEqual('uid: userId'); + }); +}); + +const panelContextValue = { + getFieldsData: jest.fn().mockReturnValue('test'), +} as unknown as RightPanelContext; + +const ProviderComponent: FC = ({ children }) => ( + {children} +); + +describe('useProcessData', () => { + it('should return values for session preview component', () => { + const hookResult = renderHook(() => useProcessData(), { + wrapper: ProviderComponent, + }); + + expect(hookResult.result.current).toEqual({ + command: 'test', + processName: 'test', + ruleName: 'test', + ruleId: 'test', + startAt: 'test', + userName: 'test', + workdir: 'test', + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.ts b/x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.ts new file mode 100644 index 0000000000000..72ca71badaf07 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import { getField } from '../../shared/utils'; +import { useRightPanelContext } from '../context'; + +const FIELD_USER_NAME = 'process.entry_leader.user.name' as const; +const FIELD_USER_ID = 'process.entry_leader.user.id' as const; +const FIELD_PROCESS_NAME = 'process.entry_leader.name' as const; +const FIELD_START_AT = 'process.entry_leader.start' as const; +const FIELD_RULE_NAME = 'kibana.alert.rule.name' as const; +const FIELD_RULE_ID = 'kibana.alert.rule.uuid' as const; +const FIELD_WORKING_DIRECTORY = 'process.group_leader.working_directory' as const; +const FIELD_COMMAND = 'process.command_line' as const; + +/** + * Returns user name with some fallback logic in case it is not available. The idea was borrowed from session viewer + */ +export const getUserDisplayName = (getFieldsData: GetFieldsData): string => { + const userName = getField(getFieldsData(FIELD_USER_NAME)); + const userId = getField(getFieldsData(FIELD_USER_ID)); + + if (userName) { + return userName; + } + + if (!userId) { + return 'unknown'; + } + + return userId === '0' ? 'root' : `uid: ${userId}`; +}; + +/** + * Returns memoized process-related values for the session preview component + */ +export const useProcessData = () => { + const { getFieldsData } = useRightPanelContext(); + + return useMemo( + () => ({ + userName: getUserDisplayName(getFieldsData), + processName: getField(getFieldsData(FIELD_PROCESS_NAME)), + startAt: getField(getFieldsData(FIELD_START_AT)), + ruleName: getField(getFieldsData(FIELD_RULE_NAME)), + ruleId: getField(getFieldsData(FIELD_RULE_ID)), + workdir: getField(getFieldsData(FIELD_WORKING_DIRECTORY)), + command: getField(getFieldsData(FIELD_COMMAND)), + }), + [getFieldsData] + ); +}; From fa98aa4f8c32e2fe110465cd43fe61b7e0e4237a Mon Sep 17 00:00:00 2001 From: Kevin Logan <56395104+kevinlog@users.noreply.github.com> Date: Thu, 15 Jun 2023 18:35:56 -0400 Subject: [PATCH 40/59] [Security Solution] Enable upload feature flag (#159843) ## Summary Enable upload response action feature flag for the `8.9` release ### 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 --- .../plugins/security_solution/common/experimental_features.ts | 2 +- .../lib/integration_tests/console_commands_definition.test.tsx | 1 + .../response_actions/view/response_actions_list_page.test.tsx | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/security_solution/common/experimental_features.ts b/x-pack/plugins/security_solution/common/experimental_features.ts index 07d06e4be4e6b..ed9afb7fa9518 100644 --- a/x-pack/plugins/security_solution/common/experimental_features.ts +++ b/x-pack/plugins/security_solution/common/experimental_features.ts @@ -69,7 +69,7 @@ export const allowedExperimentalValues = Object.freeze({ /** * Enables the `upload` endpoint response action (v8.9) */ - responseActionUploadEnabled: false, + responseActionUploadEnabled: true, /** * Enables top charts on Alerts Page diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/integration_tests/console_commands_definition.test.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/integration_tests/console_commands_definition.test.tsx index 4b1d26a6e243f..25211b3ce136c 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/integration_tests/console_commands_definition.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/integration_tests/console_commands_definition.test.tsx @@ -65,6 +65,7 @@ describe('When displaying Endpoint Response Actions', () => { 'suspend-process --pid', 'get-file --path', 'execute --command', + 'upload --file', ]); }); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.test.tsx b/x-pack/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.test.tsx index 5a98765b46d44..ebde74b17be76 100644 --- a/x-pack/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.test.tsx @@ -423,7 +423,7 @@ describe('Response actions history page', () => { }); expect(history.location.search).toEqual( - '?commands=isolate%2Crelease%2Ckill-process%2Csuspend-process%2Cprocesses%2Cget-file%2Cexecute' + '?commands=isolate%2Crelease%2Ckill-process%2Csuspend-process%2Cprocesses%2Cget-file%2Cexecute%2Cupload' ); }); From f9d16e160be2522825f22b4b312ae8986e77a56c Mon Sep 17 00:00:00 2001 From: Kevin Delemme Date: Thu, 15 Jun 2023 18:39:21 -0400 Subject: [PATCH 41/59] feat(slo): Show SLI preview chart for custom kql (#159713) --- .../kbn-slo-schema/src/rest_specs/slo.ts | 39 ++++--- .../kbn-slo-schema/src/schema/common.ts | 6 + .../public/data/slo/indicator.ts | 4 +- .../public/hooks/slo/query_key_factory.ts | 3 + .../public/hooks/slo/use_get_preview_data.ts | 62 +++++++++++ .../components/common/data_preview_chart.tsx | 105 ++++++++++++++++++ .../custom_kql_indicator_type_form.tsx | 11 +- .../pages/slo_edit/hooks/use_preview.ts | 29 +++++ .../hooks/use_section_form_validation.ts | 8 +- .../public/pages/slo_edit/slo_edit.test.tsx | 6 + .../observability/server/errors/errors.ts | 1 + .../observability/server/routes/slo/route.ts | 22 ++++ .../server/services/slo/get_preview_data.ts | 68 ++++++++++++ 13 files changed, 335 insertions(+), 29 deletions(-) create mode 100644 x-pack/plugins/observability/public/hooks/slo/use_get_preview_data.ts create mode 100644 x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx create mode 100644 x-pack/plugins/observability/public/pages/slo_edit/hooks/use_preview.ts create mode 100644 x-pack/plugins/observability/server/services/slo/get_preview_data.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts b/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts index f8f1d60edb7ad..9d37c36c94534 100644 --- a/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts +++ b/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts @@ -6,24 +6,22 @@ */ import * as t from 'io-ts'; - import { budgetingMethodSchema, dateType, historicalSummarySchema, indicatorSchema, indicatorTypesArraySchema, + kqlCustomIndicatorSchema, + metricCustomIndicatorSchema, objectiveSchema, optionalSettingsSchema, + previewDataSchema, settingsSchema, sloIdSchema, summarySchema, tagsSchema, timeWindowSchema, - metricCustomIndicatorSchema, - kqlCustomIndicatorSchema, - apmTransactionErrorRateIndicatorSchema, - apmTransactionDurationIndicatorSchema, } from '../schema'; const createSLOParamsSchema = t.type({ @@ -44,6 +42,14 @@ const createSLOResponseSchema = t.type({ id: sloIdSchema, }); +const getPreviewDataParamsSchema = t.type({ + body: t.type({ + indicator: indicatorSchema, + }), +}); + +const getPreviewDataResponseSchema = t.array(previewDataSchema); + const deleteSLOParamsSchema = t.type({ path: t.type({ id: sloIdSchema, @@ -156,20 +162,22 @@ type FetchHistoricalSummaryParams = t.TypeOf; type HistoricalSummaryResponse = t.OutputOf; +type GetPreviewDataParams = t.TypeOf; +type GetPreviewDataResponse = t.TypeOf; + type BudgetingMethod = t.TypeOf; -type MetricCustomIndicatorSchema = t.TypeOf; -type KQLCustomIndicatorSchema = t.TypeOf; -type APMTransactionErrorRateIndicatorSchema = t.TypeOf< - typeof apmTransactionErrorRateIndicatorSchema ->; -type APMTransactionDurationIndicatorSchema = t.TypeOf; +type Indicator = t.OutputOf; +type MetricCustomIndicator = t.OutputOf; +type KQLCustomIndicator = t.OutputOf; export { createSLOParamsSchema, deleteSLOParamsSchema, findSLOParamsSchema, findSLOResponseSchema, + getPreviewDataParamsSchema, + getPreviewDataResponseSchema, getSLODiagnosisParamsSchema, getSLOParamsSchema, getSLOResponseSchema, @@ -188,6 +196,8 @@ export type { CreateSLOResponse, FindSLOParams, FindSLOResponse, + GetPreviewDataParams, + GetPreviewDataResponse, GetSLOResponse, FetchHistoricalSummaryParams, FetchHistoricalSummaryResponse, @@ -198,8 +208,7 @@ export type { UpdateSLOInput, UpdateSLOParams, UpdateSLOResponse, - MetricCustomIndicatorSchema, - KQLCustomIndicatorSchema, - APMTransactionDurationIndicatorSchema, - APMTransactionErrorRateIndicatorSchema, + Indicator, + MetricCustomIndicator, + KQLCustomIndicator, }; diff --git a/x-pack/packages/kbn-slo-schema/src/schema/common.ts b/x-pack/packages/kbn-slo-schema/src/schema/common.ts index f702540bf20c7..250525ce2192c 100644 --- a/x-pack/packages/kbn-slo-schema/src/schema/common.ts +++ b/x-pack/packages/kbn-slo-schema/src/schema/common.ts @@ -52,6 +52,11 @@ const historicalSummarySchema = t.intersection([ summarySchema, ]); +const previewDataSchema = t.type({ + date: dateType, + sliValue: t.number, +}); + const dateRangeSchema = t.type({ from: dateType, to: dateType }); export type { SummarySchema }; @@ -63,6 +68,7 @@ export { dateType, errorBudgetSchema, historicalSummarySchema, + previewDataSchema, statusSchema, summarySchema, }; diff --git a/x-pack/plugins/observability/public/data/slo/indicator.ts b/x-pack/plugins/observability/public/data/slo/indicator.ts index 62ff1c0b8287f..227ddf89fc667 100644 --- a/x-pack/plugins/observability/public/data/slo/indicator.ts +++ b/x-pack/plugins/observability/public/data/slo/indicator.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { KQLCustomIndicatorSchema, SLOWithSummaryResponse } from '@kbn/slo-schema'; +import { KQLCustomIndicator, SLOWithSummaryResponse } from '@kbn/slo-schema'; export const buildApmAvailabilityIndicator = ( params: Partial = {} @@ -53,5 +53,5 @@ export const buildCustomKqlIndicator = ( timestampField: '@timestamp', ...params, }, - } as KQLCustomIndicatorSchema; + } as KQLCustomIndicator; }; diff --git a/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts b/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts index 73bdd9528dd75..f4c557105ce62 100644 --- a/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts +++ b/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts @@ -5,6 +5,8 @@ * 2.0. */ +import type { Indicator } from '@kbn/slo-schema'; + interface SloKeyFilter { name: string; page: number; @@ -31,6 +33,7 @@ export const sloKeys = { historicalSummaries: () => [...sloKeys.all, 'historicalSummary'] as const, historicalSummary: (sloIds: string[]) => [...sloKeys.historicalSummaries(), sloIds] as const, globalDiagnosis: () => [...sloKeys.all, 'globalDiagnosis'] as const, + preview: (indicator?: Indicator) => [...sloKeys.all, 'preview', indicator] as const, }; export const compositeSloKeys = { diff --git a/x-pack/plugins/observability/public/hooks/slo/use_get_preview_data.ts b/x-pack/plugins/observability/public/hooks/slo/use_get_preview_data.ts new file mode 100644 index 0000000000000..89d1fe4e5ef8c --- /dev/null +++ b/x-pack/plugins/observability/public/hooks/slo/use_get_preview_data.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 { GetPreviewDataResponse, Indicator } from '@kbn/slo-schema'; +import { + QueryObserverResult, + RefetchOptions, + RefetchQueryFilters, + useQuery, +} from '@tanstack/react-query'; +import { useKibana } from '../../utils/kibana_react'; +import { sloKeys } from './query_key_factory'; + +export interface UseGetPreviewData { + data: GetPreviewDataResponse | undefined; + isInitialLoading: boolean; + isRefetching: boolean; + isLoading: boolean; + isSuccess: boolean; + isError: boolean; + refetch: ( + options?: (RefetchOptions & RefetchQueryFilters) | undefined + ) => Promise>; +} + +export function useGetPreviewData(indicator?: Indicator): UseGetPreviewData { + const { http } = useKibana().services; + + const { isInitialLoading, isLoading, isError, isSuccess, isRefetching, data, refetch } = useQuery( + { + queryKey: sloKeys.preview(indicator), + queryFn: async ({ signal }) => { + const response = await http.post( + '/internal/observability/slos/_preview', + { + body: JSON.stringify({ indicator }), + signal, + } + ); + + return response; + }, + retry: false, + refetchOnWindowFocus: false, + enabled: Boolean(indicator), + } + ); + + return { + data, + isLoading, + isRefetching, + isInitialLoading, + isSuccess, + isError, + refetch, + }; +} diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx new file mode 100644 index 0000000000000..3f99a9f7638b8 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.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 { AreaSeries, Axis, Chart, Position, ScaleType, Settings } from '@elastic/charts'; +import { EuiFlexItem, EuiIcon, EuiLoadingChart, EuiPanel } from '@elastic/eui'; +import numeral from '@elastic/numeral'; +import { i18n } from '@kbn/i18n'; +import { CreateSLOInput } from '@kbn/slo-schema'; +import moment from 'moment'; +import React from 'react'; +import { useFormContext } from 'react-hook-form'; +import { useKibana } from '../../../../utils/kibana_react'; +import { useDebouncedGetPreviewData } from '../../hooks/use_preview'; +export function DataPreviewChart() { + const { watch, getFieldState } = useFormContext(); + const { charts, uiSettings } = useKibana().services; + + const { data: previewData, isLoading: isPreviewLoading } = useDebouncedGetPreviewData( + watch('indicator') + ); + + const theme = charts.theme.useChartsTheme(); + const baseTheme = charts.theme.useChartsBaseTheme(); + const dateFormat = uiSettings.get('dateFormat'); + const percentFormat = uiSettings.get('format:percent:defaultPattern'); + + if (getFieldState('indicator').invalid) { + return null; + } + + return ( + + {isPreviewLoading && } + {!isPreviewLoading && !!previewData && ( + + + + } + /> + + numeral(d).format(percentFormat)} + /> + + moment(d).format(dateFormat)} + position={Position.Bottom} + timeAxisLayerCount={2} + gridLine={{ visible: true }} + style={{ + tickLine: { size: 0.0001, padding: 4, visible: true }, + tickLabel: { + alignment: { + horizontal: Position.Left, + vertical: Position.Bottom, + }, + padding: 0, + offset: { x: 0, y: 0 }, + }, + }} + /> + ({ + date: new Date(datum.date).getTime(), + value: datum.sliValue >= 0 ? datum.sliValue : null, + }))} + /> + + + )} + + ); +} diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx index c0b8ee400efb9..4f3ecc301e08a 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx @@ -21,6 +21,7 @@ import { Field, useFetchIndexPatternFields, } from '../../../../hooks/slo/use_fetch_index_pattern_fields'; +import { DataPreviewChart } from '../common/data_preview_chart'; import { QueryBuilder } from '../common/query_builder'; import { IndexSelection } from '../custom_common/index_selection'; @@ -31,7 +32,6 @@ interface Option { export function CustomKqlIndicatorTypeForm() { const { control, watch, getFieldState } = useFormContext(); - const { isLoading, data: indexFields } = useFetchIndexPatternFields( watch('indicator.params.index') ); @@ -86,12 +86,7 @@ export function CustomKqlIndicatorTypeForm() { !!watch('indicator.params.index') && !!field.value && timestampFields.some((timestampField) => timestampField.name === field.value) - ? [ - { - value: field.value, - label: field.value, - }, - ] + ? [{ value: field.value, label: field.value }] : [] } singleSelection={{ asPlainText: true }} @@ -187,6 +182,8 @@ export function CustomKqlIndicatorTypeForm() { } /> + + ); } diff --git a/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_preview.ts b/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_preview.ts new file mode 100644 index 0000000000000..47d32b8d9ad3f --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_preview.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Indicator } from '@kbn/slo-schema'; +import { debounce } from 'lodash'; +import { useCallback, useEffect, useState } from 'react'; +import { useGetPreviewData } from '../../../hooks/slo/use_get_preview_data'; + +export function useDebouncedGetPreviewData(indicator: Indicator) { + const serializedIndicator = JSON.stringify(indicator); + const [indicatorState, setIndicatorState] = useState(serializedIndicator); + + // eslint-disable-next-line react-hooks/exhaustive-deps + const store = useCallback( + debounce((value: string) => setIndicatorState(value), 800), + [] + ); + useEffect(() => { + if (indicatorState !== serializedIndicator) { + store(serializedIndicator); + } + }, [indicatorState, serializedIndicator, store]); + + return useGetPreviewData(JSON.parse(indicatorState)); +} diff --git a/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_section_form_validation.ts b/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_section_form_validation.ts index 1f1eeca035425..4187590b8688b 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_section_form_validation.ts +++ b/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_section_form_validation.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { CreateSLOInput, MetricCustomIndicatorSchema } from '@kbn/slo-schema'; +import { CreateSLOInput, MetricCustomIndicator } from '@kbn/slo-schema'; import { FormState, UseFormGetFieldState, UseFormGetValues, UseFormWatch } from 'react-hook-form'; import { isObject } from 'lodash'; @@ -22,9 +22,7 @@ export function useSectionFormValidation({ getFieldState, getValues, formState, switch (watch('indicator.type')) { case 'sli.metric.custom': const isGoodParamsValid = () => { - const data = getValues( - 'indicator.params.good' - ) as MetricCustomIndicatorSchema['params']['good']; + const data = getValues('indicator.params.good') as MetricCustomIndicator['params']['good']; const isEquationValid = !getFieldState('indicator.params.good.equation').invalid; const areMetricsValid = isObject(data) && (data.metrics ?? []).every((metric) => Boolean(metric.field)); @@ -34,7 +32,7 @@ export function useSectionFormValidation({ getFieldState, getValues, formState, const isTotalParamsValid = () => { const data = getValues( 'indicator.params.total' - ) as MetricCustomIndicatorSchema['params']['total']; + ) as MetricCustomIndicator['params']['total']; const isEquationValid = !getFieldState('indicator.params.total.equation').invalid; const areMetricsValid = isObject(data) && (data.metrics ?? []).every((metric) => Boolean(metric.field)); diff --git a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx index 520f719447db9..4f55f8121579e 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx @@ -66,6 +66,12 @@ const mockKibana = () => { application: { navigateToUrl: mockNavigate, }, + charts: { + theme: { + useChartsTheme: () => {}, + useChartsBaseTheme: () => {}, + }, + }, data: { dataViews: { find: jest.fn().mockReturnValue([]), diff --git a/x-pack/plugins/observability/server/errors/errors.ts b/x-pack/plugins/observability/server/errors/errors.ts index 7ac7290385dde..dbbb873925636 100644 --- a/x-pack/plugins/observability/server/errors/errors.ts +++ b/x-pack/plugins/observability/server/errors/errors.ts @@ -20,6 +20,7 @@ export class SLOIdConflict extends ObservabilityError {} export class CompositeSLONotFound extends ObservabilityError {} export class CompositeSLOIdConflict extends ObservabilityError {} +export class InvalidQueryError extends ObservabilityError {} export class InternalQueryError extends ObservabilityError {} export class NotSupportedError extends ObservabilityError {} export class IllegalArgumentError extends ObservabilityError {} diff --git a/x-pack/plugins/observability/server/routes/slo/route.ts b/x-pack/plugins/observability/server/routes/slo/route.ts index 849630d368aa5..b65216f227407 100644 --- a/x-pack/plugins/observability/server/routes/slo/route.ts +++ b/x-pack/plugins/observability/server/routes/slo/route.ts @@ -11,6 +11,7 @@ import { deleteSLOParamsSchema, fetchHistoricalSummaryParamsSchema, findSLOParamsSchema, + getPreviewDataParamsSchema, getSLODiagnosisParamsSchema, getSLOParamsSchema, manageSLOParamsSchema, @@ -41,6 +42,7 @@ import type { IndicatorTypes } from '../../domain/models'; import type { ObservabilityRequestHandlerContext } from '../../types'; import { ManageSLO } from '../../services/slo/manage_slo'; import { getGlobalDiagnosis, getSloDiagnosis } from '../../services/slo/get_diagnosis'; +import { GetPreviewData } from '../../services/slo/get_preview_data'; const transformGenerators: Record = { 'sli.apm.transactionDuration': new ApmTransactionDurationTransformGenerator(), @@ -303,6 +305,25 @@ const getSloDiagnosisRoute = createObservabilityServerRoute({ }, }); +const getPreviewData = createObservabilityServerRoute({ + endpoint: 'POST /internal/observability/slos/_preview', + options: { + tags: ['access:slo_read'], + }, + params: getPreviewDataParamsSchema, + handler: async ({ context, params }) => { + const hasCorrectLicense = await isLicenseAtLeastPlatinum(context); + + if (!hasCorrectLicense) { + throw badRequest('Platinum license or higher is needed to make use of this feature.'); + } + + const esClient = (await context.core).elasticsearch.client.asCurrentUser; + const service = new GetPreviewData(esClient); + return await service.execute(params.body); + }, +}); + export const sloRouteRepository = { ...createSLORoute, ...deleteSLORoute, @@ -314,4 +335,5 @@ export const sloRouteRepository = { ...updateSLORoute, ...getDiagnosisRoute, ...getSloDiagnosisRoute, + ...getPreviewData, }; diff --git a/x-pack/plugins/observability/server/services/slo/get_preview_data.ts b/x-pack/plugins/observability/server/services/slo/get_preview_data.ts new file mode 100644 index 0000000000000..e71d7e6398577 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/get_preview_data.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; +import { GetPreviewDataParams, GetPreviewDataResponse } from '@kbn/slo-schema'; +import { computeSLI } from '../../domain/services'; +import { InvalidQueryError } from '../../errors'; + +export class GetPreviewData { + constructor(private esClient: ElasticsearchClient) {} + + public async execute(params: GetPreviewDataParams): Promise { + switch (params.indicator.type) { + case 'sli.kql.custom': + const filterQuery = getElastichsearchQueryOrThrow(params.indicator.params.filter); + const goodQuery = getElastichsearchQueryOrThrow(params.indicator.params.good); + const totalQuery = getElastichsearchQueryOrThrow(params.indicator.params.total); + const timestampField = params.indicator.params.timestampField; + + try { + const result = await this.esClient.search({ + index: params.indicator.params.index, + query: { + bool: { + filter: [{ range: { [timestampField]: { gte: 'now-60m' } } }, filterQuery], + }, + }, + aggs: { + perMinute: { + date_histogram: { + field: timestampField, + fixed_interval: '1m', + }, + aggs: { + good: { filter: goodQuery }, + total: { filter: totalQuery }, + }, + }, + }, + }); + + // @ts-ignore buckets is not improperly typed + return result.aggregations?.perMinute.buckets.map((bucket) => ({ + date: bucket.key_as_string, + sliValue: computeSLI(bucket.good.doc_count, bucket.total.doc_count), + })); + } catch (err) { + throw new InvalidQueryError(`Invalid ES query`); + } + + default: + return []; + } + } +} + +function getElastichsearchQueryOrThrow(kuery: string) { + try { + return toElasticsearchQuery(fromKueryExpression(kuery)); + } catch (err) { + throw new InvalidQueryError(`Invalid kuery: ${kuery}`); + } +} From f509376b058a1fa5434231d7901ae56e551789e6 Mon Sep 17 00:00:00 2001 From: Saarika Bhasi <55930906+saarikabhasi@users.noreply.github.com> Date: Thu, 15 Jun 2023 19:04:44 -0400 Subject: [PATCH 42/59] [Enterprise Search] [Search application] Modify connect page to include clients examples (#159356) ## Summary * Change connect page to include search application client example * Modified connect page to align with [design](https://www.figma.com/file/IupYoBQ7qMh0dMBGGz2kGq/Introducing-Engines?type=design&node-id=3088-329764&t=BzbMayH29etKG2Ms-0) * Renamed route url from `api` to `safe_search_api` and refractor translations * Change `engine` to `search application` as applicable * Add documentation links as required ### Screen shots https://github.com/elastic/kibana/assets/55930906/8cfbca97-1f73-4971-a16d-5eacb7457452 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- packages/kbn-doc-links/src/get_doc_links.ts | 1 + packages/kbn-doc-links/src/types.ts | 1 + .../engine_connect/engine_api_integration.tsx | 204 ++++++++++++++---- .../engine/engine_connect/engine_connect.tsx | 16 +- .../engine_connect/search_application_api.tsx | 200 +++++++++++++---- .../engine_search_preview.tsx | 2 +- .../components/engine/engine_view.tsx | 2 +- .../applications/applications/routes.ts | 2 +- .../shared/doc_links/doc_links.ts | 7 +- .../translations/translations/fr-FR.json | 11 - .../translations/translations/ja-JP.json | 11 - .../translations/translations/zh-CN.json | 11 - 12 files changed, 336 insertions(+), 132 deletions(-) diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index 77ab585491a46..ac114b894e7ee 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -163,6 +163,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { machineLearningStart: `${ENTERPRISE_SEARCH_DOCS}machine-learning-start.html`, mailService: `${ENTERPRISE_SEARCH_DOCS}mailer-configuration.html`, mlDocumentEnrichment: `${ENTERPRISE_SEARCH_DOCS}document-enrichment.html`, + searchApplicationsTemplates: `${ENTERPRISE_SEARCH_DOCS}search-applications-templates.html`, searchApplications: `${ENTERPRISE_SEARCH_DOCS}search-applications.html`, searchTemplates: `${ELASTICSEARCH_DOCS}search-template.html`, start: `${ENTERPRISE_SEARCH_DOCS}start.html`, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index f279dd29e6e12..5af7702699724 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -148,6 +148,7 @@ export interface DocLinks { readonly machineLearningStart: string; readonly mailService: string; readonly mlDocumentEnrichment: string; + readonly searchApplicationsTemplates: string; readonly searchApplications: string; readonly searchTemplates: string; readonly start: string; diff --git a/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/engine_api_integration.tsx b/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/engine_api_integration.tsx index e482357687979..090e96758fe05 100644 --- a/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/engine_api_integration.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/engine_api_integration.tsx @@ -13,6 +13,7 @@ import { compressToEncodedURIComponent } from 'lz-string'; import { EuiCodeBlock, EuiFlexGroup, + EuiFlexItem, EuiLink, EuiSpacer, EuiTab, @@ -20,9 +21,11 @@ import { EuiText, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; + import { FormattedMessage } from '@kbn/i18n-react'; import { useCloudDetails } from '../../../../shared/cloud_details/cloud_details'; +import { docLinks } from '../../../../shared/doc_links'; import { KibanaLogic } from '../../../../shared/kibana'; import { EngineViewLogic } from '../engine_view_logic'; @@ -30,35 +33,38 @@ import { EngineApiLogic } from './engine_api_logic'; import { elasticsearchUrl } from './search_application_api'; -const SearchUISnippet = (esUrl: string, engineName: string, apiKey: string) => ` -import EnginesAPIConnector from "@elastic/search-ui-engines-connector"; +const clientSnippet = (esUrl: string, searchApplicationName: string, apiKey: string) => ` +import Client from '@elastic/search-application-client' +// or through CDN +// const Client = window['SearchApplicationClient'] -const connector = new EnginesAPIConnector({ - host: "${esUrl}", - engineName: "${engineName}", - apiKey: "${apiKey || ''}" -});`; +const request = Client( + ${searchApplicationName}, + ${esUrl}, + ${apiKey || ''}, +) -const cURLSnippet = (esUrl: string, engineName: string, apiKey: string, params: unknown) => ` -curl --location --request POST '${esUrl}/_application/search_application/${engineName}/_search' \\ ---header 'Authorization: apiKey ${apiKey || ''}' \\ ---header 'Content-Type: application/json' \\ ---data-raw '${JSON.stringify({ params }, null, 2)}'`; +const results = await request() + .query('pizza') + .addParameter('myCustomParameter', 'example value') + .search() +`; -const apiRequestSnippet = ( +const cURLSnippet = ( esUrl: string, searchApplicationName: string, apiKey: string, params: unknown -) => { +) => ` +curl --location --request POST '${esUrl}/_application/search_application/${searchApplicationName}/_search' \\ +--header 'Authorization: apiKey ${apiKey || ''}' \\ +--header 'Content-Type: application/json' \\ +--data-raw '${JSON.stringify({ params }, null, 2)}'`; + +const apiRequestSnippet = (searchApplicationName: string, params: unknown) => { const body = JSON.stringify({ params }, null, 2); return ` -POST /_application/search_application/${searchApplicationName}/_search HTTP/1.1 -Accept: application/json -Authorization: apiKey ${apiKey || ''} -Content-Length: ${body.length} -Content-Type: application/json -Host: ${new URL(esUrl).host} +POST /_application/search_application/${searchApplicationName}/_search ${body} `; }; @@ -67,7 +73,8 @@ const consoleRequest = (searchApplicationName: string, params: unknown) => `POST /_application/search_application/${searchApplicationName}/_search ${JSON.stringify({ params }, null, 2)}`; -type TabId = 'curl' | 'searchui' | 'apirequest'; +type TabId = 'apirequest' | 'client' | 'curl'; + interface Tab { code: string; copy: boolean; @@ -81,36 +88,44 @@ export const EngineApiIntegrationStage: React.FC = () => { share: { url }, } = useValues(KibanaLogic); const [selectedTab, setSelectedTab] = React.useState('apirequest'); - const { engineName, engineData } = useValues(EngineViewLogic); + const { engineName } = useValues(EngineViewLogic); const { apiKey } = useValues(EngineApiLogic); const cloudContext = useCloudDetails(); - const params = engineData?.template.script.params ?? {}; - + const params = { query: 'pizza', myCustomParameter: 'example value' }; const Tabs: Record = { apirequest: { - code: apiRequestSnippet(elasticsearchUrl(cloudContext), engineName, apiKey, params), + code: apiRequestSnippet(engineName, params), copy: false, language: 'http', - title: i18n.translate('xpack.enterpriseSearch.content.engine.api.step3.apiRequestTitle', { - defaultMessage: 'API Request', - }), + title: i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.tab.apirequestTitle', + { + defaultMessage: 'API Request', + } + ), + }, + client: { + code: clientSnippet(elasticsearchUrl(cloudContext), engineName, apiKey), + copy: true, + language: 'javascript', + title: i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.tab.clientTitle', + { + defaultMessage: 'Javascript Client', + } + ), }, curl: { code: cURLSnippet(elasticsearchUrl(cloudContext), engineName, apiKey, params), copy: true, language: 'bash', - title: i18n.translate('xpack.enterpriseSearch.content.engine.api.step3.curlTitle', { - defaultMessage: 'cURL', - }), - }, - searchui: { - code: SearchUISnippet(elasticsearchUrl(cloudContext), engineName, apiKey), - copy: true, - language: 'javascript', - title: i18n.translate('xpack.enterpriseSearch.content.engine.api.step3.searchUITitle', { - defaultMessage: 'Search UI', - }), + title: i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.tab.curlTitle', + { + defaultMessage: 'cURL', + } + ), }, }; @@ -131,10 +146,22 @@ export const EngineApiIntegrationStage: React.FC = () => { <>

- {i18n.translate('xpack.enterpriseSearch.content.engine.api.step3.intro', { - defaultMessage: - 'Use the following code snippets to connect to your search application.', - })} + + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step4.clientsDocumenation', + { + defaultMessage: 'programming language clients', + } + )} + + ), + }} + />

@@ -144,13 +171,100 @@ export const EngineApiIntegrationStage: React.FC = () => { key={tabId} isSelected={selectedTab === tabId} onClick={() => setSelectedTab(tabId as TabId)} - data-telemetry-id={`entSearchApplications-api-integration-tab-${tabId}`} + data-telemetry-id={`entSearchApplications-safeSearchApi-integration-tab-${tabId}`} > {tab.title} ))} + {selectedTab === 'client' && ( + + + +
+ {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step4.installationTitle', + { + defaultMessage: 'Installation', + } + )} +
+
+
+ + +

+ {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step4.npmInstallDescription', + { + defaultMessage: + 'Search application client is accessible from NPM package registry', + } + )} +

+
+
+ + + {`npm install @elastic/search-application-client`} + + + + + +

+ {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step4.cdnInstallDescription', + { + defaultMessage: 'or via CDN', + } + )} +

+
+
+ + + {``} + + + + + +
+ {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step4.clientUsageTitle', + { + defaultMessage: 'Usage', + } + )} +
+
+
+ + + + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step3.clientDocumenation', + { + defaultMessage: 'how to guide', + } + )} + + ), + }} + /> + + + +
+ )} {Tabs[selectedTab].code} @@ -160,7 +274,7 @@ export const EngineApiIntegrationStage: React.FC = () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/engine_connect.tsx b/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/engine_connect.tsx index 049ad567e940c..05a1f23031c20 100644 --- a/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/engine_connect.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/engine_connect.tsx @@ -35,7 +35,7 @@ const pageTitle = i18n.translate( defaultMessage: 'Connect', } ); -const API_TAB_TITLE = i18n.translate( +const SAFE_SEARCH_API_TAB_TITLE = i18n.translate( 'xpack.enterpriseSearch.content.searchApplications.connect.safeSearchAPITabTitle', { defaultMessage: 'Safe Search API', @@ -50,8 +50,8 @@ const DOCUMENTATION_TAB_TITLE = i18n.translate( const ConnectTabs: string[] = Object.values(SearchApplicationConnectTabs); const getTabBreadCrumb = (tabId: string) => { switch (tabId) { - case SearchApplicationConnectTabs.API: - return API_TAB_TITLE; + case SearchApplicationConnectTabs.SAFESEARCHAPI: + return SAFE_SEARCH_API_TAB_TITLE; case SearchApplicationConnectTabs.DOCUMENTATION: return DOCUMENTATION_TAB_TITLE; default: @@ -61,7 +61,7 @@ const getTabBreadCrumb = (tabId: string) => { export const EngineConnect: React.FC = () => { const { engineName, isLoadingEngine, hasSchemaConflicts } = useValues(EngineViewLogic); - const { connectTabId = SearchApplicationConnectTabs.API } = useParams<{ + const { connectTabId = SearchApplicationConnectTabs.SAFESEARCHAPI } = useParams<{ connectTabId?: string; }>(); @@ -106,9 +106,9 @@ export const EngineConnect: React.FC = () => { rightSideItems: [], tabs: [ { - isSelected: connectTabId === SearchApplicationConnectTabs.API, - label: API_TAB_TITLE, - onClick: onTabClick(SearchApplicationConnectTabs.API), + isSelected: connectTabId === SearchApplicationConnectTabs.SAFESEARCHAPI, + label: SAFE_SEARCH_API_TAB_TITLE, + onClick: onTabClick(SearchApplicationConnectTabs.SAFESEARCHAPI), }, { isSelected: connectTabId === SearchApplicationConnectTabs.DOCUMENTATION, @@ -120,7 +120,7 @@ export const EngineConnect: React.FC = () => { engineName={engineName} hasSchemaConflicts={hasSchemaConflicts} > - {connectTabId === SearchApplicationConnectTabs.API && } + {connectTabId === SearchApplicationConnectTabs.SAFESEARCHAPI && } {connectTabId === SearchApplicationConnectTabs.DOCUMENTATION && ( )} diff --git a/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/search_application_api.tsx b/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/search_application_api.tsx index d8685eb8554c6..216fe729d2939 100644 --- a/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/search_application_api.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_connect/search_application_api.tsx @@ -40,7 +40,7 @@ export const elasticsearchUrl = (cloudContext: CloudDetails): string => { }; export const SearchApplicationAPI = () => { - const { engineName } = useValues(EngineViewLogic); + const { engineName: searchApplicationName } = useValues(EngineViewLogic); const { isGenerateModalOpen } = useValues(EngineApiLogic); const { openGenerateModal, closeGenerateModal } = useActions(EngineApiLogic); const cloudContext = useCloudDetails(); @@ -51,26 +51,78 @@ export const SearchApplicationAPI = () => { <>

- {i18n.translate( - 'xpack.enterpriseSearch.content.searchApplication.api.step1.apiKeyWarning', - { - defaultMessage: - "Elastic does not store API keys. Once generated, you'll only be able to view the key one time. Make sure you save it somewhere secure. If you lose access to it you'll need to generate a new API key from this screen.", - } - )}{' '} - - {i18n.translate( - 'xpack.enterpriseSearch.content.searchApplication.api.step1.learnMoreLink', - { - defaultMessage: 'Learn more about API keys.', - } - )} - + + + + ), + }} + /> +

+
+ + + + + + {`GET _application/search_application/${searchApplicationName}/`} + + + + + +

+ + + + ), + }} + /> +

+
+ + ), + title: i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step1.setUpSearchtemplate.title', + { + defaultMessage: 'Set up your search template', + } + ), + }, + { + children: ( + <> + +

+ + + + ), + }} + />

@@ -80,10 +132,10 @@ export const SearchApplicationAPI = () => { iconSide="left" iconType="plusInCircleFilled" onClick={openGenerateModal} - data-telemetry-id="entSearchApplications-searchApplication-api-step1-createApiKeyButton" + data-telemetry-id="entSearchApplications-safeSearchApi-step2-createApiKeyButton" > {i18n.translate( - 'xpack.enterpriseSearch.content.searchApplication.api.step1.createAPIKeyButton', + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step2.createAPIKeyButton', { defaultMessage: 'Create API Key', } @@ -94,7 +146,7 @@ export const SearchApplicationAPI = () => { KibanaLogic.values.navigateToUrl('/app/management/security/api_keys', { shouldNotCreateHref: true, @@ -102,7 +154,7 @@ export const SearchApplicationAPI = () => { } > {i18n.translate( - 'xpack.enterpriseSearch.content.searchApplication.api.step1.viewKeysButton', + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step2.viewKeysButton', { defaultMessage: 'View Keys', } @@ -112,9 +164,12 @@ export const SearchApplicationAPI = () => {
), - title: i18n.translate('xpack.enterpriseSearch.content.searchApplication.api.step1.title', { - defaultMessage: 'Generate and save API key', - }), + title: i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step2.title', + { + defaultMessage: 'Generate and save API key', + } + ), }, { children: ( @@ -122,9 +177,9 @@ export const SearchApplicationAPI = () => {

{i18n.translate( - 'xpack.enterpriseSearch.content.searchApplication.api.step2.copyEndpointDescription', + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step3.copyEndpointDescription', { - defaultMessage: "Use this URL to access your search application's API endpoints.", + defaultMessage: "Here's the URL for your endpoint:", } )}

@@ -133,41 +188,104 @@ export const SearchApplicationAPI = () => { - {elasticsearchUrl(cloudContext)} + {`${elasticsearchUrl( + cloudContext + )}/_application/search_application/${searchApplicationName}/_search`} ), - title: i18n.translate('xpack.enterpriseSearch.content.searchApplication.api.step2.title', { - defaultMessage: "Copy your search application's endpoint", - }), + title: i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step3.title', + { + defaultMessage: 'Copy your Safe Search endpoint', + } + ), }, { children: , - title: i18n.translate('xpack.enterpriseSearch.content.searchApplication.api.step3.title', { - defaultMessage: 'Learn how to call your endpoints', - }), + title: i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.step4.title', + { + defaultMessage: 'Learn how to call your endpoint', + } + ), }, ]; return ( <> {isGenerateModalOpen ? ( - + ) : null} } > + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.safeSearchCallout.body.safeSearchDocLink', + { + defaultMessage: 'Safe Search API', + } + )} + + ), + searchTemplateDocumenation: ( + + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.safeSearchCallout.body.searchTemplateDocLink', + { + defaultMessage: 'search template', + } + )} + + ), + }} + /> + + + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.safeSearchApi.safeSearchCallout.body.safeSearchDocumentationLink', + { + defaultMessage: 'Learn more about the Safe Search API', + } + )} + + ), + }} /> diff --git a/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_search_preview/engine_search_preview.tsx b/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_search_preview/engine_search_preview.tsx index caa10bb7c66e0..428283df3cd86 100644 --- a/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_search_preview/engine_search_preview.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_search_preview/engine_search_preview.tsx @@ -235,7 +235,7 @@ const ConfigurationPopover: React.FC = ({ onClick={() => navigateToUrl( generateEncodedPath(SEARCH_APPLICATION_CONNECT_PATH, { - connectTabId: SearchApplicationConnectTabs.API, + connectTabId: SearchApplicationConnectTabs.SAFESEARCHAPI, engineName, }) ) diff --git a/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_view.tsx b/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_view.tsx index 1b87497acf36e..419b8a9d21e82 100644 --- a/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_view.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/applications/components/engine/engine_view.tsx @@ -97,7 +97,7 @@ export const EngineView: React.FC = () => { Date: Fri, 16 Jun 2023 00:09:53 +0100 Subject: [PATCH 43/59] skip flaky suite (#159403) --- .../functional/apps/index_management/index_template_wizard.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/index_management/index_template_wizard.ts b/x-pack/test/functional/apps/index_management/index_template_wizard.ts index f04c4e90a205b..df7f724db03bc 100644 --- a/x-pack/test/functional/apps/index_management/index_template_wizard.ts +++ b/x-pack/test/functional/apps/index_management/index_template_wizard.ts @@ -102,7 +102,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); - describe('Mappings step', async () => { + // FLAKY: https://github.com/elastic/kibana/issues/159403 + describe.skip('Mappings step', async () => { beforeEach(async () => { await pageObjects.common.navigateToApp('indexManagement'); // Navigate to the index templates tab From f97868856d4642200317d8fe79ceca203653a19e Mon Sep 17 00:00:00 2001 From: Georgii Gorbachev Date: Fri, 16 Jun 2023 03:29:27 +0200 Subject: [PATCH 44/59] [Security Solution] Introduce a folder for test plans (#159687) **Resolves: https://github.com/elastic/security-team/issues/6867** (internal) ## Summary **TL;DR**: This PR introduces a folder for storing and working on test plans for Security Solution inside the Kibana repo. Instead of using Google Docs for collaborating on test plans, @elastic/security-detection-rule-management folks have decided to leverage standard GitHub workflow. This should give us the following benefits: - Right now it's hard to find the test plans you want to check. Most of them are stored in Google Drive and are not shared across the whole Elastic or Security orgs. Keeping them within the `security_solution` plugin in the open repo would make it much easier and straightforward to navigate the test plans. - Additionally. we will start linking tickets and PRs to our test plans which will provide more context to them. - With Google Docs it's often not clear who should review a test plan, who and when approved it, and whether it's done or still in progress. The GitHub workflow solves these and other issues, and eliminates the need to have a different workflow for test plans. - GitHub's UX is superior to Google Docs UX when it comes to commenting. See the ticket and the `README.md` in the PR's diff for more info. ### Checklist - [x] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials --- .github/CODEOWNERS | 3 ++ .../cypress/test_plans/README.md | 33 +++++++++++++++++++ .../detection_response/prebuilt_rules/todo | 1 + .../detection_response/rule_management/todo | 1 + 4 files changed, 38 insertions(+) create mode 100644 x-pack/plugins/security_solution/cypress/test_plans/README.md create mode 100644 x-pack/plugins/security_solution/cypress/test_plans/detection_response/prebuilt_rules/todo create mode 100644 x-pack/plugins/security_solution/cypress/test_plans/detection_response/rule_management/todo diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 55a1cd7a6f2eb..4e23e6d1f00cc 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1098,6 +1098,9 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib /x-pack/plugins/security_solution/common/detection_engine/rule_monitoring @elastic/security-detection-rule-management /x-pack/plugins/security_solution/common/detection_engine/rule_schema @elastic/security-detection-rule-management @elastic/security-detection-engine +/x-pack/plugins/security_solution/cypress/test_plans/detection_response/prebuilt_rules @elastic/security-detection-rule-management +/x-pack/plugins/security_solution/cypress/test_plans/detection_response/rule_management @elastic/security-detection-rule-management + /x-pack/plugins/security_solution/public/common/components/health_truncate_text @elastic/security-detection-rule-management /x-pack/plugins/security_solution/public/common/components/links_to_docs @elastic/security-detection-rule-management /x-pack/plugins/security_solution/public/common/components/ml_popover @elastic/security-detection-rule-management diff --git a/x-pack/plugins/security_solution/cypress/test_plans/README.md b/x-pack/plugins/security_solution/cypress/test_plans/README.md new file mode 100644 index 0000000000000..6381b76017065 --- /dev/null +++ b/x-pack/plugins/security_solution/cypress/test_plans/README.md @@ -0,0 +1,33 @@ +# Test Plans + +This folder contains test plans for the features of Security Solution. + +## Folder Structure + +The folder is first split into major Security Solution domains: + +- `detection_response` +- `threat_hunting` +- etc + +And then each major domain is split into subdomains, for example: + +- `detection_response` + - `prebuilt_rules` + - `rule_exceptions` + - `rule_management` + - `rule_monitoring` + - etc +- `threat_hunting` + - `explore` + - `timelines` + - etc + +Within each subdomain, you can organize test plans as you like, for example: + +- you might want to have a folder per feature, if your features are large and you have multiple test plans per feature +- or you might want to have a plain list of test plans if features are relatively small + +## Ownership + +Each subdomain folder should be owned by a single GitHub team in the `.github/CODEOWNERS` file. diff --git a/x-pack/plugins/security_solution/cypress/test_plans/detection_response/prebuilt_rules/todo b/x-pack/plugins/security_solution/cypress/test_plans/detection_response/prebuilt_rules/todo new file mode 100644 index 0000000000000..99ffc1061d97c --- /dev/null +++ b/x-pack/plugins/security_solution/cypress/test_plans/detection_response/prebuilt_rules/todo @@ -0,0 +1 @@ +Add test plans. diff --git a/x-pack/plugins/security_solution/cypress/test_plans/detection_response/rule_management/todo b/x-pack/plugins/security_solution/cypress/test_plans/detection_response/rule_management/todo new file mode 100644 index 0000000000000..99ffc1061d97c --- /dev/null +++ b/x-pack/plugins/security_solution/cypress/test_plans/detection_response/rule_management/todo @@ -0,0 +1 @@ +Add test plans. From 4a8bbd970a632a82b2bdd54ff9a944c023f3c33d Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Thu, 15 Jun 2023 21:22:32 -0500 Subject: [PATCH 45/59] [data views] fields_for_wildcard - disable schema response validation (#159758) ## Summary Response validation is failing when there are field conflicts. Disable response validation until a complete schema can be created. Problem was introduced in https://github.com/elastic/kibana/pull/158608 --- .../data_views/server/rest_api_routes/internal/fields_for.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/data_views/server/rest_api_routes/internal/fields_for.ts b/src/plugins/data_views/server/rest_api_routes/internal/fields_for.ts index f9689be30991b..e41c72e94e8b2 100644 --- a/src/plugins/data_views/server/rest_api_routes/internal/fields_for.ts +++ b/src/plugins/data_views/server/rest_api_routes/internal/fields_for.ts @@ -69,6 +69,7 @@ const fieldSubTypeSchema = schema.object({ nested: schema.maybe(schema.object({ path: schema.string() })), }); +// @ts-expect-error const FieldDescriptorSchema = schema.object({ aggregatable: schema.boolean(), name: schema.string(), @@ -97,6 +98,7 @@ const validate: FullValidationConfig = { // not available to get request body: schema.maybe(schema.object({ index_filter: schema.any() })), }, + /* response: { 200: { body: schema.object({ @@ -105,6 +107,7 @@ const validate: FullValidationConfig = { }), }, }, + */ }; const handler: RequestHandler<{}, IQuery, IBody> = async (context, request, response) => { From 4e1a4b2d0747a917b486ed7359f46684eb463e80 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Fri, 16 Jun 2023 01:12:37 -0400 Subject: [PATCH 46/59] [api-docs] 2023-06-16 Daily api_docs build (#159858) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/370 --- api_docs/actions.devdocs.json | 1248 +++++++++++++++++ api_docs/actions.mdx | 4 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.devdocs.json | 16 + api_docs/aiops.mdx | 4 +- api_docs/alerting.mdx | 2 +- api_docs/apm.devdocs.json | 38 +- api_docs/apm.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_chat.mdx | 2 +- api_docs/cloud_chat_provider.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.devdocs.json | 8 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.devdocs.json | 64 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.devdocs.json | 68 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 22 +- api_docs/deprecations_by_plugin.mdx | 13 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.devdocs.json | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/ess_security.mdx | 2 +- api_docs/event_annotation.devdocs.json | 110 ++ api_docs/event_annotation.mdx | 4 +- 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/file_upload.mdx | 2 +- api_docs/files.devdocs.json | 68 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.devdocs.json | 322 ++--- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.devdocs.json | 4 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mocks.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...ticsearch_client_server_mocks.devdocs.json | 304 ++-- ...core_elasticsearch_client_server_mocks.mdx | 2 +- ...kbn_core_elasticsearch_server.devdocs.json | 256 ++-- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...elasticsearch_server_internal.devdocs.json | 130 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.devdocs.json | 12 + api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- .../kbn_core_lifecycle_browser.devdocs.json | 36 - 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 +- ...bn_core_notifications_browser.devdocs.json | 4 +- 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 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- ...ore_saved_objects_api_browser.devdocs.json | 84 -- .../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 +- ...cts_migration_server_internal.devdocs.json | 64 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- ...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 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- ...kbn_core_user_settings_server_internal.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- .../kbn_deeplinks_management.devdocs.json | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.devdocs.json | 4 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- .../kbn_default_nav_management.devdocs.json | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_doc_links.devdocs.json | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.devdocs.json | 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_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_generate_csv_types.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- .../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_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.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_rison.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- ...kbn_securitysolution_es_utils.devdocs.json | 128 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- ...ritysolution_io_ts_list_types.devdocs.json | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- ..._securitysolution_io_ts_types.devdocs.json | 18 + api_docs/kbn_securitysolution_io_ts_types.mdx | 4 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_project_switcher.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 +- ...ared_ux_avatar_user_profile_components.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- ...hared_ux_button_exit_full_screen_mocks.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- .../kbn_shared_ux_card_no_data.devdocs.json | 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_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 +- .../kbn_shared_ux_file_types.devdocs.json | 8 +- 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 +- .../kbn_shared_ux_markdown_mocks.devdocs.json | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.devdocs.json | 279 +++- api_docs/kbn_slo_schema.mdx | 4 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.devdocs.json | 11 + api_docs/kbn_ui_shared_deps_src.mdx | 4 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_url_state.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_yarn_lock_validator.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/lists.devdocs.json | 64 +- api_docs/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.devdocs.json | 482 +++++-- api_docs/observability.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 20 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/reporting_export_types.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 +- .../saved_objects_management.devdocs.json | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.devdocs.json | 22 +- api_docs/security_solution.mdx | 4 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/serverless_security.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- .../telemetry_collection_manager.devdocs.json | 64 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.devdocs.json | 22 +- api_docs/triggers_actions_ui.mdx | 4 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_field_list.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.devdocs.json | 64 +- 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/visualization_ui_components.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 578 files changed, 3507 insertions(+), 1660 deletions(-) diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index b550c5a0a5298..c49836f05c3b2 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -551,6 +551,1254 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "actions", + "id": "def-server.SubActionConnector.esClient", + "type": "Object", + "tags": [], + "label": "esClient", + "description": [], + "signature": [ + "{ create: { (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; update: { (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateResponse", + ">; (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateResponse", + ", unknown>>; (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateResponse", + ">; }; get: { (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetResponse", + ">; (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetResponse", + ", unknown>>; (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetResponse", + ">; }; delete: { (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; search: { >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchResponse", + ">; >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchResponse", + ", unknown>>; >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchResponse", + ">; }; helpers: ", + "default", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "default", + "; child: (opts: ", + "ClientOptions", + ") => ", + "default", + "; asyncSearch: ", + "default", + "; autoscaling: ", + "default", + "; bulk: { (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "BulkResponse", + ">; (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "BulkResponse", + ", unknown>>; (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "BulkResponse", + ">; }; cat: ", + "default", + "; ccr: ", + "default", + "; clearScroll: { (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ClearScrollResponse", + ">; (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ClearScrollResponse", + ", unknown>>; (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ClearScrollResponse", + ">; }; closePointInTime: { (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ClosePointInTimeResponse", + ">; (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ClosePointInTimeResponse", + ", unknown>>; (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ClosePointInTimeResponse", + ">; }; cluster: ", + "default", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", + "default", + "; deleteByQuery: { (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "DeleteByQueryResponse", + ">; (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "DeleteByQueryResponse", + ", unknown>>; (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "DeleteByQueryResponse", + ">; }; deleteByQueryRethrottle: { (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TasksTaskListResponseBase", + ">; (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TasksTaskListResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TasksTaskListResponseBase", + ">; }; deleteScript: { (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "AcknowledgedResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; }; enrich: ", + "default", + "; eql: ", + "default", + "; exists: { (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; existsSource: { (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; explain: { (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ExplainResponse", + ">; (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ExplainResponse", + ", unknown>>; (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ExplainResponse", + ">; }; features: ", + "default", + "; fieldCaps: { (this: That, params?: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "FieldCapsResponse", + ">; (this: That, params?: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "FieldCapsResponse", + ", unknown>>; (this: That, params?: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "FieldCapsResponse", + ">; }; fleet: ", + "default", + "; getScript: { (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptResponse", + ">; (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptResponse", + ", unknown>>; (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptResponse", + ">; }; getScriptContext: { (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptContextResponse", + ">; (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptContextResponse", + ", unknown>>; (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptContextResponse", + ">; }; getScriptLanguages: { (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptLanguagesResponse", + ">; (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptLanguagesResponse", + ", unknown>>; (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptLanguagesResponse", + ">; }; getSource: { (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; graph: ", + "default", + "; healthReport: { (this: That, params?: ", + "HealthReportRequest", + " | ", + "HealthReportRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "HealthReportResponse", + ">; (this: That, params?: ", + "HealthReportRequest", + " | ", + "HealthReportRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "HealthReportResponse", + ", unknown>>; (this: That, params?: ", + "HealthReportRequest", + " | ", + "HealthReportRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "HealthReportResponse", + ">; }; ilm: ", + "default", + "; index: { (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; indices: ", + "default", + "; info: { (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "InfoResponse", + ">; (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "InfoResponse", + ", unknown>>; (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "InfoResponse", + ">; }; ingest: ", + "default", + "; knnSearch: { (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "KnnSearchResponse", + ">; (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "KnnSearchResponse", + ", unknown>>; (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "KnnSearchResponse", + ">; }; license: ", + "default", + "; logstash: ", + "default", + "; mget: { (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MgetResponse", + ">; (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MgetResponse", + ", unknown>>; (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MgetResponse", + ">; }; migration: ", + "default", + "; ml: ", + "default", + "; monitoring: ", + "default", + "; msearch: { >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MsearchResponse", + ">; >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MsearchResponse", + ", unknown>>; >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MsearchResponse", + ">; }; msearchTemplate: { >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MsearchTemplateResponse", + ">; >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MsearchTemplateResponse", + ", unknown>>; >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MsearchTemplateResponse", + ">; }; mtermvectors: { (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MtermvectorsResponse", + ">; (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MtermvectorsResponse", + ", unknown>>; (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MtermvectorsResponse", + ">; }; nodes: ", + "default", + "; openPointInTime: { (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "OpenPointInTimeResponse", + ">; (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "OpenPointInTimeResponse", + ", unknown>>; (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "OpenPointInTimeResponse", + ">; }; ping: { (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; putScript: { (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "AcknowledgedResponseBase", + ", unknown>>; (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; }; rankEval: { (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "RankEvalResponse", + ">; (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "RankEvalResponse", + ", unknown>>; (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "RankEvalResponse", + ">; }; reindex: { (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ReindexResponse", + ">; (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ReindexResponse", + ", unknown>>; (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ReindexResponse", + ">; }; reindexRethrottle: { (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ReindexRethrottleResponse", + ">; (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ReindexRethrottleResponse", + ", unknown>>; (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ReindexRethrottleResponse", + ">; }; renderSearchTemplate: { (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "RenderSearchTemplateResponse", + ">; (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "RenderSearchTemplateResponse", + ", unknown>>; (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "RenderSearchTemplateResponse", + ">; }; rollup: ", + "default", + "; scriptsPainlessExecute: { (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ScriptsPainlessExecuteResponse", + ">; (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ScriptsPainlessExecuteResponse", + ", unknown>>; (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ScriptsPainlessExecuteResponse", + ">; }; scroll: { >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ScrollResponse", + ">; >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ScrollResponse", + ", unknown>>; >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ScrollResponse", + ">; }; searchApplication: ", + "default", + "; searchMvt: { (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; searchShards: { (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchShardsResponse", + ">; (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchShardsResponse", + ", unknown>>; (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchShardsResponse", + ">; }; searchTemplate: { (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchTemplateResponse", + ">; (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchTemplateResponse", + ", unknown>>; (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchTemplateResponse", + ">; }; searchableSnapshots: ", + "default", + "; security: ", + "default", + "; shutdown: ", + "default", + "; slm: ", + "default", + "; snapshot: ", + "default", + "; sql: ", + "default", + "; ssl: ", + "default", + "; tasks: ", + "default", + "; termsEnum: { (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TermsEnumResponse", + ">; (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TermsEnumResponse", + ", unknown>>; (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TermsEnumResponse", + ">; }; termvectors: { (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TermvectorsResponse", + ">; (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TermvectorsResponse", + ", unknown>>; (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TermvectorsResponse", + ">; }; textStructure: ", + "default", + "; transform: ", + "default", + "; updateByQuery: { (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateByQueryResponse", + ">; (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateByQueryResponse", + ", unknown>>; (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateByQueryResponse", + ">; }; updateByQueryRethrottle: { (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateByQueryRethrottleResponse", + ">; (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateByQueryRethrottleResponse", + ", unknown>>; (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateByQueryRethrottleResponse", + ">; }; watcher: ", + "default", + "; xpack: ", + "default", + "; }" + ], + "path": "x-pack/plugins/actions/server/sub_action_framework/sub_action_connector.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "actions", + "id": "def-server.SubActionConnector.savedObjectsClient", + "type": "Object", + "tags": [], + "label": "savedObjectsClient", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "common", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-common.SavedObjectsClientContract", + "text": "SavedObjectsClientContract" + } + ], + "path": "x-pack/plugins/actions/server/sub_action_framework/sub_action_connector.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "actions", "id": "def-server.SubActionConnector.connector", diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 334b97aa4c2d8..3d02dae1fb9ca 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 264 | 10 | 259 | 26 | +| 266 | 10 | 261 | 26 | ## Client diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 40f569bcf0b8c..0706c589bd3bf 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.devdocs.json b/api_docs/aiops.devdocs.json index 54386d8071c45..7261441aacaab 100644 --- a/api_docs/aiops.devdocs.json +++ b/api_docs/aiops.devdocs.json @@ -761,6 +761,22 @@ "path": "x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_app_state.tsx", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "aiops", + "id": "def-public.ExplainLogRateSpikesAppStateProps.stickyHistogram", + "type": "CompoundType", + "tags": [], + "label": "stickyHistogram", + "description": [ + "Option to make main histogram sticky" + ], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_app_state.tsx", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 9de316c8bf8a5..db0c186a86bf1 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 44 | 0 | 27 | 1 | +| 45 | 0 | 27 | 1 | ## Client diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index bf4d8ac63b133..c1a7e5775763f 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.devdocs.json b/api_docs/apm.devdocs.json index 0a15c13e3738c..cd4876772b9fe 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -235,7 +235,7 @@ "APMPluginSetupDependencies", ") => { config$: ", "Observable", - "; autoCreateApmDataView: boolean; serviceMapEnabled: boolean; serviceMapFingerprintBucketSize: number; serviceMapFingerprintGlobalBucketSize: number; serviceMapTraceIdBucketSize: number; serviceMapTraceIdGlobalBucketSize: number; serviceMapMaxTracesPerRequest: number; ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; searchAggregatedTransactions: ", + "; enabled: boolean; autoCreateApmDataView: boolean; serviceMapEnabled: boolean; serviceMapFingerprintBucketSize: number; serviceMapFingerprintGlobalBucketSize: number; serviceMapTraceIdBucketSize: number; serviceMapTraceIdGlobalBucketSize: number; serviceMapMaxTracesPerRequest: number; ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; forceSyntheticSource: boolean; latestAgentVersionsUrl: string; serverlessOnboarding: boolean; managedServiceUrl: string; }>>; getApmIndices: () => Promise>; createApmEventClient: ({ request, context, debug, }: { debug?: boolean | undefined; request: ", { @@ -481,7 +481,7 @@ "label": "config", "description": [], "signature": [ - "{ readonly enabled: boolean; readonly indices: Readonly<{} & { error: string; metric: string; span: string; transaction: string; onboarding: string; }>; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", + "{ readonly indices: Readonly<{} & { error: string; metric: string; span: string; transaction: string; onboarding: string; }>; readonly enabled: boolean; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", "; readonly telemetryCollectionEnabled: boolean; readonly metricsInterval: number; readonly agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; readonly forceSyntheticSource: boolean; readonly latestAgentVersionsUrl: string; readonly serverlessOnboarding: boolean; readonly managedServiceUrl: string; }" ], @@ -899,7 +899,7 @@ "label": "APIEndpoint", "description": [], "signature": [ - "\"POST /internal/apm/data_view/static\" | \"GET /internal/apm/data_view/title\" | \"GET /internal/apm/environments\" | \"GET /internal/apm/services/{serviceName}/errors/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/groups/main_statistics_by_transaction_name\" | \"POST /internal/apm/services/{serviceName}/errors/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}/samples\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}/error/{errorId}\" | \"GET /internal/apm/services/{serviceName}/errors/distribution\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}/top_erroneous_transactions\" | \"POST /internal/apm/latency/overall_distribution/transactions\" | \"GET /internal/apm/services/{serviceName}/metrics/charts\" | \"GET /internal/apm/services/{serviceName}/metrics/nodes\" | \"GET /internal/apm/services/{serviceName}/metrics/serverless/charts\" | \"GET /internal/apm/services/{serviceName}/metrics/serverless/summary\" | \"GET /internal/apm/services/{serviceName}/metrics/serverless/functions_overview\" | \"GET /internal/apm/services/{serviceName}/metrics/serverless/active_instances\" | \"GET /internal/apm/observability_overview\" | \"GET /internal/apm/observability_overview/has_data\" | \"GET /internal/apm/service-map\" | \"GET /internal/apm/service-map/service/{serviceName}\" | \"GET /internal/apm/service-map/dependency\" | \"GET /internal/apm/services\" | \"POST /internal/apm/services/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/metadata/details\" | \"GET /internal/apm/services/{serviceName}/metadata/icons\" | \"GET /internal/apm/services/{serviceName}/agent\" | \"GET /internal/apm/services/{serviceName}/transaction_types\" | \"GET /internal/apm/services/{serviceName}/node/{serviceNodeName}/metadata\" | \"GET /api/apm/services/{serviceName}/annotation/search 2023-05-22\" | \"POST /api/apm/services/{serviceName}/annotation 2023-05-22\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}\" | \"GET /internal/apm/services/{serviceName}/throughput\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/dependencies\" | \"GET /internal/apm/services/{serviceName}/dependencies/breakdown\" | \"GET /internal/apm/services/{serviceName}/anomaly_charts\" | \"GET /internal/apm/services/{serviceName}/alerts_count\" | \"GET /internal/apm/service-groups\" | \"GET /internal/apm/service-group\" | \"POST /internal/apm/service-group\" | \"DELETE /internal/apm/service-group\" | \"GET /internal/apm/service-group/services\" | \"GET /internal/apm/service-group/counts\" | \"GET /internal/apm/suggestions\" | \"GET /internal/apm/traces/{traceId}\" | \"GET /internal/apm/traces\" | \"GET /internal/apm/traces/{traceId}/root_transaction\" | \"GET /internal/apm/transactions/{transactionId}\" | \"GET /internal/apm/traces/find\" | \"POST /internal/apm/traces/aggregated_critical_path\" | \"GET /internal/apm/traces/{traceId}/transactions/{transactionId}\" | \"GET /internal/apm/traces/{traceId}/spans/{spanId}\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/latency\" | \"GET /internal/apm/services/{serviceName}/transactions/traces/samples\" | \"GET /internal/apm/services/{serviceName}/transaction/charts/breakdown\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/error_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate_by_transaction_name\" | \"GET /internal/apm/rule_types/transaction_error_rate/chart_preview\" | \"GET /internal/apm/rule_types/transaction_duration/chart_preview\" | \"GET /internal/apm/rule_types/error_count/chart_preview\" | \"GET /api/apm/settings/agent-configuration 2023-05-22\" | \"GET /api/apm/settings/agent-configuration/view 2023-05-22\" | \"DELETE /api/apm/settings/agent-configuration 2023-05-22\" | \"PUT /api/apm/settings/agent-configuration 2023-05-22\" | \"POST /api/apm/settings/agent-configuration/search 2023-05-22\" | \"GET /api/apm/settings/agent-configuration/environments 2023-05-22\" | \"GET /api/apm/settings/agent-configuration/agent_name 2023-05-22\" | \"GET /internal/apm/settings/anomaly-detection/jobs\" | \"POST /internal/apm/settings/anomaly-detection/jobs\" | \"GET /internal/apm/settings/anomaly-detection/environments\" | \"POST /internal/apm/settings/anomaly-detection/update_to_v3\" | \"GET /internal/apm/settings/apm-index-settings\" | \"GET /internal/apm/settings/apm-indices\" | \"POST /internal/apm/settings/apm-indices/save\" | \"GET /internal/apm/settings/custom_links/transaction\" | \"GET /internal/apm/settings/custom_links\" | \"POST /internal/apm/settings/custom_links\" | \"PUT /internal/apm/settings/custom_links/{id}\" | \"DELETE /internal/apm/settings/custom_links/{id}\" | \"GET /api/apm/sourcemaps 2023-05-22\" | \"POST /api/apm/sourcemaps 2023-05-22\" | \"DELETE /api/apm/sourcemaps/{id} 2023-05-22\" | \"POST /internal/apm/sourcemaps/migrate_fleet_artifacts\" | \"GET /internal/apm/fleet/has_apm_policies\" | \"GET /internal/apm/fleet/agents\" | \"POST /api/apm/fleet/apm_server_schema 2023-05-22\" | \"GET /internal/apm/fleet/apm_server_schema/unsupported\" | \"GET /internal/apm/fleet/migration_check\" | \"POST /internal/apm/fleet/cloud_apm_package_policy\" | \"GET /internal/apm/fleet/java_agent_versions\" | \"GET /internal/apm/dependencies/top_dependencies\" | \"GET /internal/apm/dependencies/upstream_services\" | \"GET /internal/apm/dependencies/metadata\" | \"GET /internal/apm/dependencies/charts/latency\" | \"GET /internal/apm/dependencies/charts/throughput\" | \"GET /internal/apm/dependencies/charts/error_rate\" | \"GET /internal/apm/dependencies/operations\" | \"GET /internal/apm/dependencies/charts/distribution\" | \"GET /internal/apm/dependencies/operations/spans\" | \"GET /internal/apm/correlations/field_candidates/transactions\" | \"GET /internal/apm/correlations/field_value_stats/transactions\" | \"POST /internal/apm/correlations/field_value_pairs/transactions\" | \"POST /internal/apm/correlations/significant_correlations/transactions\" | \"POST /internal/apm/correlations/p_values/transactions\" | \"GET /internal/apm/fallback_to_transactions\" | \"GET /internal/apm/has_data\" | \"GET /internal/apm/event_metadata/{processorEvent}/{id}\" | \"GET /internal/apm/agent_keys\" | \"GET /internal/apm/agent_keys/privileges\" | \"POST /internal/apm/api_key/invalidate\" | \"POST /api/apm/agent_keys 2023-05-22\" | \"GET /internal/apm/storage_explorer\" | \"GET /internal/apm/services/{serviceName}/storage_details\" | \"GET /internal/apm/storage_chart\" | \"GET /internal/apm/storage_explorer/privileges\" | \"GET /internal/apm/storage_explorer_summary_stats\" | \"GET /internal/apm/storage_explorer/is_cross_cluster_search\" | \"GET /internal/apm/storage_explorer/get_services\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/parents\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/children\" | \"GET /internal/apm/services/{serviceName}/infrastructure_attributes\" | \"GET /internal/apm/debug-telemetry\" | \"GET /internal/apm/time_range_metadata\" | \"GET /internal/apm/settings/labs\" | \"GET /internal/apm/get_agents_per_service\" | \"GET /internal/apm/get_latest_agent_versions\" | \"GET /internal/apm/services/{serviceName}/agent_instances\" | \"GET /internal/apm/services/{serviceName}/mobile/filters\" | \"GET /internal/apm/mobile-services/{serviceName}/most_used_charts\" | \"GET /internal/apm/mobile-services/{serviceName}/transactions/charts/sessions\" | \"GET /internal/apm/mobile-services/{serviceName}/transactions/charts/http_requests\" | \"GET /internal/apm/mobile-services/{serviceName}/stats\" | \"GET /internal/apm/mobile-services/{serviceName}/location/stats\" | \"GET /internal/apm/mobile-services/{serviceName}/terms\" | \"GET /internal/apm/mobile-services/{serviceName}/main_statistics\" | \"GET /internal/apm/mobile-services/{serviceName}/detailed_statistics\" | \"GET /internal/apm/diagnostics\"" + "\"POST /internal/apm/data_view/static\" | \"GET /internal/apm/data_view/title\" | \"GET /internal/apm/environments\" | \"GET /internal/apm/services/{serviceName}/errors/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/groups/main_statistics_by_transaction_name\" | \"POST /internal/apm/services/{serviceName}/errors/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}/samples\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}/error/{errorId}\" | \"GET /internal/apm/services/{serviceName}/errors/distribution\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}/top_erroneous_transactions\" | \"POST /internal/apm/latency/overall_distribution/transactions\" | \"GET /internal/apm/services/{serviceName}/metrics/charts\" | \"GET /internal/apm/services/{serviceName}/metrics/nodes\" | \"GET /internal/apm/services/{serviceName}/metrics/serverless/charts\" | \"GET /internal/apm/services/{serviceName}/metrics/serverless/summary\" | \"GET /internal/apm/services/{serviceName}/metrics/serverless/functions_overview\" | \"GET /internal/apm/services/{serviceName}/metrics/serverless/active_instances\" | \"GET /internal/apm/observability_overview\" | \"GET /internal/apm/observability_overview/has_data\" | \"GET /internal/apm/service-map\" | \"GET /internal/apm/service-map/service/{serviceName}\" | \"GET /internal/apm/service-map/dependency\" | \"GET /internal/apm/services\" | \"POST /internal/apm/services/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/metadata/details\" | \"GET /internal/apm/services/{serviceName}/metadata/icons\" | \"GET /internal/apm/services/{serviceName}/agent\" | \"GET /internal/apm/services/{serviceName}/transaction_types\" | \"GET /internal/apm/services/{serviceName}/node/{serviceNodeName}/metadata\" | \"GET /api/apm/services/{serviceName}/annotation/search 2023-10-31\" | \"POST /api/apm/services/{serviceName}/annotation 2023-10-31\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}\" | \"GET /internal/apm/services/{serviceName}/throughput\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/dependencies\" | \"GET /internal/apm/services/{serviceName}/dependencies/breakdown\" | \"GET /internal/apm/services/{serviceName}/anomaly_charts\" | \"GET /internal/apm/services/{serviceName}/alerts_count\" | \"GET /internal/apm/service-groups\" | \"GET /internal/apm/service-group\" | \"POST /internal/apm/service-group\" | \"DELETE /internal/apm/service-group\" | \"GET /internal/apm/service-group/services\" | \"GET /internal/apm/service-group/counts\" | \"GET /internal/apm/suggestions\" | \"GET /internal/apm/traces/{traceId}\" | \"GET /internal/apm/traces\" | \"GET /internal/apm/traces/{traceId}/root_transaction\" | \"GET /internal/apm/transactions/{transactionId}\" | \"GET /internal/apm/traces/find\" | \"POST /internal/apm/traces/aggregated_critical_path\" | \"GET /internal/apm/traces/{traceId}/transactions/{transactionId}\" | \"GET /internal/apm/traces/{traceId}/spans/{spanId}\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/latency\" | \"GET /internal/apm/services/{serviceName}/transactions/traces/samples\" | \"GET /internal/apm/services/{serviceName}/transaction/charts/breakdown\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/error_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate_by_transaction_name\" | \"GET /internal/apm/rule_types/transaction_error_rate/chart_preview\" | \"GET /internal/apm/rule_types/transaction_duration/chart_preview\" | \"GET /internal/apm/rule_types/error_count/chart_preview\" | \"GET /api/apm/settings/agent-configuration 2023-10-31\" | \"GET /api/apm/settings/agent-configuration/view 2023-10-31\" | \"DELETE /api/apm/settings/agent-configuration 2023-10-31\" | \"PUT /api/apm/settings/agent-configuration 2023-10-31\" | \"POST /api/apm/settings/agent-configuration/search 2023-10-31\" | \"GET /api/apm/settings/agent-configuration/environments 2023-10-31\" | \"GET /api/apm/settings/agent-configuration/agent_name 2023-10-31\" | \"GET /internal/apm/settings/anomaly-detection/jobs\" | \"POST /internal/apm/settings/anomaly-detection/jobs\" | \"GET /internal/apm/settings/anomaly-detection/environments\" | \"POST /internal/apm/settings/anomaly-detection/update_to_v3\" | \"GET /internal/apm/settings/apm-index-settings\" | \"GET /internal/apm/settings/apm-indices\" | \"POST /internal/apm/settings/apm-indices/save\" | \"GET /internal/apm/settings/custom_links/transaction\" | \"GET /internal/apm/settings/custom_links\" | \"POST /internal/apm/settings/custom_links\" | \"PUT /internal/apm/settings/custom_links/{id}\" | \"DELETE /internal/apm/settings/custom_links/{id}\" | \"GET /api/apm/sourcemaps 2023-10-31\" | \"POST /api/apm/sourcemaps 2023-10-31\" | \"DELETE /api/apm/sourcemaps/{id} 2023-10-31\" | \"POST /internal/apm/sourcemaps/migrate_fleet_artifacts\" | \"GET /internal/apm/fleet/has_apm_policies\" | \"GET /internal/apm/fleet/agents\" | \"POST /api/apm/fleet/apm_server_schema 2023-10-31\" | \"GET /internal/apm/fleet/apm_server_schema/unsupported\" | \"GET /internal/apm/fleet/migration_check\" | \"POST /internal/apm/fleet/cloud_apm_package_policy\" | \"GET /internal/apm/fleet/java_agent_versions\" | \"GET /internal/apm/dependencies/top_dependencies\" | \"GET /internal/apm/dependencies/upstream_services\" | \"GET /internal/apm/dependencies/metadata\" | \"GET /internal/apm/dependencies/charts/latency\" | \"GET /internal/apm/dependencies/charts/throughput\" | \"GET /internal/apm/dependencies/charts/error_rate\" | \"GET /internal/apm/dependencies/operations\" | \"GET /internal/apm/dependencies/charts/distribution\" | \"GET /internal/apm/dependencies/operations/spans\" | \"GET /internal/apm/correlations/field_candidates/transactions\" | \"GET /internal/apm/correlations/field_value_stats/transactions\" | \"POST /internal/apm/correlations/field_value_pairs/transactions\" | \"POST /internal/apm/correlations/significant_correlations/transactions\" | \"POST /internal/apm/correlations/p_values/transactions\" | \"GET /internal/apm/fallback_to_transactions\" | \"GET /internal/apm/has_data\" | \"GET /internal/apm/event_metadata/{processorEvent}/{id}\" | \"GET /internal/apm/agent_keys\" | \"GET /internal/apm/agent_keys/privileges\" | \"POST /internal/apm/api_key/invalidate\" | \"POST /api/apm/agent_keys 2023-10-31\" | \"GET /internal/apm/storage_explorer\" | \"GET /internal/apm/services/{serviceName}/storage_details\" | \"GET /internal/apm/storage_chart\" | \"GET /internal/apm/storage_explorer/privileges\" | \"GET /internal/apm/storage_explorer_summary_stats\" | \"GET /internal/apm/storage_explorer/is_cross_cluster_search\" | \"GET /internal/apm/storage_explorer/get_services\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/parents\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/children\" | \"GET /internal/apm/services/{serviceName}/infrastructure_attributes\" | \"GET /internal/apm/debug-telemetry\" | \"GET /internal/apm/time_range_metadata\" | \"GET /internal/apm/settings/labs\" | \"GET /internal/apm/get_agents_per_service\" | \"GET /internal/apm/get_latest_agent_versions\" | \"GET /internal/apm/services/{serviceName}/agent_instances\" | \"GET /internal/apm/services/{serviceName}/mobile/filters\" | \"GET /internal/apm/mobile-services/{serviceName}/most_used_charts\" | \"GET /internal/apm/mobile-services/{serviceName}/transactions/charts/sessions\" | \"GET /internal/apm/mobile-services/{serviceName}/transactions/charts/http_requests\" | \"GET /internal/apm/mobile-services/{serviceName}/stats\" | \"GET /internal/apm/mobile-services/{serviceName}/location/stats\" | \"GET /internal/apm/mobile-services/{serviceName}/terms\" | \"GET /internal/apm/mobile-services/{serviceName}/main_statistics\" | \"GET /internal/apm/mobile-services/{serviceName}/detailed_statistics\" | \"GET /internal/apm/diagnostics\"" ], "path": "x-pack/plugins/apm/server/routes/apm_routes/get_global_apm_server_route_repository.ts", "deprecated": false, @@ -929,7 +929,7 @@ "label": "APMConfig", "description": [], "signature": [ - "{ readonly enabled: boolean; readonly indices: Readonly<{} & { error: string; metric: string; span: string; transaction: string; onboarding: string; }>; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", + "{ readonly indices: Readonly<{} & { error: string; metric: string; span: string; transaction: string; onboarding: string; }>; readonly enabled: boolean; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", "; readonly telemetryCollectionEnabled: boolean; readonly metricsInterval: number; readonly agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; readonly forceSyntheticSource: boolean; readonly latestAgentVersionsUrl: string; readonly serverlessOnboarding: boolean; readonly managedServiceUrl: string; }" ], @@ -2401,7 +2401,7 @@ "StorageExplorerServiceStatisticsResponse", "; }>; } & ", "APMRouteCreateOptions", - "; \"POST /api/apm/agent_keys 2023-05-22\": { endpoint: \"POST /api/apm/agent_keys 2023-05-22\"; params?: ", + "; \"POST /api/apm/agent_keys 2023-10-31\": { endpoint: \"POST /api/apm/agent_keys 2023-10-31\"; params?: ", "TypeC", "<{ body: ", "TypeC", @@ -3561,7 +3561,7 @@ "UnsupportedApmServerSchema", "; }>; } & ", "APMRouteCreateOptions", - "; \"POST /api/apm/fleet/apm_server_schema 2023-05-22\": { endpoint: \"POST /api/apm/fleet/apm_server_schema 2023-05-22\"; params?: ", + "; \"POST /api/apm/fleet/apm_server_schema 2023-10-31\": { endpoint: \"POST /api/apm/fleet/apm_server_schema 2023-10-31\"; params?: ", "TypeC", "<{ body: ", "TypeC", @@ -3613,7 +3613,7 @@ }, ") => Promise; } & ", "APMRouteCreateOptions", - "; \"DELETE /api/apm/sourcemaps/{id} 2023-05-22\": { endpoint: \"DELETE /api/apm/sourcemaps/{id} 2023-05-22\"; params?: ", + "; \"DELETE /api/apm/sourcemaps/{id} 2023-10-31\": { endpoint: \"DELETE /api/apm/sourcemaps/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -3629,7 +3629,7 @@ }, " & { params: { path: { id: string; }; }; }) => Promise; } & ", "APMRouteCreateOptions", - "; \"POST /api/apm/sourcemaps 2023-05-22\": { endpoint: \"POST /api/apm/sourcemaps 2023-05-22\"; params?: ", + "; \"POST /api/apm/sourcemaps 2023-10-31\": { endpoint: \"POST /api/apm/sourcemaps 2023-10-31\"; params?: ", "TypeC", "<{ body: ", "TypeC", @@ -3659,7 +3659,7 @@ }, " | undefined>; } & ", "APMRouteCreateOptions", - "; \"GET /api/apm/sourcemaps 2023-05-22\": { endpoint: \"GET /api/apm/sourcemaps 2023-05-22\"; params?: ", + "; \"GET /api/apm/sourcemaps 2023-10-31\": { endpoint: \"GET /api/apm/sourcemaps 2023-10-31\"; params?: ", "PartialC", "<{ query: ", "PartialC", @@ -3955,7 +3955,7 @@ "ApmMlJob", "[]; hasLegacyJobs: boolean; }>; } & ", "APMRouteCreateOptions", - "; \"GET /api/apm/settings/agent-configuration/agent_name 2023-05-22\": { endpoint: \"GET /api/apm/settings/agent-configuration/agent_name 2023-05-22\"; params?: ", + "; \"GET /api/apm/settings/agent-configuration/agent_name 2023-10-31\": { endpoint: \"GET /api/apm/settings/agent-configuration/agent_name 2023-10-31\"; params?: ", "TypeC", "<{ query: ", "TypeC", @@ -3971,7 +3971,7 @@ }, " & { params: { query: { serviceName: string; }; }; }) => Promise<{ agentName: string | undefined; }>; } & ", "APMRouteCreateOptions", - "; \"GET /api/apm/settings/agent-configuration/environments 2023-05-22\": { endpoint: \"GET /api/apm/settings/agent-configuration/environments 2023-05-22\"; params?: ", + "; \"GET /api/apm/settings/agent-configuration/environments 2023-10-31\": { endpoint: \"GET /api/apm/settings/agent-configuration/environments 2023-10-31\"; params?: ", "PartialC", "<{ query: ", "PartialC", @@ -3989,7 +3989,7 @@ "EnvironmentsResponse", "; }>; } & ", "APMRouteCreateOptions", - "; \"POST /api/apm/settings/agent-configuration/search 2023-05-22\": { endpoint: \"POST /api/apm/settings/agent-configuration/search 2023-05-22\"; params?: ", + "; \"POST /api/apm/settings/agent-configuration/search 2023-10-31\": { endpoint: \"POST /api/apm/settings/agent-configuration/search 2023-10-31\"; params?: ", "TypeC", "<{ body: ", "IntersectionC", @@ -4027,7 +4027,7 @@ "AgentConfiguration", ", undefined, undefined> | null>; } & ", "APMRouteCreateOptions", - "; \"PUT /api/apm/settings/agent-configuration 2023-05-22\": { endpoint: \"PUT /api/apm/settings/agent-configuration 2023-05-22\"; params?: ", + "; \"PUT /api/apm/settings/agent-configuration 2023-10-31\": { endpoint: \"PUT /api/apm/settings/agent-configuration 2023-10-31\"; params?: ", "IntersectionC", "<[", "PartialC", @@ -4073,7 +4073,7 @@ }, " & { params: { query?: { overwrite?: boolean | undefined; } | undefined; } & { body: { agent_name?: string | undefined; } & { service: { name?: string | undefined; environment?: string | undefined; }; settings: { [x: string]: string; } & { [x: string]: any; }; }; }; }) => Promise; } & ", "APMRouteCreateOptions", - "; \"DELETE /api/apm/settings/agent-configuration 2023-05-22\": { endpoint: \"DELETE /api/apm/settings/agent-configuration 2023-05-22\"; params?: ", + "; \"DELETE /api/apm/settings/agent-configuration 2023-10-31\": { endpoint: \"DELETE /api/apm/settings/agent-configuration 2023-10-31\"; params?: ", "TypeC", "<{ body: ", "TypeC", @@ -4093,7 +4093,7 @@ }, " & { params: { body: { service: { name?: string | undefined; environment?: string | undefined; }; }; }; }) => Promise<{ result: string; }>; } & ", "APMRouteCreateOptions", - "; \"GET /api/apm/settings/agent-configuration/view 2023-05-22\": { endpoint: \"GET /api/apm/settings/agent-configuration/view 2023-05-22\"; params?: ", + "; \"GET /api/apm/settings/agent-configuration/view 2023-10-31\": { endpoint: \"GET /api/apm/settings/agent-configuration/view 2023-10-31\"; params?: ", "PartialC", "<{ query: ", "PartialC", @@ -4113,7 +4113,7 @@ "AgentConfiguration", ">; } & ", "APMRouteCreateOptions", - "; \"GET /api/apm/settings/agent-configuration 2023-05-22\": { endpoint: \"GET /api/apm/settings/agent-configuration 2023-05-22\"; params?: undefined; handler: ({}: ", + "; \"GET /api/apm/settings/agent-configuration 2023-10-31\": { endpoint: \"GET /api/apm/settings/agent-configuration 2023-10-31\"; params?: undefined; handler: ({}: ", { "pluginId": "apm", "scope": "server", @@ -6195,7 +6195,7 @@ "ServiceInstanceContainerMetadataDetails", ")>; } & ", "APMRouteCreateOptions", - "; \"POST /api/apm/services/{serviceName}/annotation 2023-05-22\": { endpoint: \"POST /api/apm/services/{serviceName}/annotation 2023-05-22\"; params?: ", + "; \"POST /api/apm/services/{serviceName}/annotation 2023-10-31\": { endpoint: \"POST /api/apm/services/{serviceName}/annotation 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -6237,7 +6237,7 @@ "Annotation", "; }>; } & ", "APMRouteCreateOptions", - "; \"GET /api/apm/services/{serviceName}/annotation/search 2023-05-22\": { endpoint: \"GET /api/apm/services/{serviceName}/annotation/search 2023-05-22\"; params?: ", + "; \"GET /api/apm/services/{serviceName}/annotation/search 2023-10-31\": { endpoint: \"GET /api/apm/services/{serviceName}/annotation/search 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -7988,7 +7988,7 @@ "description": [], "signature": [ "Observable", - "; autoCreateApmDataView: boolean; serviceMapEnabled: boolean; serviceMapFingerprintBucketSize: number; serviceMapFingerprintGlobalBucketSize: number; serviceMapTraceIdBucketSize: number; serviceMapTraceIdGlobalBucketSize: number; serviceMapMaxTracesPerRequest: number; ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; searchAggregatedTransactions: ", + "; enabled: boolean; autoCreateApmDataView: boolean; serviceMapEnabled: boolean; serviceMapFingerprintBucketSize: number; serviceMapFingerprintGlobalBucketSize: number; serviceMapTraceIdBucketSize: number; serviceMapTraceIdGlobalBucketSize: number; serviceMapMaxTracesPerRequest: number; ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; forceSyntheticSource: boolean; latestAgentVersionsUrl: string; serverlessOnboarding: boolean; managedServiceUrl: string; }>>" ], diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index e848018ce8fe5..a60b90af8e078 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index f1e24328a979a..8aedb40c4febc 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 86dd2030346dc..30459acef70f0 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index e24a145185620..89db9c87a1cb6 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 40518d3421957..b23e5d566e8d7 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2023-06-15 +date: 2023-06-16 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 756b98a2dd609..abe95c7bbf931 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2023-06-15 +date: 2023-06-16 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 32540753af3ca..7e544f65a21d7 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2023-06-15 +date: 2023-06-16 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 4902ff492c820..08046d1bfbc06 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index 38acea4919538..d785b2b21031d 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_chat_provider.mdx b/api_docs/cloud_chat_provider.mdx index 01e49664c9583..5b57e3b028634 100644 --- a/api_docs/cloud_chat_provider.mdx +++ b/api_docs/cloud_chat_provider.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChatProvider title: "cloudChatProvider" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChatProvider plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChatProvider'] --- import cloudChatProviderObj from './cloud_chat_provider.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index c66a7747cb468..b63d149f0f45f 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2023-06-15 +date: 2023-06-16 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 89120182f0f52..fc7ea33ed4be3 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index f1b12175d88f1..7be1d161bf6f5 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 49e120fedc33f..30853189357b8 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2023-06-15 +date: 2023-06-16 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 abe2105326574..e14194d25997f 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2023-06-15 +date: 2023-06-16 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 3687c57df6134..58d90d728e734 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2023-06-15 +date: 2023-06-16 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 41bad0333fa5c..1f68c4b6c220d 100644 --- a/api_docs/controls.devdocs.json +++ b/api_docs/controls.devdocs.json @@ -3168,7 +3168,7 @@ "label": "reload", "description": [], "signature": [ - "() => void" + "() => Promise" ], "path": "src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx", "deprecated": false, @@ -5037,7 +5037,8 @@ "label": "value", "description": [], "signature": [ - "[string, string]" + "RangeValue", + " | undefined" ], "path": "src/plugins/controls/common/range_slider/types.ts", "deprecated": false, @@ -6772,7 +6773,8 @@ "label": "value", "description": [], "signature": [ - "[string, string]" + "RangeValue", + " | undefined" ], "path": "src/plugins/controls/common/range_slider/types.ts", "deprecated": false, diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 1e8efb60b1da9..5706f08beffbe 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2023-06-15 +date: 2023-06-16 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 4d5fb6eb4c346..99d1c7926dcd9 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2023-06-15 +date: 2023-06-16 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 1dc876a054728..8eaee27226621 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2023-06-15 +date: 2023-06-16 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 7f1addef2a459..4ee493f68dcfd 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index 4eee724e78dfe..206637c9767a0 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -17924,37 +17924,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -18048,7 +18018,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -18472,6 +18468,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -18876,6 +18874,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 2b5cf3a683f8d..fb606c540d245 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 83fd016a836e7..c8ec35cd1664e 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2023-06-15 +date: 2023-06-16 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 af81b8cbf9dc3..68f64302fd622 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index bc90a86d3cf84..e9c80867db201 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2023-06-15 +date: 2023-06-16 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 25c10db0d0136..72bbc68e802b8 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2023-06-15 +date: 2023-06-16 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 2344ed5ee1310..8651fe2860eb2 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index 2fa3467df26ef..d3d259b85268d 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -14469,37 +14469,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -14593,7 +14563,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -15017,6 +15013,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -15421,6 +15419,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -21658,7 +21658,7 @@ "signature": [ "Pick<", "Toast", - ", \"prefix\" | \"defaultValue\" | \"children\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"css\" | \"iconType\" | \"onClose\" | \"toastLifeTimeMs\"> & { title?: string | ", + ", \"prefix\" | \"defaultValue\" | \"security\" | \"children\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"css\" | \"iconType\" | \"onClose\" | \"toastLifeTimeMs\"> & { title?: string | ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", @@ -26238,7 +26238,7 @@ "signature": [ "Pick<", "Toast", - ", \"prefix\" | \"defaultValue\" | \"children\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"css\" | \"iconType\" | \"onClose\" | \"toastLifeTimeMs\"> & { title?: string | ", + ", \"prefix\" | \"defaultValue\" | \"security\" | \"children\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"css\" | \"iconType\" | \"onClose\" | \"toastLifeTimeMs\"> & { title?: string | ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index fe4c00a9f2007..84a8d589c29a3 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2023-06-15 +date: 2023-06-16 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 217473b19a62d..b7d1d7e1b21a9 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 21984195f9be1..3cf5c85f6b681 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -24,11 +24,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, observability, ml, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, ux, kibanaOverview | - | | | encryptedSavedObjects, actions, data, ml, securitySolution, logstash, cloudChat | - | | | actions, ml, savedObjectsTagging, enterpriseSearch | - | -| | @kbn/core-plugins-browser-internal, @kbn/core-root-browser-internal, dataViews, home, data, savedObjects, unifiedSearch, presentationUtil, visualizations, dashboard, eventAnnotation, lens, fileUpload, ml, canvas, dashboardEnhanced, monitoring, transform, discover, dataVisualizer | - | -| | @kbn/core-saved-objects-browser, @kbn/core-saved-objects-browser-internal, @kbn/core, dataViews, home, savedObjects, visualizations, eventAnnotation, ml, canvas, lens, visTypeTimeseries, @kbn/core-saved-objects-browser-mocks | - | -| | @kbn/core-saved-objects-browser-mocks, savedObjects, presentationUtil, dashboard, eventAnnotation, ml, dashboardEnhanced, @kbn/core-saved-objects-browser-internal | - | -| | @kbn/core-saved-objects-browser-mocks, dataViews, savedObjects, dashboard, eventAnnotation, ml, dashboardEnhanced, monitoring, @kbn/core-saved-objects-browser-internal | - | -| | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, embeddable, presentationUtil, visualizations, eventAnnotation, aiops, ml, dataVisualizer, dashboardEnhanced, graph, synthetics, lens, securitySolution, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-plugins-browser-internal, @kbn/core-root-browser-internal, dataViews, home, data, savedObjects, unifiedSearch, presentationUtil, visualizations, dashboard, lens, fileUpload, ml, canvas, dashboardEnhanced, monitoring, transform, discover, dataVisualizer | - | +| | @kbn/core-saved-objects-browser, @kbn/core-saved-objects-browser-internal, @kbn/core, dataViews, home, savedObjects, visualizations, ml, canvas, lens, visTypeTimeseries, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-saved-objects-browser-mocks, savedObjects, presentationUtil, dashboard, ml, dashboardEnhanced, @kbn/core-saved-objects-browser-internal | - | +| | @kbn/core-saved-objects-browser-mocks, dataViews, savedObjects, dashboard, ml, dashboardEnhanced, monitoring, @kbn/core-saved-objects-browser-internal | - | +| | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, embeddable, presentationUtil, visualizations, aiops, ml, dataVisualizer, dashboardEnhanced, graph, synthetics, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | | | @kbn/core-lifecycle-browser-mocks, @kbn/core, ml, dataViews, @kbn/core-plugins-browser-internal | - | | | @kbn/core, savedObjects, embeddable, visualizations, canvas, graph, ml, @kbn/core-saved-objects-common, @kbn/core-saved-objects-server, actions, alerting, savedSearch, enterpriseSearch, securitySolution, taskManager, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-api-server | - | | | stackAlerts, alerting, securitySolution, inputControlVis | - | @@ -70,13 +70,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | data, discover, imageEmbeddable, embeddable | - | | | @kbn/core-saved-objects-browser-mocks, dataViews, discover, @kbn/core-saved-objects-browser-internal | - | | | advancedSettings, discover | - | -| | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, savedObjects, dashboard, eventAnnotation | - | -| | @kbn/core-saved-objects-browser-mocks, home, eventAnnotation, @kbn/core-saved-objects-browser-internal | - | +| | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, savedObjects, dashboard | - | +| | @kbn/core-saved-objects-browser-mocks, home, @kbn/core-saved-objects-browser-internal | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, savedObjects, visualizations | - | -| | @kbn/core-saved-objects-browser-mocks, eventAnnotation, @kbn/core-saved-objects-browser-internal | - | +| | @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-browser-internal | - | | | @kbn/core-saved-objects-browser-mocks, savedObjects, @kbn/core-saved-objects-browser-internal | - | | | @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-browser-internal | - | -| | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, eventAnnotation, savedObjects | - | +| | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, savedObjects | - | | | @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-browser-internal | - | | | @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-browser-internal | - | | | @kbn/core-saved-objects-browser-internal | - | @@ -89,7 +89,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/core-saved-objects-browser-internal, @kbn/core | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core, spaces, savedSearch, visualizations, lens, cases, maps, canvas, graph | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core | - | -| | @kbn/core-saved-objects-browser-internal, @kbn/core, eventAnnotation | - | +| | @kbn/core-saved-objects-browser-internal, @kbn/core | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core | - | | | @kbn/core-saved-objects-browser-internal | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 13eaaa9b730b0..2b6e8cfde928e 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -649,17 +649,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [group_editor_controls.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/components/group_editor_controls/group_editor_controls.tsx#:~:text=title), [table_list.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/components/table_list.tsx#:~:text=title), [group_editor_controls.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/components/group_editor_controls/group_editor_controls.tsx#:~:text=title), [table_list.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/components/table_list.tsx#:~:text=title) | - | | | [group_editor_controls.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/components/group_editor_controls/group_editor_controls.tsx#:~:text=title), [table_list.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/components/table_list.tsx#:~:text=title), [group_editor_controls.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/components/group_editor_controls/group_editor_controls.tsx#:~:text=title), [table_list.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/components/table_list.tsx#:~:text=title) | - | | | [group_editor_controls.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/components/group_editor_controls/group_editor_controls.tsx#:~:text=title), [table_list.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/components/table_list.tsx#:~:text=title) | - | -| | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=savedObjects), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=savedObjects), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=savedObjects), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=savedObjects), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=savedObjects), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=savedObjects), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=savedObjects), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=savedObjects), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=savedObjects) | - | -| | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectsClientContract), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectsClientContract) | - | -| | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=create), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=create), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=create) | - | -| | [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=bulkCreate) | - | -| | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=bulkDelete), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=bulkDelete) | - | -| | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=find), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=find), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=find), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=find) | - | -| | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=get), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=get) | - | -| | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=update), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=update) | - | -| | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SimpleSavedObject), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SimpleSavedObject), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SimpleSavedObject), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=SimpleSavedObject), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=SimpleSavedObject) | - | +| | [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=SimpleSavedObject), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=SimpleSavedObject) | - | | | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectsFindOptions), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectsFindOptions) | - | -| | [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=SavedObjectsFindResponse), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=SavedObjectsFindResponse) | - | | | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectReference), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectReference), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectReference) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index f5090c591e8b9..6a4977eeaefae 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 5b5a60620fbc7..e69e7bcb97ca5 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2023-06-15 +date: 2023-06-16 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 9507a018de92f..6ead8e4277f38 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2023-06-15 +date: 2023-06-16 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 b1332f09014f9..ccf0c2be52776 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 26b6d75353eb9..91000b2fdb712 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 8e5ce9ef9ea4e..86fab78e45b11 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index ef688a5aa3733..98176b5c8aec7 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2023-06-15 +date: 2023-06-16 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 69d3ab034c579..0c454cb723d5d 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.devdocs.json b/api_docs/enterprise_search.devdocs.json index 2e651ea7e7064..077004ea368cf 100644 --- a/api_docs/enterprise_search.devdocs.json +++ b/api_docs/enterprise_search.devdocs.json @@ -38,7 +38,7 @@ "label": "ConfigType", "description": [], "signature": [ - "{ readonly host?: string | undefined; readonly customHeaders?: Readonly<{} & {}> | undefined; readonly enabled: boolean; readonly ssl: Readonly<{ certificateAuthorities?: string | string[] | undefined; } & { verificationMode: \"none\" | \"full\" | \"certificate\"; }>; readonly accessCheckTimeout: number; readonly accessCheckTimeoutWarning: number; readonly canDeployEntSearch: boolean; readonly hasConnectors: boolean; readonly hasDefaultIngestPipeline: boolean; readonly hasDocumentLevelSecurityEnabled: boolean; readonly hasIncrementalSyncEnabled: boolean; readonly hasNativeConnectors: boolean; readonly hasWebCrawler: boolean; }" + "{ readonly host?: string | undefined; readonly customHeaders?: Readonly<{} & {}> | undefined; readonly ssl: Readonly<{ certificateAuthorities?: string | string[] | undefined; } & { verificationMode: \"none\" | \"full\" | \"certificate\"; }>; readonly enabled: boolean; readonly accessCheckTimeout: number; readonly accessCheckTimeoutWarning: number; readonly canDeployEntSearch: boolean; readonly hasConnectors: boolean; readonly hasDefaultIngestPipeline: boolean; readonly hasDocumentLevelSecurityEnabled: boolean; readonly hasIncrementalSyncEnabled: boolean; readonly hasNativeConnectors: boolean; readonly hasWebCrawler: boolean; }" ], "path": "x-pack/plugins/enterprise_search/server/index.ts", "deprecated": false, diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index f1580ad5aa92e..0e7189422acba 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 67c7d8208a8e2..82ba1307873b1 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/ess_security.mdx b/api_docs/ess_security.mdx index a516378f897aa..8df7655ee4480 100644 --- a/api_docs/ess_security.mdx +++ b/api_docs/ess_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/essSecurity title: "essSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the essSecurity plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'essSecurity'] --- import essSecurityObj from './ess_security.devdocs.json'; diff --git a/api_docs/event_annotation.devdocs.json b/api_docs/event_annotation.devdocs.json index b2c232453a2ea..c10f6c70726fd 100644 --- a/api_docs/event_annotation.devdocs.json +++ b/api_docs/event_annotation.devdocs.json @@ -977,6 +977,27 @@ "id": "def-public.EventAnnotationService.Unnamed.$2", "type": "Object", "tags": [], + "label": "contentManagement", + "description": [], + "signature": [ + { + "pluginId": "contentManagement", + "scope": "public", + "docId": "kibContentManagementPluginApi", + "section": "def-public.ContentManagementPublicStart", + "text": "ContentManagementPublicStart" + } + ], + "path": "src/plugins/event_annotation/public/event_annotation_service/index.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "eventAnnotation", + "id": "def-public.EventAnnotationService.Unnamed.$3", + "type": "Object", + "tags": [], "label": "savedObjectsManagement", "description": [], "signature": [ @@ -1576,6 +1597,95 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "eventAnnotation", + "id": "def-common.EventAnnotationGroupSavedObjectAttributes", + "type": "Interface", + "tags": [], + "label": "EventAnnotationGroupSavedObjectAttributes", + "description": [], + "path": "src/plugins/event_annotation/common/content_management/v1/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "eventAnnotation", + "id": "def-common.EventAnnotationGroupSavedObjectAttributes.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "src/plugins/event_annotation/common/content_management/v1/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "eventAnnotation", + "id": "def-common.EventAnnotationGroupSavedObjectAttributes.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "src/plugins/event_annotation/common/content_management/v1/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "eventAnnotation", + "id": "def-common.EventAnnotationGroupSavedObjectAttributes.ignoreGlobalFilters", + "type": "boolean", + "tags": [], + "label": "ignoreGlobalFilters", + "description": [], + "path": "src/plugins/event_annotation/common/content_management/v1/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "eventAnnotation", + "id": "def-common.EventAnnotationGroupSavedObjectAttributes.annotations", + "type": "Array", + "tags": [], + "label": "annotations", + "description": [], + "signature": [ + { + "pluginId": "eventAnnotation", + "scope": "common", + "docId": "kibEventAnnotationPluginApi", + "section": "def-common.EventAnnotationConfig", + "text": "EventAnnotationConfig" + }, + "[]" + ], + "path": "src/plugins/event_annotation/common/content_management/v1/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "eventAnnotation", + "id": "def-common.EventAnnotationGroupSavedObjectAttributes.dataViewSpec", + "type": "Object", + "tags": [], + "label": "dataViewSpec", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + }, + " | undefined" + ], + "path": "src/plugins/event_annotation/common/content_management/v1/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "eventAnnotation", "id": "def-common.FetchEventAnnotationsArgs", diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 3b5c69c2a700e..a56de69ffc28f 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 227 | 30 | 227 | 4 | +| 234 | 30 | 234 | 4 | ## Client diff --git a/api_docs/event_log.devdocs.json b/api_docs/event_log.devdocs.json index 55748a48cf02e..90f4b4576a4ea 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<{ type?: string | undefined; id?: 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; name?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; license?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: 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; } & {}> | undefined; } & {}> | 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; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ 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_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_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; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; duration?: string | number | undefined; url?: string | undefined; code?: string | undefined; provider?: string | undefined; severity?: string | number | undefined; created?: 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?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | 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<{ type?: string | undefined; id?: 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; name?: string | undefined; license?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: 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; } & {}> | undefined; } & {}> | 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; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ 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_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_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; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; duration?: string | number | undefined; url?: string | undefined; code?: string | undefined; provider?: string | undefined; severity?: string | number | undefined; created?: 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?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined)[]" ], "path": "x-pack/plugins/event_log/server/es/cluster_client_adapter.ts", "deprecated": false, @@ -1534,7 +1534,7 @@ "label": "IEvent", "description": [], "signature": [ - "DeepPartial | undefined; error?: Readonly<{ type?: string | undefined; id?: 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; name?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; license?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: 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; } & {}> | undefined; } & {}> | 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; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ 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_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_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; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; duration?: string | number | undefined; url?: string | undefined; code?: string | undefined; provider?: string | undefined; severity?: string | number | undefined; created?: 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?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" + "DeepPartial | undefined; error?: Readonly<{ type?: string | undefined; id?: 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; name?: string | undefined; license?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: 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; } & {}> | undefined; } & {}> | 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; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ 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_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_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; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; duration?: string | number | undefined; url?: string | undefined; code?: string | undefined; provider?: string | undefined; severity?: string | number | undefined; created?: 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?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" ], "path": "x-pack/plugins/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<{ type?: string | undefined; id?: 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; name?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; license?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: 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; } & {}> | undefined; } & {}> | 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; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ 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_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_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; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; duration?: string | number | undefined; url?: string | undefined; code?: string | undefined; provider?: string | undefined; severity?: string | number | undefined; created?: 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?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | 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<{ type?: string | undefined; id?: 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; name?: string | undefined; license?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: 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; } & {}> | undefined; } & {}> | 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; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ 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_searches?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; es_search_duration_ms?: string | number | undefined; total_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; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; duration?: string | number | undefined; url?: string | undefined; code?: string | undefined; provider?: string | undefined; severity?: string | number | undefined; created?: 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?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; timezone?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined" ], "path": "x-pack/plugins/event_log/generated/schemas.ts", "deprecated": false, diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index e1aafd30136ff..be7c55231d264 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2023-06-15 +date: 2023-06-16 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 9c1fc8bd46331..3483b6e081487 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2023-06-15 +date: 2023-06-16 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 4d6949a1518fc..a36fbba0bcdc6 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2023-06-15 +date: 2023-06-16 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 f621513b8f491..7176c58b0bae8 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2023-06-15 +date: 2023-06-16 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 07a062ef970d7..52ece1dfa168d 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2023-06-15 +date: 2023-06-16 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 adeda7a00a334..7493b99a43eaa 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2023-06-15 +date: 2023-06-16 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 8601ce04cb381..86e67b2d9166d 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2023-06-15 +date: 2023-06-16 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 4e75d17720d33..7386106aa3f27 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2023-06-15 +date: 2023-06-16 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 b7a2bed329887..2347f04522636 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2023-06-15 +date: 2023-06-16 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 ded8b71d12217..991530357e6d7 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2023-06-15 +date: 2023-06-16 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 ec6248ad30ea2..94d9e387f0cb9 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2023-06-15 +date: 2023-06-16 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 1bc50c07163e1..ae2aa1ce132e9 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2023-06-15 +date: 2023-06-16 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 fbea9a976b234..7ec3b9e96e277 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2023-06-15 +date: 2023-06-16 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 1fb25eaf817a5..68a830fa3fe37 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2023-06-15 +date: 2023-06-16 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 2f78430590b27..2a57e80567067 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2023-06-15 +date: 2023-06-16 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 94a0c408a8747..362021d9905e8 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2023-06-15 +date: 2023-06-16 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 8d7d029397183..1ff41afe310c0 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2023-06-15 +date: 2023-06-16 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 eaa2fbba549d4..208678088ad48 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 6ea56f0a677c8..bf473fa754483 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.devdocs.json b/api_docs/files.devdocs.json index 392c2687a8118..6b2aba6f8174f 100644 --- a/api_docs/files.devdocs.json +++ b/api_docs/files.devdocs.json @@ -305,7 +305,7 @@ "section": "def-common.FilesMetrics", "text": "FilesMetrics" }, - ">; publicDownload: (arg: Omit<{ token: string; fileName?: string | undefined; }, \"kind\">) => any; find: (arg: Omit<{ kind?: string | string[] | undefined; kindToExclude?: string | string[] | undefined; status?: string | string[] | undefined; extension?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", + ">; publicDownload: (arg: Omit<{ token: string; fileName?: string | undefined; }, \"kind\">) => any; find: (arg: Omit<{ kind?: string | string[] | undefined; kindToExclude?: string | string[] | undefined; status?: string | string[] | undefined; extension?: string | string[] | undefined; mimeType?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", { "pluginId": "@kbn/shared-ux-file-types", "scope": "common", @@ -377,7 +377,7 @@ "section": "def-common.FileJSON", "text": "FileJSON" }, - "; }>; list: (arg?: Omit<{ kind: string; status?: string | string[] | undefined; extension?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", + "; }>; list: (arg?: Omit<{ kind: string; status?: string | string[] | undefined; extension?: string | string[] | undefined; mimeType?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", { "pluginId": "@kbn/shared-ux-file-types", "scope": "common", @@ -969,37 +969,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -1093,7 +1063,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -1517,6 +1513,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -1921,6 +1919,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", diff --git a/api_docs/files.mdx b/api_docs/files.mdx index dbdf9a90947fe..4f02546adbd83 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2023-06-15 +date: 2023-06-16 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 1564dffe1f733..625d0ac94546e 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index 6b1d8b36790de..5d0b125bb0530 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -10079,37 +10079,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -10203,7 +10173,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -10627,6 +10623,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -11031,6 +11029,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -11442,37 +11442,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -11566,7 +11536,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -11990,6 +11986,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -12394,6 +12392,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -12818,37 +12818,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -12942,7 +12912,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -13366,6 +13362,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -13770,6 +13768,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -14191,37 +14191,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -14315,7 +14285,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -14739,6 +14735,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -15143,6 +15141,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -15567,37 +15567,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -15691,7 +15661,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -16115,6 +16111,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -16519,6 +16517,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -24982,7 +24982,7 @@ "label": "PackageSpecCategory", "description": [], "signature": [ - "\"connector\" | \"security\" | \"monitoring\" | \"observability\" | \"infrastructure\" | \"cloud\" | \"custom\" | \"enterprise_search\" | \"advanced_analytics_ueba\" | \"analytics_engine\" | \"application_observability\" | \"app_search\" | \"auditd\" | \"authentication\" | \"aws\" | \"azure\" | \"big_data\" | \"cdn_security\" | \"config_management\" | \"connector_client\" | \"connector_package\" | \"containers\" | \"content_source\" | \"crawler\" | \"credential_management\" | \"crm\" | \"custom_logs\" | \"database_security\" | \"datastore\" | \"dns_security\" | \"edr_xdr\" | \"elasticsearch_sdk\" | \"elastic_stack\" | \"email_security\" | \"firewall_security\" | \"google_cloud\" | \"iam\" | \"ids_ips\" | \"java_observability\" | \"kubernetes\" | \"language_client\" | \"languages\" | \"load_balancer\" | \"message_queue\" | \"native_search\" | \"network\" | \"network_security\" | \"notification\" | \"os_system\" | \"process_manager\" | \"productivity\" | \"productivity_security\" | \"proxy_security\" | \"sdk_search\" | \"stream_processing\" | \"support\" | \"threat_intel\" | \"ticketing\" | \"version_control\" | \"virtualization\" | \"vpn_security\" | \"vulnerability_management\" | \"web\" | \"web_application_firewall\" | \"websphere\" | \"workplace_search\"" + "\"monitoring\" | \"security\" | \"connector\" | \"observability\" | \"infrastructure\" | \"cloud\" | \"custom\" | \"enterprise_search\" | \"advanced_analytics_ueba\" | \"analytics_engine\" | \"application_observability\" | \"app_search\" | \"auditd\" | \"authentication\" | \"aws\" | \"azure\" | \"big_data\" | \"cdn_security\" | \"config_management\" | \"connector_client\" | \"connector_package\" | \"containers\" | \"content_source\" | \"crawler\" | \"credential_management\" | \"crm\" | \"custom_logs\" | \"database_security\" | \"datastore\" | \"dns_security\" | \"edr_xdr\" | \"elasticsearch_sdk\" | \"elastic_stack\" | \"email_security\" | \"firewall_security\" | \"google_cloud\" | \"iam\" | \"ids_ips\" | \"java_observability\" | \"kubernetes\" | \"language_client\" | \"languages\" | \"load_balancer\" | \"message_queue\" | \"native_search\" | \"network\" | \"network_security\" | \"notification\" | \"os_system\" | \"process_manager\" | \"productivity\" | \"productivity_security\" | \"proxy_security\" | \"sdk_search\" | \"stream_processing\" | \"support\" | \"threat_intel\" | \"ticketing\" | \"version_control\" | \"virtualization\" | \"vpn_security\" | \"vulnerability_management\" | \"web\" | \"web_application_firewall\" | \"websphere\" | \"workplace_search\"" ], "path": "x-pack/plugins/fleet/common/types/models/package_spec.ts", "deprecated": false, diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 84033aca96915..244e0480c4f1a 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2023-06-15 +date: 2023-06-16 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 ef85182caccd4..a7a2d4c5d8ddf 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2023-06-15 +date: 2023-06-16 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 75a0f09d9d8a2..d309d871d74eb 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2023-06-15 +date: 2023-06-16 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 9223a0703453e..0929862402179 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2023-06-15 +date: 2023-06-16 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 06349fb49315d..4b77acc434df4 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index b4195e4a742bf..e7d05b1d21909 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index d653bb47ac032..17fda1db8087b 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index e57b401fc18e6..f412b69ce557a 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 41ae862264d5e..927fc6f82bae1 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index c1fb5387f1566..483eacb491b91 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 15155f2c7989b..239d55a41971f 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.devdocs.json b/api_docs/kbn_aiops_components.devdocs.json index 10289c726ced6..35b37e8f523f5 100644 --- a/api_docs/kbn_aiops_components.devdocs.json +++ b/api_docs/kbn_aiops_components.devdocs.json @@ -93,7 +93,7 @@ "label": "ProgressControls", "description": [], "signature": [ - "({ children, progress, progressMessage, onRefresh, onCancel, isRunning, shouldRerunAnalysis, }: React.PropsWithChildren) => JSX.Element" + "({ children, isBrushCleared, progress, progressMessage, onRefresh, onCancel, onReset, isRunning, shouldRerunAnalysis, }: React.PropsWithChildren) => JSX.Element" ], "path": "x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx", "deprecated": false, @@ -104,7 +104,7 @@ "id": "def-common.ProgressControls.$1", "type": "CompoundType", "tags": [], - "label": "{\n children,\n progress,\n progressMessage,\n onRefresh,\n onCancel,\n isRunning,\n shouldRerunAnalysis,\n}", + "label": "{\n children,\n isBrushCleared,\n progress,\n progressMessage,\n onRefresh,\n onCancel,\n onReset,\n isRunning,\n shouldRerunAnalysis,\n}", "description": [], "signature": [ "React.PropsWithChildren" diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 51064e3d2ce5c..c65a65c9e3b5c 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 1c6a056f3ee92..fd564678e6ef8 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 93b8a2a775912..3e2bb44f29b2f 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 5758b37774aaa..fddaf9d4ebff4 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 64a11717db822..bb1bdd3f5900d 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2023-06-15 +date: 2023-06-16 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 a2b74f4b37545..47ff78bebd411 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index abe42d7f907d9..e296c3d91d1a4 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 0b1d43f4b66e9..fdef95eba1104 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 8fcbe2682bdac..de080bd9e09e0 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 34d284713b0fb..90ddc6287c8e5 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index c95df518b4692..2493028fd6902 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index fd39238a0d2a0..b023684ebcb47 100644 --- a/api_docs/kbn_analytics_shippers_gainsight.mdx +++ b/api_docs/kbn_analytics_shippers_gainsight.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight title: "@kbn/analytics-shippers-gainsight" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-gainsight plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index b7709fdb8d382..4241c7d6921f8 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 4864320cd4360..0e89c0b18e9f6 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2023-06-15 +date: 2023-06-16 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 5ea3b4021e443..7caf22a9e80ea 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 195e21b75e2ed..1f21b3182319f 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 7313d2bf062b8..26724c1e65945 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index e3eca7bb2fb5e..f8f74436e38d2 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index affa39c7c978d..80ba6c62c8360 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2023-06-15 +date: 2023-06-16 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 7c308c8e5586d..7a3c96d367336 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2023-06-15 +date: 2023-06-16 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 1eaf9a182a34d..c2c865b5b1ae3 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index aad41b6676611..fd5de76135e67 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2023-06-15 +date: 2023-06-16 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 7c26dfe671a6f..886f34c9dde95 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2023-06-15 +date: 2023-06-16 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 af6c8927e2d28..8fe4a0b900710 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2023-06-15 +date: 2023-06-16 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 b4239abfc15ef..4aa24eb482226 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 1c047bfc993c5..ac96ce28ca541 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index b7da2034b9b60..43050899e6ade 100644 --- a/api_docs/kbn_code_editor_mocks.mdx +++ b/api_docs/kbn_code_editor_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mocks title: "@kbn/code-editor-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mocks plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index eeebd4e75858c..b8c1e48d8507b 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2023-06-15 +date: 2023-06-16 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 8c311b0ef2037..f91c2cc258cdf 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2023-06-15 +date: 2023-06-16 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 c714f72edd041..b63bea91d0a93 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 93d8b88e41d2a..1319e2bb5ebc3 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2023-06-15 +date: 2023-06-16 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 b7576577f0052..e7b023276d201 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index a22223799701c..c431a21fb18a7 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2023-06-15 +date: 2023-06-16 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 3c85c649fdc55..8094ae7c9bd74 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 3a5774ba79516..2554c8c4bab95 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 4d132a29eb602..4bd585a596f68 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 8ba2cba93b069..c1d409bbd5963 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 b1d022f46c365..cd0f7b3d16be7 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 2a1c99b998fe7..85bdcd0822bac 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 2f3f3acf7acf4..50d3401458f70 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2023-06-15 +date: 2023-06-16 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 cfd4881662abd..98cc98648d6a7 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 a50766a692377..ba23fdd5fc4dd 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 995beeeea138b..63693630887a4 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 b78a8495e16c6..776a3df6e4eb2 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 790bc478362f0..58359cb058eec 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 b046df5db7e6e..f5e9379da5040 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2023-06-15 +date: 2023-06-16 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 ff048dd289f73..686679b05fa04 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 8596875b62fa0..2e0c9e1690d19 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 c6ab154cb2243..574bf025183ba 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 877f03d85cb73..e5a8364b2fd14 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 a714bfcc17fbc..c61b9a764373c 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2023-06-15 +date: 2023-06-16 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 a540d890da7e4..62034b01238c4 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 b235a5c67bcaf..2dbcca45249d8 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 f086be1725100..8ce6aea9f04e6 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 f9c93fe7fd901..ad3c6b0886440 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2023-06-15 +date: 2023-06-16 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 a8b6c16c6372f..536da9acfa468 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2023-06-15 +date: 2023-06-16 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 46f55da563fa4..0a412b101100f 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 6ecb1daa895e3..1d7a0e4833674 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 bbdfa0f3ee83e..3423e73c7019d 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 8434d0179726c..bed279259c9c6 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 6712d06aa72ad..a181234ab27e6 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 9983564d9b4bc..799a6a5fd8ac0 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 ab9257facfc59..5b07000e25ad3 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 0fcd405779541..70a5875228353 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2023-06-15 +date: 2023-06-16 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 31e30c1311467..7749592f9cf56 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2023-06-15 +date: 2023-06-16 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 1b82547176825..c6a19e3f4a114 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 d8a1248e1efec..514aacaf42b97 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 bc0fdab7a6b7f..4e90b5e982a3b 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 c8b5e06cf5c20..9ded06447f08d 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 2c3ea87d54953..878db4363253f 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 7eca5fd085f58..b5fdc6c1311a0 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2023-06-15 +date: 2023-06-16 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 49dd4c6453ec6..3e0196f4e5254 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2023-06-15 +date: 2023-06-16 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 f6527ba05c5f9..cb57efa69e1f4 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 c98efa0c39b0a..4fbd824d31690 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 548b8cf0a6097..4c11c5bcf87f6 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 2fd29ac56281a..3503f4d4ed5d7 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 40e8af5781e9e..c9ea796097ef9 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2023-06-15 +date: 2023-06-16 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 7e4fb280cc76b..a9dec40cde64e 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 34c3ddff8da43..80e46aa5c1821 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json index 964ddd701f3a8..5d5398da21156 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json @@ -361,43 +361,7 @@ }, "<", "default", - ">; name: string | symbol; security: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.DeeplyMockedApi", - "text": "DeeplyMockedApi" - }, - "<", - "default", - ">; monitoring: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.DeeplyMockedApi", - "text": "DeeplyMockedApi" - }, - "<", - "default", - ">; count: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.ClientApiMockInstance", - "text": "ClientApiMockInstance" - }, - ", [params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined]>; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -517,7 +481,23 @@ }, "<", "default", - ">; danglingIndices: ", + ">; count: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.ClientApiMockInstance", + "text": "ClientApiMockInstance" + }, + ", [params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined]>; danglingIndices: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -897,6 +877,16 @@ }, "<", "default", + ">; monitoring: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; msearch: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", @@ -1173,6 +1163,16 @@ }, "<", "default", + ">; security: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; shutdown: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", @@ -1494,43 +1494,7 @@ }, "<", "default", - ">; name: string | symbol; security: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.DeeplyMockedApi", - "text": "DeeplyMockedApi" - }, - "<", - "default", - ">; monitoring: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.DeeplyMockedApi", - "text": "DeeplyMockedApi" - }, - "<", - "default", - ">; count: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.ClientApiMockInstance", - "text": "ClientApiMockInstance" - }, - ", [params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined]>; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -1650,7 +1614,23 @@ }, "<", "default", - ">; danglingIndices: ", + ">; count: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.ClientApiMockInstance", + "text": "ClientApiMockInstance" + }, + ", [params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined]>; danglingIndices: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -2030,6 +2010,16 @@ }, "<", "default", + ">; monitoring: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; msearch: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", @@ -2306,6 +2296,16 @@ }, "<", "default", + ">; security: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; shutdown: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", @@ -2581,43 +2581,7 @@ }, "<", "default", - ">; name: string | symbol; security: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.DeeplyMockedApi", - "text": "DeeplyMockedApi" - }, - "<", - "default", - ">; monitoring: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.DeeplyMockedApi", - "text": "DeeplyMockedApi" - }, - "<", - "default", - ">; count: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.ClientApiMockInstance", - "text": "ClientApiMockInstance" - }, - ", [params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined]>; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -2737,7 +2701,23 @@ }, "<", "default", - ">; danglingIndices: ", + ">; count: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.ClientApiMockInstance", + "text": "ClientApiMockInstance" + }, + ", [params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined]>; danglingIndices: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -3117,6 +3097,16 @@ }, "<", "default", + ">; monitoring: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; msearch: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", @@ -3393,6 +3383,16 @@ }, "<", "default", + ">; security: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; shutdown: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", @@ -3759,43 +3759,7 @@ }, "<", "default", - ">; name: string | symbol; security: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.DeeplyMockedApi", - "text": "DeeplyMockedApi" - }, - "<", - "default", - ">; monitoring: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.DeeplyMockedApi", - "text": "DeeplyMockedApi" - }, - "<", - "default", - ">; count: ", - { - "pluginId": "@kbn/core-elasticsearch-client-server-mocks", - "scope": "common", - "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", - "section": "def-common.ClientApiMockInstance", - "text": "ClientApiMockInstance" - }, - ", [params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined]>; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -3915,7 +3879,23 @@ }, "<", "default", - ">; danglingIndices: ", + ">; count: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.ClientApiMockInstance", + "text": "ClientApiMockInstance" + }, + ", [params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined]>; danglingIndices: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -4295,6 +4275,16 @@ }, "<", "default", + ">; monitoring: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; msearch: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", @@ -4571,6 +4561,16 @@ }, "<", "default", + ">; security: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; shutdown: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 3efdd81a5cb79..17a3ada354ec9 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_core_elasticsearch_server.devdocs.json index b333860a8c463..6aeb9884c1073 100644 --- a/api_docs/kbn_core_elasticsearch_server.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_server.devdocs.json @@ -1144,37 +1144,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -1268,7 +1238,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -1692,6 +1688,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -2096,6 +2094,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -2838,37 +2838,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -2962,7 +2932,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -3386,6 +3382,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -3790,6 +3788,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -4068,37 +4068,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -4192,7 +4162,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -4616,6 +4612,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -5020,6 +5018,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -5551,37 +5551,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -5675,7 +5645,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -6099,6 +6095,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -6503,6 +6501,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 66a33567c8333..3f2c28d5272f9 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json index 244fff9377f31..567cc8cfd6da4 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json @@ -198,37 +198,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -322,7 +292,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -746,6 +742,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -1150,6 +1148,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -1856,37 +1856,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -1980,7 +1950,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -2404,6 +2400,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -2808,6 +2806,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -3005,7 +3005,7 @@ "label": "ElasticsearchConfigType", "description": [], "signature": [ - "{ readonly username?: string | undefined; readonly password?: string | undefined; readonly serviceAccountToken?: string | undefined; readonly healthCheck: Readonly<{} & { delay: moment.Duration; }>; readonly ssl: Readonly<{ key?: string | undefined; certificateAuthorities?: string | string[] | undefined; certificate?: string | undefined; keyPassphrase?: string | undefined; } & { verificationMode: \"none\" | \"full\" | \"certificate\"; keystore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; alwaysPresentCertificate: boolean; }>; readonly requestTimeout: moment.Duration; readonly compression: boolean; readonly customHeaders: Record; readonly hosts: string | string[]; readonly sniffOnStart: boolean; readonly sniffInterval: false | moment.Duration; readonly sniffOnConnectionFault: boolean; readonly maxSockets: number; readonly maxIdleSockets: number; readonly idleSocketTimeout: moment.Duration; readonly requestHeadersWhitelist: string | string[]; readonly shardTimeout: moment.Duration; readonly pingTimeout: moment.Duration; readonly logQueries: boolean; readonly apiVersion: string; readonly ignoreVersionMismatch: boolean; readonly skipStartupConnectionCheck: boolean; readonly apisToRedactInLogs: Readonly<{ method?: string | undefined; } & { path: string; }>[]; }" + "{ readonly username?: string | undefined; readonly password?: string | undefined; readonly serviceAccountToken?: string | undefined; readonly ssl: Readonly<{ key?: string | undefined; certificateAuthorities?: string | string[] | undefined; certificate?: string | undefined; keyPassphrase?: string | undefined; } & { verificationMode: \"none\" | \"full\" | \"certificate\"; keystore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; alwaysPresentCertificate: boolean; }>; readonly healthCheck: Readonly<{} & { delay: moment.Duration; }>; readonly requestTimeout: moment.Duration; readonly compression: boolean; readonly customHeaders: Record; readonly hosts: string | string[]; readonly sniffOnStart: boolean; readonly sniffInterval: false | moment.Duration; readonly sniffOnConnectionFault: boolean; readonly maxSockets: number; readonly maxIdleSockets: number; readonly idleSocketTimeout: moment.Duration; readonly requestHeadersWhitelist: string | string[]; readonly shardTimeout: moment.Duration; readonly pingTimeout: moment.Duration; readonly logQueries: boolean; readonly apiVersion: string; readonly ignoreVersionMismatch: boolean; readonly skipStartupConnectionCheck: boolean; readonly apisToRedactInLogs: Readonly<{ method?: string | undefined; } & { path: string; }>[]; }" ], "path": "packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_config.ts", "deprecated": false, diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 046bc3d6689a1..2bc2d3445f6d4 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 95ad14a0560c2..df2ed09482a38 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 1e09f66ce4d9c..2e33050bb92be 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 b5f14306f9676..fa7465e2612c7 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 d33595fcaf6b7..c19415fe64a73 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 025bfad7c0bdc..abc84df00df7d 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 f5d5cca4292f8..3cb22a32469a6 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 f2622ab47989c..0ec6e59dd5513 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2023-06-15 +date: 2023-06-16 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 7a63c633b9ded..c038872884ddd 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2023-06-15 +date: 2023-06-16 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 92875c78d8da0..ae283f636687c 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 72545f92f9fb9..a9528d68a47e6 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 d8782745c70c6..beb08da3cbc56 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 b332cee18d16a..6eee4cb7ce6b1 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 71006b34bc2a9..d2156303a1f1e 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 1bb22d37939af..f08c5d3f095eb 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 d1fd7046e5d9f..e0bd5596154bf 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 f5eface1789b5..2928587448624 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2023-06-15 +date: 2023-06-16 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 4c0561757e3bf..fa10ee724b89f 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 26239e4a343c7..949ddbc25d5eb 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2023-06-15 +date: 2023-06-16 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 e973a1c9eb3da..66134a66459b6 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2023-06-15 +date: 2023-06-16 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 aa89da80bd2df..f0b3c1e838b61 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 30e768727e4e8..563232125e2af 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 52bf8b5ac424b..fc07ad6fe8dbe 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 9b8edbb4095e4..d96f47c6761b4 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 956a2f37f4f50..d64690ffd62eb 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -7401,6 +7401,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/file_upload_handler.ts" @@ -14530,6 +14534,14 @@ "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts" }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts" + }, { "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.test.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index a8c3ab53cdbc4..9e3387ae1b866 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 4b76b37db2d3b..d254d271c0717 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 fc32e33f0b3b8..f41eb6d5c8770 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 86776f11019d4..1e52083fff343 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 1cb6608c45933..67476503485a6 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 10621ef37eaee..bfbaf3c240efd 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2023-06-15 +date: 2023-06-16 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 bc0739c6ed80a..17a7ca15eb530 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 a9f8a37e2e73c..05da25617624d 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 369b4fad13011..87e5ec1bb6b8a 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 2220753a64c22..890a7d8177e02 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 53faedbc8e74a..555f3a0e8bbfa 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_core_lifecycle_browser.devdocs.json index b9ca527e96f1d..45db59bc3016f 100644 --- a/api_docs/kbn_core_lifecycle_browser.devdocs.json +++ b/api_docs/kbn_core_lifecycle_browser.devdocs.json @@ -593,10 +593,6 @@ "plugin": "dashboard", "path": "src/plugins/dashboard/public/dashboard_actions/index.ts" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, { "plugin": "lens", "path": "x-pack/plugins/lens/public/datasources/form_based/form_based.tsx" @@ -649,38 +645,6 @@ "plugin": "transform", "path": "x-pack/plugins/transform/public/app/mount_management_section.ts" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, { "plugin": "discover", "path": "src/plugins/discover/public/application/main/services/discover_state.test.ts" diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index 500476d02a962..9ef6ee0542522 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 ae309b4597255..e8d838e80e712 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 db5f9ad858b73..91385f0b221ee 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2023-06-15 +date: 2023-06-16 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 3df93d42e3be4..95fac0656d440 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 d3d2f544f9120..a409f931834b1 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 0b48b41e88891..7f7d25e9c0888 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 a308f396934fa..80692c45f8329 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2023-06-15 +date: 2023-06-16 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 dff290cb9622c..329cc7af9c562 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 614e46b18fa41..1d8b773edad76 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 195ea82071735..f3a2d5654aa94 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 4fffc83e28ae8..612b803b2f007 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 2763adb39b176..400ff855cf017 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2023-06-15 +date: 2023-06-16 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 d0464cf24ba1b..25816db97fc16 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 6ab9d5e6dc791..007d390007f79 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 7cb5d7714d8f7..456c212dfd89d 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 d88dd0632a4a0..9d956ee92abe5 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2023-06-15 +date: 2023-06-16 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 8e4e7a6d1aebb..97ea4eafba4f9 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 cb04d2733f6a8..1a5df8ad10007 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_core_notifications_browser.devdocs.json index 3f14a12b02887..6d53259b76fec 100644 --- a/api_docs/kbn_core_notifications_browser.devdocs.json +++ b/api_docs/kbn_core_notifications_browser.devdocs.json @@ -736,7 +736,7 @@ "signature": [ "Pick<", "Toast", - ", \"prefix\" | \"defaultValue\" | \"children\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"css\" | \"iconType\" | \"onClose\" | \"toastLifeTimeMs\"> & { title?: string | ", + ", \"prefix\" | \"defaultValue\" | \"security\" | \"children\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"css\" | \"iconType\" | \"onClose\" | \"toastLifeTimeMs\"> & { title?: string | ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", @@ -795,7 +795,7 @@ "signature": [ "Pick<", "Toast", - ", \"prefix\" | \"defaultValue\" | \"children\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"css\" | \"iconType\" | \"onClose\" | \"toastLifeTimeMs\"> & { title?: string | ", + ", \"prefix\" | \"defaultValue\" | \"security\" | \"children\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"data-test-subj\" | \"css\" | \"iconType\" | \"onClose\" | \"toastLifeTimeMs\"> & { title?: string | ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 96b675fd99844..1bc37c8da75b9 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 d96a0295b99bf..f311d1ffc0f91 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 9831d9af25cd3..884322e4ad923 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 1a1e95d70f132..54cffc4f4d35a 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 05d0928ecac6c..5dea2e2eaa078 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 ef2d0584701f7..6d218d9f1ee5a 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 9d8dda4e6af9c..3d1d2964e62d2 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 61b3e2bf8fb37..64f5eec669305 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 22ac6f0cb3c38..2da1714f3c652 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2023-06-15 +date: 2023-06-16 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 49b60be233c05..e3b611b1439c5 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 39ad61ae5ec41..5eda9b48d4f67 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2023-06-15 +date: 2023-06-16 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 667c9426a75e7..87a53f900dd1b 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 5699bd8a5f7bb..38529bbefe47d 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 582dfb9a729ae..527eff6ee9d82 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 c7e4ab7b740dc..5f0651c5a5aeb 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 1b8d21ce90f0a..7b8dd30fcab07 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_core_saved_objects_api_browser.devdocs.json index 166b69b09ea3b..ba0bb1097c8d0 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.devdocs.json +++ b/api_docs/kbn_core_saved_objects_api_browser.devdocs.json @@ -970,14 +970,6 @@ "plugin": "visualizations", "path": "src/plugins/visualizations/public/plugin.ts" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/util/dependency_cache.ts" @@ -1130,18 +1122,6 @@ "plugin": "dashboard", "path": "src/plugins/dashboard/public/dashboard_actions/clone_panel_action.tsx" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, { "plugin": "savedObjects", "path": "src/plugins/saved_objects/public/saved_object/saved_object.test.ts" @@ -1341,10 +1321,6 @@ "plugin": "home", "path": "src/plugins/home/public/application/components/home_app.js" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_client.ts" @@ -1583,14 +1559,6 @@ "plugin": "@kbn/core-saved-objects-browser-mocks", "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_client.ts" @@ -1715,14 +1683,6 @@ "plugin": "dashboard", "path": "src/plugins/dashboard/public/dashboard_actions/clone_panel_action.tsx" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/jobs/new_job/recognize/resolvers.ts" @@ -1739,14 +1699,6 @@ "plugin": "ml", "path": "x-pack/plugins/ml/public/application/services/dashboard_service.test.ts" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, { "plugin": "savedObjects", "path": "src/plugins/saved_objects/public/saved_object/saved_object.test.ts" @@ -1847,10 +1799,6 @@ "plugin": "dashboard", "path": "src/plugins/dashboard/public/dashboard_actions/clone_panel_action.tsx" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/components/custom_urls/custom_url_editor/utils.ts" @@ -1867,10 +1815,6 @@ "plugin": "monitoring", "path": "x-pack/plugins/monitoring/public/application/pages/elasticsearch/ingest_pipeline_modal.tsx" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, { "plugin": "savedObjects", "path": "src/plugins/saved_objects/public/saved_object/saved_object.test.ts" @@ -2322,14 +2266,6 @@ "plugin": "@kbn/core-saved-objects-browser-mocks", "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, { "plugin": "savedObjects", "path": "src/plugins/saved_objects/public/saved_object/saved_object.test.ts" @@ -2896,14 +2832,6 @@ { "plugin": "@kbn/core", "path": "src/core/public/index.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.test.ts" } ], "children": [ @@ -3171,18 +3099,6 @@ "plugin": "visualizations", "path": "src/plugins/visualizations/public/vis_types/vis_type_alias_registry.ts" }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, - { - "plugin": "eventAnnotation", - "path": "src/plugins/event_annotation/public/event_annotation_service/service.tsx" - }, { "plugin": "aiops", "path": "x-pack/plugins/aiops/public/application/utils/search_utils.ts" diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index db2e9780274d2..1ffb6d9adfe6a 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 41ed658ce61f7..d9bb9350422b0 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2023-06-15 +date: 2023-06-16 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 00a5cbcd5f03e..d776d06e894c4 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 5a72abcf3275b..ea3637fa726ae 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 7c8d9552d4ece..8184a3d814690 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 d90e04de076b3..e64be798cb170 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 ebd211f1a2bd5..e273dffaab0f2 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 2f8a5804ffa43..3381c21c6dcc8 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 a943cc37f5f28..6f7d59e0605f7 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2023-06-15 +date: 2023-06-16 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 8313c390e32d0..fdffc6be2a413 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 1392ddcc973e6..7b636268d1691 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json index 90d05c7e65438..0d4ecbd83c28f 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json @@ -2390,37 +2390,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -2514,7 +2484,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -2938,6 +2934,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -3342,6 +3340,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", 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 2e250fe19dd2e..7d0a2c7b1f55c 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 ae900f80b9e05..e8b20692728df 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 78510817722f1..54cec8fc9730e 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2023-06-15 +date: 2023-06-16 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 8bf72b01bca0b..ef506e50631ba 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 3739f379e54a2..cc5b249f27d94 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 8b8307e3e24ff..006f208bd3d07 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index c42a8c1bf3a03..ea0e8e7f2eee3 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index e924634690c41..d9dabd05667a1 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 6f94387c39a9c..e90f34ca606de 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2023-06-15 +date: 2023-06-16 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 656bbd556ba29..417f2d132d265 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 b7ce3286f807f..de49d96b9b35b 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 48544058d82a3..08a4978e386c0 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2023-06-15 +date: 2023-06-16 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 e4e9e3e35239b..ccec04e7117ec 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 bca78c3ed19fc..05065d647c140 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 4bf8f3aa0a9c4..c42560c6e0b8d 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2023-06-15 +date: 2023-06-16 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 8971a25b2298e..e96c826ff529e 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 cc5321bfaf970..fe97ea2ad21c3 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 0d01e42382e7c..37e53f693e41f 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 a97edb25ebfc1..36293887ed045 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 11d64296e4431..d45aee34d9d28 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2023-06-15 +date: 2023-06-16 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 4f63772a8e261..62dcd8bbb3f64 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 f008951a795dc..d3fceca488bf5 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index b0aa328d0aa9f..972516d8bc430 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2023-06-15 +date: 2023-06-16 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 c46da247c3e0a..c8c7fa0968180 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index d11baf78ffb33..650f82a793259 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 013221168eea9..7557c28befcb3 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 fce4ed422c205..097735204d0b2 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2023-06-15 +date: 2023-06-16 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 95178e0c45595..0c56236f21c39 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 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 6b59a7e62bef5..90fdc301ecbb2 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index d8082df8a08f8..f0d6eae13ae41 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index 1a449dddd7dbd..d4fef6c676b63 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 09ff0971f5a33..4714588b6fbbf 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 9bb32df730b8d..787256e182cb5 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2023-06-15 +date: 2023-06-16 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 d69d63903941e..2a40b4732b0a5 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index b882218b54924..8b9aa9d893455 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index e8e73ec6fff94..da82bcd091275 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2023-06-15 +date: 2023-06-16 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 3c6b44f8a3d02..8c6464faf8086 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2023-06-15 +date: 2023-06-16 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 08da458e64c43..1efddbc268726 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.devdocs.json b/api_docs/kbn_deeplinks_management.devdocs.json index ccecd354f4460..9132a4b8b3809 100644 --- a/api_docs/kbn_deeplinks_management.devdocs.json +++ b/api_docs/kbn_deeplinks_management.devdocs.json @@ -62,7 +62,7 @@ "label": "LinkId", "description": [], "signature": [ - "\"cases\" | \"tags\" | \"transform\" | \"watcher\" | \"settings\" | \"dataViews\" | \"spaces\" | \"reporting\" | \"rollup_jobs\" | \"snapshot_restore\" | \"api_keys\" | \"cross_cluster_replication\" | \"index_lifecycle_management\" | \"index_management\" | \"ingest_pipelines\" | \"jobsListLink\" | \"objects\" | \"pipelines\" | \"remote_clusters\" | \"triggersActions\" | \"triggersActionsConnectors\"" + "\"transform\" | \"watcher\" | \"cases\" | \"tags\" | \"settings\" | \"dataViews\" | \"spaces\" | \"reporting\" | \"rollup_jobs\" | \"snapshot_restore\" | \"api_keys\" | \"cross_cluster_replication\" | \"index_lifecycle_management\" | \"index_management\" | \"ingest_pipelines\" | \"jobsListLink\" | \"objects\" | \"pipelines\" | \"remote_clusters\" | \"triggersActions\" | \"triggersActionsConnectors\"" ], "path": "packages/deeplinks/management/deep_links.ts", "deprecated": false, diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index ce497d04f14fb..265d85b6c821e 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.devdocs.json b/api_docs/kbn_deeplinks_ml.devdocs.json index 1d51f97ddb14e..cece82529cc09 100644 --- a/api_docs/kbn_deeplinks_ml.devdocs.json +++ b/api_docs/kbn_deeplinks_ml.devdocs.json @@ -45,7 +45,7 @@ "label": "DeepLinkId", "description": [], "signature": [ - "\"ml\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:singleMetricViewer\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:explainLogRateSpikes\" | \"ml:logPatternAnalysis\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:memoryUsage\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\"" + "\"ml\" | \"ml:nodes\" | \"ml:notifications\" | \"ml:overview\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:singleMetricViewer\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:explainLogRateSpikes\" | \"ml:logPatternAnalysis\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:memoryUsage\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\"" ], "path": "packages/deeplinks/ml/deep_links.ts", "deprecated": false, @@ -60,7 +60,7 @@ "label": "LinkId", "description": [], "signature": [ - "\"notifications\" | \"nodes\" | \"overview\" | \"settings\" | \"dataVisualizer\" | \"anomalyDetection\" | \"anomalyExplorer\" | \"singleMetricViewer\" | \"dataFrameAnalytics\" | \"resultExplorer\" | \"analyticsMap\" | \"aiOps\" | \"explainLogRateSpikes\" | \"logPatternAnalysis\" | \"changePointDetections\" | \"modelManagement\" | \"nodesOverview\" | \"memoryUsage\" | \"fileUpload\" | \"indexDataVisualizer\" | \"calendarSettings\" | \"filterListsSettings\"" + "\"nodes\" | \"notifications\" | \"overview\" | \"settings\" | \"dataVisualizer\" | \"anomalyDetection\" | \"anomalyExplorer\" | \"singleMetricViewer\" | \"dataFrameAnalytics\" | \"resultExplorer\" | \"analyticsMap\" | \"aiOps\" | \"explainLogRateSpikes\" | \"logPatternAnalysis\" | \"changePointDetections\" | \"modelManagement\" | \"nodesOverview\" | \"memoryUsage\" | \"fileUpload\" | \"indexDataVisualizer\" | \"calendarSettings\" | \"filterListsSettings\"" ], "path": "packages/deeplinks/ml/deep_links.ts", "deprecated": false, diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index dab7985ec87c5..44a9bdc90adfc 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2023-06-15 +date: 2023-06-16 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 d65c6d686db60..f972e8bb4aaa8 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2023-06-15 +date: 2023-06-16 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 a3b2a4b3acbc2..1f58316d5a9e6 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 76b62d36d933f..4fc3a8bc9ebbe 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2023-06-15 +date: 2023-06-16 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 1a6a97c78bc7f..a2ac04726a9c6 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_default_nav_management.devdocs.json index c6b1e4a5911ed..36be968bcbfc7 100644 --- a/api_docs/kbn_default_nav_management.devdocs.json +++ b/api_docs/kbn_default_nav_management.devdocs.json @@ -108,7 +108,7 @@ "label": "NavigationID", "description": [], "signature": [ - "\"kibana\" | \"ingest\" | \"data\" | \"root\" | \"rootNav:management\" | \"integration_management\" | \"stack_management\" | \"alerts_and_insights\"" + "\"ingest\" | \"kibana\" | \"data\" | \"root\" | \"rootNav:management\" | \"integration_management\" | \"stack_management\" | \"alerts_and_insights\"" ], "path": "packages/default-nav/management/default_navigation.ts", "deprecated": false, diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index 1273f0bd7a889..1a3414a6a14b3 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2023-06-15 +date: 2023-06-16 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 380c19df43d55..386fffbe07987 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2023-06-15 +date: 2023-06-16 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 00e2d1e5591ac..4070d924f8691 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2023-06-15 +date: 2023-06-16 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 171ef8b530877..38b24f47526f4 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2023-06-15 +date: 2023-06-16 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 e2cdaa7cb43c3..7200b53685a77 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2023-06-15 +date: 2023-06-16 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 4cd220995558b..5932353b1e226 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.devdocs.json b/api_docs/kbn_doc_links.devdocs.json index 71b3fbcd2baf7..2b1c0b9285f20 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -300,7 +300,7 @@ "label": "enterpriseSearch", "description": [], "signature": [ - "{ readonly apiKeys: string; readonly behavioralAnalytics: string; readonly behavioralAnalyticsCORS: string; readonly behavioralAnalyticsEvents: string; readonly buildConnector: string; readonly bulkApi: string; readonly configuration: string; readonly connectors: string; readonly connectorsAzureBlobStorage: string; readonly connectorsClients: string; readonly connectorsConfluence: string; readonly connectorsGoogleCloudStorage: string; readonly connectorsJira: string; readonly connectorsMicrosoftSQL: string; readonly connectorsMongoDB: string; readonly connectorsMySQL: string; readonly connectorsNative: string; readonly connectorsNetworkDrive: string; readonly connectorsOracle: string; readonly connectorsPostgreSQL: string; readonly connectorsS3: string; readonly connectorsSharepoint: string; readonly connectorsSharepointOnline: string; readonly connectorsWorkplaceSearch: string; readonly crawlerExtractionRules: string; readonly crawlerManaging: string; readonly crawlerOverview: string; readonly deployTrainedModels: string; readonly documentLevelSecurity: string; readonly elser: string; readonly engines: string; readonly indexApi: string; readonly ingestionApis: string; readonly ingestPipelines: string; readonly languageAnalyzers: string; readonly languageClients: string; readonly licenseManagement: string; readonly machineLearningStart: string; readonly mailService: string; readonly mlDocumentEnrichment: string; readonly searchApplications: string; readonly searchTemplates: string; readonly start: string; readonly syncRules: string; readonly troubleshootSetup: string; readonly usersAccess: string; }" + "{ readonly apiKeys: string; readonly behavioralAnalytics: string; readonly behavioralAnalyticsCORS: string; readonly behavioralAnalyticsEvents: string; readonly buildConnector: string; readonly bulkApi: string; readonly configuration: string; readonly connectors: string; readonly connectorsAzureBlobStorage: string; readonly connectorsClients: string; readonly connectorsConfluence: string; readonly connectorsGoogleCloudStorage: string; readonly connectorsJira: string; readonly connectorsMicrosoftSQL: string; readonly connectorsMongoDB: string; readonly connectorsMySQL: string; readonly connectorsNative: string; readonly connectorsNetworkDrive: string; readonly connectorsOracle: string; readonly connectorsPostgreSQL: string; readonly connectorsS3: string; readonly connectorsSharepoint: string; readonly connectorsSharepointOnline: string; readonly connectorsWorkplaceSearch: string; readonly crawlerExtractionRules: string; readonly crawlerManaging: string; readonly crawlerOverview: string; readonly deployTrainedModels: string; readonly documentLevelSecurity: string; readonly elser: string; readonly engines: string; readonly indexApi: string; readonly ingestionApis: string; readonly ingestPipelines: string; readonly languageAnalyzers: string; readonly languageClients: string; readonly licenseManagement: string; readonly machineLearningStart: string; readonly mailService: string; readonly mlDocumentEnrichment: string; readonly searchApplicationsTemplates: string; readonly searchApplications: string; readonly searchTemplates: string; readonly start: string; readonly syncRules: string; readonly troubleshootSetup: string; readonly usersAccess: string; }" ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 34841bdae3255..c5de418e60071 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2023-06-15 +date: 2023-06-16 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 ef8e9d61c4f7b..cbbee79da6cf3 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 f0de1710448d1..f789b0e6000da 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2023-06-15 +date: 2023-06-16 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 8f9099cc8db10..d348bae2b1255 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index 28973b1ef5c81..cfa5297bbb38a 100644 --- a/api_docs/kbn_ecs.mdx +++ b/api_docs/kbn_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs title: "@kbn/ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index fae78496ed958..3e5b749a27938 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 2bad965484582..dcc3b70674eca 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 306e1f25dcac6..8be4d53350e4c 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2023-06-15 +date: 2023-06-16 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 4363351eb14b6..c5e341fa36064 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2023-06-15 +date: 2023-06-16 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 f2951b41bdfaf..b56d60b4c4427 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.devdocs.json b/api_docs/kbn_es_query.devdocs.json index 907f96c6e99dd..5155512ed1399 100644 --- a/api_docs/kbn_es_query.devdocs.json +++ b/api_docs/kbn_es_query.devdocs.json @@ -5328,7 +5328,7 @@ "label": "function", "description": [], "signature": [ - "\"nested\" | \"is\" | \"exists\" | \"range\" | \"and\" | \"or\" | \"not\"" + "\"nested\" | \"exists\" | \"is\" | \"range\" | \"and\" | \"or\" | \"not\"" ], "path": "packages/kbn-es-query/src/kuery/node_types/types.ts", "deprecated": false, diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 448d5519d9210..fdf124e2dccdf 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2023-06-15 +date: 2023-06-16 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 502b3597d6826..154d1c2270ea5 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2023-06-15 +date: 2023-06-16 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 8cbb01176e0a6..390c78ab0b042 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index 9569dcaabb6dc..bf3b688be59d2 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2023-06-15 +date: 2023-06-16 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 3d368c07cf9ab..612ae6cd90096 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index be2ef60ee44d4..fb1f1f306c01a 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2023-06-15 +date: 2023-06-16 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 1facd1b459d06..f40a6f283c936 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 36f27c2420ac1..dad68d86ea5bd 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index aa7988499d57f..8666a5b5a7d56 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx index 8c0fee4b6eb49..2aa4a52881542 100644 --- a/api_docs/kbn_generate_csv_types.mdx +++ b/api_docs/kbn_generate_csv_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types title: "@kbn/generate-csv-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv-types plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types'] --- import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 6fbc94ef531f3..1509e96a7b8bc 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2023-06-15 +date: 2023-06-16 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 646ce63fc703a..8a0754549af52 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2023-06-15 +date: 2023-06-16 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 bc141c1bc7e1e..c4743e274d0fc 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 1898fcca91017..ff708b0974fe9 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2023-06-15 +date: 2023-06-16 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 06f5c89e5c514..c169285d5c1fa 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2023-06-15 +date: 2023-06-16 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 6e21e634df231..9e46b306dd510 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2023-06-15 +date: 2023-06-16 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 5a0b374b0af4f..e57827a7558b0 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2023-06-15 +date: 2023-06-16 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 258ce15f7adb4..a784ed25b318a 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2023-06-15 +date: 2023-06-16 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 2fad9dad53f86..634c9b75b87f3 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 89170bd292e39..0b749c9498ccd 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2023-06-15 +date: 2023-06-16 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 8b5bc705ed196..c67119f52062a 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 92c4a4963c9f5..b2acad719b539 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 656b95c127600..763fda24eaf20 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2023-06-15 +date: 2023-06-16 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 d298205041269..03e57eca0b7b4 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2023-06-15 +date: 2023-06-16 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 5e78b0fbcc40c..ec47a8182eddb 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index bfced8285cb3a..a3b46272f46da 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index 77efc2bd19fe6..a79138affb03d 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 4e6f26b9e5bcd..bc94635277531 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2023-06-15 +date: 2023-06-16 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 4bd6ae980786e..11d3018d3fb16 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index f88c9bbe10e97..00c96fb6b242e 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 5eb8fc616c13a..0787ebe396223 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2023-06-15 +date: 2023-06-16 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 209c4ffff338d..452b64f9c79b1 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 8723f5a2acbbd..9bec391183afe 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 1f37d834fa6e3..531ac990cf073 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2023-06-15 +date: 2023-06-16 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_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 9c0a24b37fcc2..27ef8f5433d2b 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 bafbd592a6d23..a5c56460da3f5 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2023-06-15 +date: 2023-06-16 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 3155060a85603..79f26a0b2d9fa 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2023-06-15 +date: 2023-06-16 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 94d56a7057f39..4bcc3877a974b 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 df791f5d3992e..536f5f4f6f5d4 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index df14894e52300..6d13515bfa48a 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2023-06-15 +date: 2023-06-16 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 e4250e03c8f37..a019a967aee99 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index a69ddd888e206..7f6596338f0a2 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index f6bdd028d2f22..f30be2833bb56 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2023-06-15 +date: 2023-06-16 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 af5e657a43fa1..e374f05f683e4 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2023-06-15 +date: 2023-06-16 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 449c69fe1b0ae..6d7bddeef5550 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index f20ff8a5babda..8e8552451bb57 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 e6edc1bef446f..85e22e8086b77 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 76154a0db0315..fa3f8d32ef4e1 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 11403521c5b52..15513250b51e5 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 d226476abb5cf..4f581cb71babb 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index c079ce1c8247d..e2731f87ed57c 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 2d0de1ef9a349..efd107131d599 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 52000d16601fc..5f5510c05f5da 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 76e101ac05bf5..3260455ade589 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index ab9885df00db1..4e55d47b91c28 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 04faeb412eb8c..b0ba1334651b3 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2023-06-15 +date: 2023-06-16 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 870e7ee9b6cf6..f3ac10d8f6448 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2023-06-15 +date: 2023-06-16 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 3079941acf6e6..ce5b674e8bdd3 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 2e757a9dc58db..7aff681cefe6d 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index b9b53fdc2892b..722286e59224a 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2023-06-15 +date: 2023-06-16 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 f92bdd78620c4..c1e2b0987a2ea 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 48b9e2b48d705..ac025b263cf3e 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2023-06-15 +date: 2023-06-16 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 e93ccfc4e9cfb..8f14cbed928bb 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index de240e536b00f..8e199c416b004 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2023-06-15 +date: 2023-06-16 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 0cd27b80a29e4..7462d4dd1e5c7 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2023-06-15 +date: 2023-06-16 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 65e936e31dbf5..dd45ddcff9f89 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2023-06-15 +date: 2023-06-16 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 d648be39464dc..595153f98f343 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2023-06-15 +date: 2023-06-16 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 cfc9c57adf84e..653a18d7e7767 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 2f688b6a77836..2031090eece6d 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index dfc5e133aecb3..b3f342da9ec4a 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 4a11636b0384d..a9a36a1dc1820 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index dfb42df4a4fba..68f29c4e66fab 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2023-06-15 +date: 2023-06-16 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 cc869c6fba6df..d12d64653be05 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index de84adf297c81..3e89a266d430f 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2023-06-15 +date: 2023-06-16 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 057b101bb0a9f..3cd84edbb41bd 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 97a183f314e36..d1ea7d3802c66 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.devdocs.json b/api_docs/kbn_securitysolution_es_utils.devdocs.json index 2d9d633bd644e..680d3d4baf7bf 100644 --- a/api_docs/kbn_securitysolution_es_utils.devdocs.json +++ b/api_docs/kbn_securitysolution_es_utils.devdocs.json @@ -622,37 +622,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; asyncSearch: ", "default", @@ -742,7 +712,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -1166,6 +1162,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -1570,6 +1568,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -1894,37 +1894,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; asyncSearch: ", "default", @@ -2014,7 +1984,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -2438,6 +2434,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -2842,6 +2840,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index a86f4b41a8b36..9d7e989441fe6 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index df4ae38aaea44..f2f05a916f6fb 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index 15ceec3c74e2b..bf51132398b1b 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index b820cf2f86d7d..08249f73cb352 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 b04b22b66038f..48de65eefa4f4 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json index 44e52b99ed031..5dc5e1d380969 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json +++ b/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json @@ -3020,7 +3020,7 @@ "label": "CreateListSchemaDecoded", "description": [], "signature": [ - "{ type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; id: string | undefined; name: string; description: string; meta: object | undefined; serializer: string | undefined; deserializer: string | undefined; } & { version: number; }" + "{ type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; id: string | undefined; name: string; serializer: string | undefined; description: string; meta: object | undefined; deserializer: string | undefined; } & { version: number; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/create_list_schema/index.ts", "deprecated": false, diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 3d289e8be2076..41dca3d9f0416 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_securitysolution_io_ts_types.devdocs.json index c531e145c46ea..129f5d47b66b3 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.devdocs.json +++ b/api_docs/kbn_securitysolution_io_ts_types.devdocs.json @@ -1010,6 +1010,24 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/securitysolution-io-ts-types", + "id": "def-common.NumberBetweenZeroAndOneInclusive", + "type": "Object", + "tags": [], + "label": "NumberBetweenZeroAndOneInclusive", + "description": [ + "\nTypes a number between 0 and 1 inclusive. Useful for specifying a probability, weighting, etc." + ], + "signature": [ + "Type", + "" + ], + "path": "packages/kbn-securitysolution-io-ts-types/src/number_between_zero_and_one_inclusive/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/securitysolution-io-ts-types", "id": "def-common.OnlyFalseAllowed", diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 0c9a60efa954b..5c3f4a0401518 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-detection-engine](https://github.com/orgs/elastic/tea | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 66 | 0 | 37 | 0 | +| 67 | 0 | 37 | 0 | ## Common diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 507babe054d55..12be71179a0ee 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 4bccea65b8b8f..850b6769502fe 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2023-06-15 +date: 2023-06-16 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 9e50f0b21b33c..8f8a91e9f1558 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2023-06-15 +date: 2023-06-16 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 23bb0de0e0276..68c874a75da60 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2023-06-15 +date: 2023-06-16 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 ffdde97654a15..e6a1d50f54f7b 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 3aa074d1d18b5..b7bc650fc2aef 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2023-06-15 +date: 2023-06-16 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 84d8bc6ad7f9d..39162db19c6ec 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2023-06-15 +date: 2023-06-16 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 a6eba2f964bb6..94cace6335474 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2023-06-15 +date: 2023-06-16 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 ae3a3fc41320a..8ac3c94067d5b 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2023-06-15 +date: 2023-06-16 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 592a494a59eb8..21f91ff3f907b 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 8c117e4f3820a..5694ac9f7a811 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 5fe728e1785ca..061e2560161dd 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2023-06-15 +date: 2023-06-16 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 20021b45a5dee..763b8b1cb4340 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2023-06-15 +date: 2023-06-16 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 973f0038debcd..c7c81c6ce6439 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index 509b4a9ecfa22..12e405648cc4f 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index c35060a79a817..24f9e4bfad065 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 146e9f7f6fd83..f1035d86fc50f 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 2765bb702c63e..99a48c5210568 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_shared_ux_card_no_data.devdocs.json index 04fb0cf59f9c6..997afc6e58114 100644 --- a/api_docs/kbn_shared_ux_card_no_data.devdocs.json +++ b/api_docs/kbn_shared_ux_card_no_data.devdocs.json @@ -184,7 +184,7 @@ "\nProps for the `NoDataCard` sevice-connected component." ], "signature": [ - "{ prefix?: string | undefined; id?: string | undefined; defaultValue?: string | number | readonly string[] | undefined; children?: React.ReactNode; description?: React.ReactNode; category?: string | undefined; onChange?: React.FormEventHandler | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; className?: string | undefined; contentEditable?: Booleanish | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; lang?: string | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; security?: string | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"search\" | \"none\" | \"text\" | \"url\" | \"tel\" | \"email\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: Booleanish | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: Booleanish | undefined; 'aria-checked'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"page\" | \"date\" | \"time\" | \"true\" | \"false\" | \"step\" | \"location\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; 'aria-dropeffect'?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: Booleanish | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: boolean | \"dialog\" | \"menu\" | \"true\" | \"false\" | \"grid\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: Booleanish | undefined; 'aria-multiline'?: Booleanish | undefined; 'aria-multiselectable'?: Booleanish | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-readonly'?: Booleanish | undefined; 'aria-relevant'?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: Booleanish | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: Booleanish | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onError?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; hasBorder?: boolean | undefined; paddingSize?: \"m\" | \"none\" | \"s\" | \"xs\" | \"l\" | \"xl\" | undefined; 'data-test-subj'?: string | undefined; css?: ", + "{ prefix?: string | undefined; id?: string | undefined; defaultValue?: string | number | readonly string[] | undefined; security?: string | undefined; children?: React.ReactNode; description?: React.ReactNode; category?: string | undefined; onChange?: React.FormEventHandler | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; className?: string | undefined; contentEditable?: Booleanish | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; lang?: string | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"search\" | \"none\" | \"text\" | \"url\" | \"tel\" | \"email\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: Booleanish | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: Booleanish | undefined; 'aria-checked'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"page\" | \"date\" | \"time\" | \"true\" | \"false\" | \"step\" | \"location\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; 'aria-dropeffect'?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: Booleanish | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: boolean | \"dialog\" | \"menu\" | \"true\" | \"false\" | \"grid\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: Booleanish | undefined; 'aria-multiline'?: Booleanish | undefined; 'aria-multiselectable'?: Booleanish | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-readonly'?: Booleanish | undefined; 'aria-relevant'?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: Booleanish | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: Booleanish | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onError?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; hasBorder?: boolean | undefined; paddingSize?: \"m\" | \"none\" | \"s\" | \"xs\" | \"l\" | \"xl\" | undefined; 'data-test-subj'?: string | undefined; css?: ", "Interpolation", "<", "Theme", diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index b2c1e4864a0c6..b0c924613b03f 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2023-06-15 +date: 2023-06-16 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 5e202feb2ad59..7dcd9f1516c27 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 666192e111226..a8389531d16e0 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 4f2f13142ba94..d6a7d68f32d5b 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2023-06-15 +date: 2023-06-16 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 6a1bce5c8d3de..934a442cbccc4 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2023-06-15 +date: 2023-06-16 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 0f34f6453094f..a78eae571b460 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 606e25122141f..973e0da67b3dc 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 1c91322b61741..3c653639f1af0 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_shared_ux_file_types.devdocs.json index 6d27ce98cbc43..72aeca552caee 100644 --- a/api_docs/kbn_shared_ux_file_types.devdocs.json +++ b/api_docs/kbn_shared_ux_file_types.devdocs.json @@ -79,7 +79,7 @@ "\nFind a set of files given some filters.\n" ], "signature": [ - "(args: { kind?: string | string[] | undefined; kindToExclude?: string | string[] | undefined; status?: string | string[] | undefined; extension?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", + "(args: { kind?: string | string[] | undefined; kindToExclude?: string | string[] | undefined; status?: string | string[] | undefined; extension?: string | string[] | undefined; mimeType?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", { "pluginId": "@kbn/shared-ux-file-types", "scope": "common", @@ -119,7 +119,7 @@ "- File filters" ], "signature": [ - "{ kind?: string | string[] | undefined; kindToExclude?: string | string[] | undefined; status?: string | string[] | undefined; extension?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", + "{ kind?: string | string[] | undefined; kindToExclude?: string | string[] | undefined; status?: string | string[] | undefined; extension?: string | string[] | undefined; mimeType?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", { "pluginId": "@kbn/shared-ux-file-types", "scope": "common", @@ -374,7 +374,7 @@ "\nList all file objects, of a given {@link FileKindBrowser}.\n" ], "signature": [ - "(args: { kind: string; status?: string | string[] | undefined; extension?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", + "(args: { kind: string; status?: string | string[] | undefined; extension?: string | string[] | undefined; mimeType?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", { "pluginId": "@kbn/shared-ux-file-types", "scope": "common", @@ -414,7 +414,7 @@ "- list files args" ], "signature": [ - "{ kind: string; status?: string | string[] | undefined; extension?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", + "{ kind: string; status?: string | string[] | undefined; extension?: string | string[] | undefined; mimeType?: string | string[] | undefined; name?: string | string[] | undefined; meta?: M | undefined; } & ", { "pluginId": "@kbn/shared-ux-file-types", "scope": "common", diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 865a5af42d54c..3c931bf8ac780 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2023-06-15 +date: 2023-06-16 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 1807a39c2aabf..b54a46beb4527 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2023-06-15 +date: 2023-06-16 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 709b4d49043e0..46b79684f3991 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2023-06-15 +date: 2023-06-16 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 923684fb0202f..0192192b187b3 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2023-06-15 +date: 2023-06-16 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 dbdaeb2ef9888..f8a7d669dbe44 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 e8f0092b8768e..8ee3ed240c179 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json index 5347ac2720a9a..074dcd8a7da49 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json +++ b/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json @@ -433,7 +433,7 @@ "label": "getServices", "description": [], "signature": [ - "() => { prefix?: string | undefined; value?: string | undefined; id?: string | undefined; defaultValue?: string | number | readonly string[] | undefined; children?: React.ReactNode; onChange?: ((value: string) => void) | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; className?: string | undefined; contentEditable?: Booleanish | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; lang?: string | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: string | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; color?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; security?: string | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"search\" | \"none\" | \"text\" | \"url\" | \"tel\" | \"email\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: Booleanish | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: Booleanish | undefined; 'aria-checked'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"page\" | \"date\" | \"time\" | \"true\" | \"false\" | \"step\" | \"location\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; 'aria-dropeffect'?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: Booleanish | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: boolean | \"dialog\" | \"menu\" | \"true\" | \"false\" | \"grid\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: Booleanish | undefined; 'aria-multiline'?: Booleanish | undefined; 'aria-multiselectable'?: Booleanish | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-readonly'?: Booleanish | undefined; 'aria-relevant'?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: Booleanish | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: Booleanish | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onError?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; 'data-test-subj'?: string | undefined; css?: ", + "() => { prefix?: string | undefined; value?: string | undefined; id?: string | undefined; defaultValue?: string | number | readonly string[] | undefined; security?: string | undefined; children?: React.ReactNode; onChange?: ((value: string) => void) | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; className?: string | undefined; contentEditable?: Booleanish | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; lang?: string | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: string | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; color?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"search\" | \"none\" | \"text\" | \"url\" | \"tel\" | \"email\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: Booleanish | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: Booleanish | undefined; 'aria-checked'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"page\" | \"date\" | \"time\" | \"true\" | \"false\" | \"step\" | \"location\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; 'aria-dropeffect'?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: Booleanish | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: boolean | \"dialog\" | \"menu\" | \"true\" | \"false\" | \"grid\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: Booleanish | undefined; 'aria-multiline'?: Booleanish | undefined; 'aria-multiselectable'?: Booleanish | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-readonly'?: Booleanish | undefined; 'aria-relevant'?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: Booleanish | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: Booleanish | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onError?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; 'data-test-subj'?: string | undefined; css?: ", "Interpolation", "<", "Theme", diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index e6b29c974ac72..b6b73425379ae 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 3d5d8950ef580..787bb886bf851 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2023-06-15 +date: 2023-06-16 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 cd82f21d32bd8..14984d90e12da 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 0ace7ef8d9518..7889e70bf479f 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2023-06-15 +date: 2023-06-16 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 5c3737c497dd9..c242f9b15ba13 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 c90d775d7a305..8f214f9c2552f 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2023-06-15 +date: 2023-06-16 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 52d6643de0dfe..84185fdacaca0 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 187f081b703d3..330dbeedd0815 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2023-06-15 +date: 2023-06-16 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 699457a91545c..5b43391e5813b 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2023-06-15 +date: 2023-06-16 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 8edc97d7040a0..d7f509d02b32c 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 eca563a796082..1baec1f11ae30 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 64b5c523feb5f..5981372f35407 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2023-06-15 +date: 2023-06-16 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 f9c0910fb33e5..36aac9188eeee 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2023-06-15 +date: 2023-06-16 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 78ff2d66440f3..a990a6b052d19 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 fdcfd91fa74d6..cc20cd67a7888 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2023-06-15 +date: 2023-06-16 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 c404ac5bead6f..baca65b128616 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2023-06-15 +date: 2023-06-16 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 d244d85bd37a6..6a284a6c4a2af 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2023-06-15 +date: 2023-06-16 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 61f2e3f52bdd8..df3e70145e1a3 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2023-06-15 +date: 2023-06-16 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 289e452028637..21861b3153d66 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 9dce3ebc96c6a..524e35bd37090 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2023-06-15 +date: 2023-06-16 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 81efc63acb8ef..c29cfd8629fea 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -413,36 +413,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.APMTransactionDurationIndicatorSchema", - "type": "Type", - "tags": [], - "label": "APMTransactionDurationIndicatorSchema", - "description": [], - "signature": [ - "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.APMTransactionErrorRateIndicatorSchema", - "type": "Type", - "tags": [], - "label": "APMTransactionErrorRateIndicatorSchema", - "description": [], - "signature": [ - "{ type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.BudgetingMethod", @@ -717,6 +687,36 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.GetPreviewDataParams", + "type": "Type", + "tags": [], + "label": "GetPreviewDataParams", + "description": [], + "signature": [ + "{ indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: { name: string; aggregation: \"sum\"; field: string; }[]; equation: string; }; total: { metrics: { name: string; aggregation: \"sum\"; field: string; }[]; equation: string; }; timestampField: string; }; }; }" + ], + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.GetPreviewDataResponse", + "type": "Type", + "tags": [], + "label": "GetPreviewDataResponse", + "description": [], + "signature": [ + "{ date: Date; sliValue: number; }[]" + ], + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.GetSLOResponse", @@ -749,10 +749,25 @@ }, { "parentPluginId": "@kbn/slo-schema", - "id": "def-common.KQLCustomIndicatorSchema", + "id": "def-common.Indicator", "type": "Type", "tags": [], - "label": "KQLCustomIndicatorSchema", + "label": "Indicator", + "description": [], + "signature": [ + "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: { name: string; aggregation: \"sum\"; field: string; }[]; equation: string; }; total: { metrics: { name: string; aggregation: \"sum\"; field: string; }[]; equation: string; }; timestampField: string; }; }" + ], + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.KQLCustomIndicator", + "type": "Type", + "tags": [], + "label": "KQLCustomIndicator", "description": [], "signature": [ "{ type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; }" @@ -779,10 +794,10 @@ }, { "parentPluginId": "@kbn/slo-schema", - "id": "def-common.MetricCustomIndicatorSchema", + "id": "def-common.MetricCustomIndicator", "type": "Type", "tags": [], - "label": "MetricCustomIndicatorSchema", + "label": "MetricCustomIndicator", "description": [], "signature": [ "{ type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: { name: string; aggregation: \"sum\"; field: string; }[]; equation: string; }; total: { metrics: { name: string; aggregation: \"sum\"; field: string; }[]; equation: string; }; timestampField: string; }; }" @@ -2472,6 +2487,182 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.getPreviewDataParamsSchema", + "type": "Object", + "tags": [], + "label": "getPreviewDataParamsSchema", + "description": [], + "signature": [ + "TypeC", + "<{ body: ", + "TypeC", + "<{ indicator: ", + "UnionC", + "<[", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", + "NumberC", + "; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionErrorRate\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.kql.custom\">; params: ", + "TypeC", + "<{ index: ", + "StringC", + "; filter: ", + "StringC", + "; good: ", + "StringC", + "; total: ", + "StringC", + "; timestampField: ", + "StringC", + "; }>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.metric.custom\">; params: ", + "TypeC", + "<{ index: ", + "StringC", + "; filter: ", + "StringC", + "; good: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ sum: boolean; }>; field: ", + "StringC", + "; }>>; equation: ", + "StringC", + "; }>; total: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ sum: boolean; }>; field: ", + "StringC", + "; }>>; equation: ", + "StringC", + "; }>; timestampField: ", + "StringC", + "; }>; }>]>; }>; }>" + ], + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.getPreviewDataResponseSchema", + "type": "Object", + "tags": [], + "label": "getPreviewDataResponseSchema", + "description": [], + "signature": [ + "ArrayC", + "<", + "TypeC", + "<{ date: ", + "Type", + "; sliValue: ", + "NumberC", + "; }>>" + ], + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.getSLODiagnosisParamsSchema", @@ -3270,6 +3461,26 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.previewDataSchema", + "type": "Object", + "tags": [], + "label": "previewDataSchema", + "description": [], + "signature": [ + "TypeC", + "<{ date: ", + "Type", + "; sliValue: ", + "NumberC", + "; }>" + ], + "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.rollingTimeWindowSchema", diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index f56f7cb123516..3579bd3291f64 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/team | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 111 | 0 | 111 | 0 | +| 115 | 0 | 115 | 0 | ## Common diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 52f7c20f5b72a..d0b91c2cb18a9 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index dfe95ae975dce..6770f3d760f6a 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2023-06-15 +date: 2023-06-16 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 2df60cb3bc2d0..08e9eaf18ed21 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2023-06-15 +date: 2023-06-16 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 acfc69c8fa33d..a25fda90ec3d0 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 9a8f9ed9269d7..a89dabb6d1e18 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2023-06-15 +date: 2023-06-16 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 a2ca06208e1b3..54fcfc8eb9a34 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 995bdfbe4c454..0a635c27b5ab4 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2023-06-15 +date: 2023-06-16 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 1250a405ee442..d09cc04d1d171 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index e493e95736a8d..be04dda89d3a1 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 4953fae7a789d..424807bda1fad 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 4676ef4246317..2f1457de948d3 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2023-06-15 +date: 2023-06-16 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 4c1aaa4c0ddb5..c651ac63d7e68 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2023-06-15 +date: 2023-06-16 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 d8a5c2965121e..153fac4f47318 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2023-06-15 +date: 2023-06-16 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.devdocs.json b/api_docs/kbn_ui_shared_deps_src.devdocs.json index 42ecc92a2e16d..074c163f57300 100644 --- a/api_docs/kbn_ui_shared_deps_src.devdocs.json +++ b/api_docs/kbn_ui_shared_deps_src.devdocs.json @@ -276,6 +276,17 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/ui-shared-deps-src", + "id": "def-common.externals.iots", + "type": "string", + "tags": [], + "label": "'io-ts'", + "description": [], + "path": "packages/kbn-ui-shared-deps-src/src/definitions.js", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/ui-shared-deps-src", "id": "def-common.externals.rxjs", diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index b1e55824724c0..48bddeb0859d7 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kiban | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 46 | 0 | 37 | 0 | +| 47 | 0 | 38 | 0 | ## Common diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 08bde5391cbb0..8b90f5c4ee120 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index f63c0af8d5108..b1be1bc7dd730 100644 --- a/api_docs/kbn_url_state.mdx +++ b/api_docs/kbn_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state title: "@kbn/url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/url-state plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 0c2cae17a6018..0ebccd83459f0 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2023-06-15 +date: 2023-06-16 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 832a71690d10c..c75063a2fd540 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2023-06-15 +date: 2023-06-16 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 43f8d37588c64..aec46e40654d0 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2023-06-15 +date: 2023-06-16 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 9038086fee422..99cff8162f432 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 217d5c74739ff..7fc6493922ba0 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 686c1e4826ed6..a1b64b5400f0c 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2023-06-15 +date: 2023-06-16 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 10eb621b5774f..934abfaba326e 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2023-06-15 +date: 2023-06-16 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 fb2b9900df84e..5fd9c1c6224bf 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2023-06-15 +date: 2023-06-16 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 35aa70dcaa67e..eafc945dcabdd 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2023-06-15 +date: 2023-06-16 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 a85a3d95cb5b4..8b82f29160178 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2023-06-15 +date: 2023-06-16 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 2be62e93d0d71..c3fa6040392b4 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2023-06-15 +date: 2023-06-16 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 b45b93b3444de..96e14e1efc74b 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2023-06-15 +date: 2023-06-16 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 3b75fefda7fe4..0e2cbb74b72b7 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.devdocs.json b/api_docs/lists.devdocs.json index 202a3b7effc1f..30c5fce02d391 100644 --- a/api_docs/lists.devdocs.json +++ b/api_docs/lists.devdocs.json @@ -4223,37 +4223,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -4347,7 +4317,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -4771,6 +4767,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -5175,6 +5173,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index a2b1bb7a44887..663091e907db3 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 54875161cb840..8e51b0553fa7b 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2023-06-15 +date: 2023-06-16 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 dadabbd995244..d0230e88b8589 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2023-06-15 +date: 2023-06-16 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 7b1460bd9969b..e69143af922f8 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 74862e8ef0039..b06feb6a4b34d 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 6a6550bf1e1dc..3d362e0d211c8 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2023-06-15 +date: 2023-06-16 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 da355385ac40f..cac0b37c59673 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2023-06-15 +date: 2023-06-16 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 7cee050056cd7..d8f35c98d538d 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2023-06-15 +date: 2023-06-16 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 e921baa6987e4..b9a8cdd4dc2f4 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index c7b4fbfc8f7cc..33aea72e68d2b 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2023-06-15 +date: 2023-06-16 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 4950bca4d1628..1340162eb2cdb 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -730,7 +730,7 @@ }, " | undefined; list: () => string[]; }; selectedAlertId?: string | undefined; } & ", "CommonProps", - " & { as?: \"div\" | undefined; } & _EuiFlyoutProps & Omit, HTMLDivElement>, keyof _EuiFlyoutProps> & Omit, HTMLDivElement>, \"key\" | keyof React.HTMLAttributes | \"css\"> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }, \"type\" | \"prefix\" | \"key\" | \"id\" | \"defaultValue\" | \"children\" | \"ref\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"title\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"paddingSize\" | \"data-test-subj\" | \"css\" | \"size\" | \"onClose\" | \"as\" | \"maxWidth\" | \"ownFocus\" | \"hideCloseButton\" | \"closeButtonProps\" | \"closeButtonPosition\" | \"maskProps\" | \"outsideClickCloses\" | \"side\" | \"pushMinBreakpoint\" | \"focusTrapProps\" | \"includeFixedHeadersInFocusTrap\">, \"type\" | \"prefix\" | \"key\" | \"id\" | \"defaultValue\" | \"alert\" | \"children\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"title\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"security\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"paddingSize\" | \"data-test-subj\" | \"css\" | \"alerts\" | \"size\" | \"onClose\" | \"as\" | \"maxWidth\" | \"ownFocus\" | \"hideCloseButton\" | \"closeButtonProps\" | \"closeButtonPosition\" | \"maskProps\" | \"outsideClickCloses\" | \"side\" | \"pushMinBreakpoint\" | \"focusTrapProps\" | \"includeFixedHeadersInFocusTrap\" | \"isInApp\" | \"observabilityRuleTypeRegistry\" | \"selectedAlertId\"> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }> & { readonly _result: ({ alert, alerts, isInApp, observabilityRuleTypeRegistry, onClose, selectedAlertId, }: AlertsFlyoutProps) => JSX.Element | null; }" + " & { as?: \"div\" | undefined; } & _EuiFlyoutProps & Omit, HTMLDivElement>, keyof _EuiFlyoutProps> & Omit, HTMLDivElement>, \"key\" | keyof React.HTMLAttributes | \"css\"> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }, \"type\" | \"prefix\" | \"key\" | \"id\" | \"defaultValue\" | \"security\" | \"children\" | \"ref\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"title\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"paddingSize\" | \"data-test-subj\" | \"css\" | \"size\" | \"onClose\" | \"as\" | \"maxWidth\" | \"ownFocus\" | \"hideCloseButton\" | \"closeButtonProps\" | \"closeButtonPosition\" | \"maskProps\" | \"outsideClickCloses\" | \"side\" | \"pushMinBreakpoint\" | \"focusTrapProps\" | \"includeFixedHeadersInFocusTrap\">, \"type\" | \"prefix\" | \"key\" | \"id\" | \"defaultValue\" | \"security\" | \"alert\" | \"children\" | \"onChange\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"className\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"hidden\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"title\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"color\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDown\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClick\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"paddingSize\" | \"data-test-subj\" | \"css\" | \"alerts\" | \"size\" | \"onClose\" | \"as\" | \"maxWidth\" | \"ownFocus\" | \"hideCloseButton\" | \"closeButtonProps\" | \"closeButtonPosition\" | \"maskProps\" | \"outsideClickCloses\" | \"side\" | \"pushMinBreakpoint\" | \"focusTrapProps\" | \"includeFixedHeadersInFocusTrap\" | \"isInApp\" | \"observabilityRuleTypeRegistry\" | \"selectedAlertId\"> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }> & { readonly _result: ({ alert, alerts, isInApp, observabilityRuleTypeRegistry, onClose, selectedAlertId, }: AlertsFlyoutProps) => JSX.Element | null; }" ], "path": "x-pack/plugins/observability/public/index.ts", "deprecated": false, @@ -4563,37 +4563,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -4687,7 +4657,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -5111,6 +5107,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -5515,6 +5513,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -5876,37 +5876,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -6000,7 +5970,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -6424,6 +6420,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -6828,6 +6826,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", @@ -8136,7 +8136,163 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ") | undefined; \"GET /internal/observability/slos/{id}/_diagnosis\": { endpoint: \"GET /internal/observability/slos/{id}/_diagnosis\"; params?: ", + ") | undefined; \"POST /internal/observability/slos/_preview\": { endpoint: \"POST /internal/observability/slos/_preview\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ indicator: ", + "UnionC", + "<[", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", + "NumberC", + "; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionErrorRate\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.kql.custom\">; params: ", + "TypeC", + "<{ index: ", + "StringC", + "; filter: ", + "StringC", + "; good: ", + "StringC", + "; total: ", + "StringC", + "; timestampField: ", + "StringC", + "; }>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.metric.custom\">; params: ", + "TypeC", + "<{ index: ", + "StringC", + "; filter: ", + "StringC", + "; good: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ sum: boolean; }>; field: ", + "StringC", + "; }>>; equation: ", + "StringC", + "; }>; total: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ sum: boolean; }>; field: ", + "StringC", + "; }>>; equation: ", + "StringC", + "; }>; timestampField: ", + "StringC", + "; }>; }>]>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: { name: string; aggregation: \"sum\"; field: string; }[]; equation: string; }; total: { metrics: { name: string; aggregation: \"sum\"; field: string; }[]; equation: string; }; timestampField: string; }; }; }; }; }) => Promise<{ date: Date; sliValue: number; }[]>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /internal/observability/slos/{id}/_diagnosis\": { endpoint: \"GET /internal/observability/slos/{id}/_diagnosis\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -8192,7 +8348,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"PUT /api/observability/slos/{id} 2023-05-22\": { endpoint: \"PUT /api/observability/slos/{id} 2023-05-22\"; params?: ", + "; \"PUT /api/observability/slos/{id} 2023-10-31\": { endpoint: \"PUT /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -8478,7 +8634,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"GET /api/observability/slos/{id} 2023-05-22\": { endpoint: \"GET /api/observability/slos/{id} 2023-05-22\"; params?: ", + "; \"GET /api/observability/slos/{id} 2023-10-31\": { endpoint: \"GET /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -8500,7 +8656,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"GET /api/observability/slos 2023-05-22\": { endpoint: \"GET /api/observability/slos 2023-05-22\"; params?: ", + "; \"GET /api/observability/slos 2023-10-31\": { endpoint: \"GET /api/observability/slos 2023-10-31\"; params?: ", "PartialC", "<{ query: ", "PartialC", @@ -8564,7 +8720,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos/{id}/enable 2023-05-22\": { endpoint: \"POST /api/observability/slos/{id}/enable 2023-05-22\"; params?: ", + "; \"POST /api/observability/slos/{id}/enable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/enable 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -8586,7 +8742,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos/{id}/disable 2023-05-22\": { endpoint: \"POST /api/observability/slos/{id}/disable 2023-05-22\"; params?: ", + "; \"POST /api/observability/slos/{id}/disable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/disable 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -8608,7 +8764,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"DELETE /api/observability/slos/{id} 2023-05-22\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-05-22\"; params?: ", + "; \"DELETE /api/observability/slos/{id} 2023-10-31\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -8630,7 +8786,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos 2023-05-22\": { endpoint: \"POST /api/observability/slos 2023-05-22\"; params?: ", + "; \"POST /api/observability/slos 2023-10-31\": { endpoint: \"POST /api/observability/slos 2023-10-31\"; params?: ", "TypeC", "<{ body: ", "IntersectionC", @@ -8918,7 +9074,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-05-22\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-05-22\"; params?: ", + "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"; params?: ", "TypeC", "<{ query: ", "TypeC", @@ -8961,7 +9117,7 @@ "label": "ObservabilityConfig", "description": [], "signature": [ - "{ readonly coPilot?: Readonly<{} & { enabled: boolean; provider: Readonly<{} & { openAI: Readonly<{} & { apiKey: string; model: string; }>; }> | Readonly<{} & { azureOpenAI: Readonly<{} & { apiKey: string; resourceName: string; deploymentId: string; }>; }>; }> | undefined; readonly enabled: boolean; readonly annotations: Readonly<{} & { enabled: boolean; index: string; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly thresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" + "{ readonly coPilot?: Readonly<{} & { enabled: boolean; provider: Readonly<{} & { openAI: Readonly<{} & { apiKey: string; model: string; }>; }> | Readonly<{} & { azureOpenAI: Readonly<{} & { apiKey: string; resourceName: string; deploymentId: string; }>; }>; }> | undefined; readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly thresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" ], "path": "x-pack/plugins/observability/server/index.ts", "deprecated": false, @@ -9504,7 +9660,163 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ") | undefined; \"GET /internal/observability/slos/{id}/_diagnosis\": { endpoint: \"GET /internal/observability/slos/{id}/_diagnosis\"; params?: ", + ") | undefined; \"POST /internal/observability/slos/_preview\": { endpoint: \"POST /internal/observability/slos/_preview\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ indicator: ", + "UnionC", + "<[", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", + "NumberC", + "; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionErrorRate\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.kql.custom\">; params: ", + "TypeC", + "<{ index: ", + "StringC", + "; filter: ", + "StringC", + "; good: ", + "StringC", + "; total: ", + "StringC", + "; timestampField: ", + "StringC", + "; }>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.metric.custom\">; params: ", + "TypeC", + "<{ index: ", + "StringC", + "; filter: ", + "StringC", + "; good: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ sum: boolean; }>; field: ", + "StringC", + "; }>>; equation: ", + "StringC", + "; }>; total: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ sum: boolean; }>; field: ", + "StringC", + "; }>>; equation: ", + "StringC", + "; }>; timestampField: ", + "StringC", + "; }>; }>]>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: { name: string; aggregation: \"sum\"; field: string; }[]; equation: string; }; total: { metrics: { name: string; aggregation: \"sum\"; field: string; }[]; equation: string; }; timestampField: string; }; }; }; }; }) => Promise<{ date: Date; sliValue: number; }[]>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /internal/observability/slos/{id}/_diagnosis\": { endpoint: \"GET /internal/observability/slos/{id}/_diagnosis\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -9560,7 +9872,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"PUT /api/observability/slos/{id} 2023-05-22\": { endpoint: \"PUT /api/observability/slos/{id} 2023-05-22\"; params?: ", + "; \"PUT /api/observability/slos/{id} 2023-10-31\": { endpoint: \"PUT /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -9846,7 +10158,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"GET /api/observability/slos/{id} 2023-05-22\": { endpoint: \"GET /api/observability/slos/{id} 2023-05-22\"; params?: ", + "; \"GET /api/observability/slos/{id} 2023-10-31\": { endpoint: \"GET /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -9868,7 +10180,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"GET /api/observability/slos 2023-05-22\": { endpoint: \"GET /api/observability/slos 2023-05-22\"; params?: ", + "; \"GET /api/observability/slos 2023-10-31\": { endpoint: \"GET /api/observability/slos 2023-10-31\"; params?: ", "PartialC", "<{ query: ", "PartialC", @@ -9932,7 +10244,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos/{id}/enable 2023-05-22\": { endpoint: \"POST /api/observability/slos/{id}/enable 2023-05-22\"; params?: ", + "; \"POST /api/observability/slos/{id}/enable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/enable 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -9954,7 +10266,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos/{id}/disable 2023-05-22\": { endpoint: \"POST /api/observability/slos/{id}/disable 2023-05-22\"; params?: ", + "; \"POST /api/observability/slos/{id}/disable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/disable 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -9976,7 +10288,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"DELETE /api/observability/slos/{id} 2023-05-22\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-05-22\"; params?: ", + "; \"DELETE /api/observability/slos/{id} 2023-10-31\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -9998,7 +10310,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos 2023-05-22\": { endpoint: \"POST /api/observability/slos 2023-05-22\"; params?: ", + "; \"POST /api/observability/slos 2023-10-31\": { endpoint: \"POST /api/observability/slos 2023-10-31\"; params?: ", "TypeC", "<{ body: ", "IntersectionC", @@ -10286,7 +10598,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-05-22\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-05-22\"; params?: ", + "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"; params?: ", "TypeC", "<{ query: ", "TypeC", @@ -11569,7 +11881,7 @@ "label": "value", "description": [], "signature": [ - "false" + "true" ], "path": "x-pack/plugins/observability/server/ui_settings.ts", "deprecated": false, diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index fd7dbdad72317..05cc930c1e5d7 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index d7b4d60a37412..01586572e352f 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2023-06-15 +date: 2023-06-16 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 4c2aa645397cf..959db437852e0 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2023-06-15 +date: 2023-06-16 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 45a28d381378a..756a9c8c1c764 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 7664c954e20a4..01957b46d02cf 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,15 +21,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 70775 | 537 | 60614 | 1383 | +| 70793 | 537 | 60630 | 1383 | ## Plugin Directory | Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 264 | 10 | 259 | 26 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 266 | 10 | 261 | 26 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 36 | 1 | 32 | 2 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 44 | 0 | 27 | 1 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 45 | 0 | 27 | 1 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 622 | 1 | 598 | 47 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | The user interface for Elastic APM | 46 | 0 | 46 | 113 | | | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | Asset manager plugin for entity assets (inventory, topology, etc) | 3 | 0 | 3 | 0 | @@ -72,7 +72,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 9 | 0 | 9 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 115 | 3 | 111 | 3 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | ESS customizations for Security Solution. | 6 | 0 | 6 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The Event Annotation service contains expressions for event annotations | 227 | 30 | 227 | 4 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The Event Annotation service contains expressions for event annotations | 234 | 30 | 234 | 4 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 116 | 0 | 116 | 11 | | | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | - | 141 | 1 | 141 | 14 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'error' renderer to expressions | 17 | 0 | 15 | 2 | @@ -154,7 +154,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-reporting-services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Kibana Screenshotting Plugin | 27 | 0 | 8 | 5 | | searchprofiler | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | | | [@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. | 283 | 0 | 94 | 1 | -| | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 156 | 2 | 112 | 29 | +| | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 157 | 2 | 113 | 29 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | The core Serverless plugin, providing APIs to Serverless Project plugins. | 16 | 0 | 15 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Serverless customizations for observability. | 6 | 0 | 6 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Serverless customizations for search. | 6 | 0 | 6 | 0 | @@ -176,7 +176,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 257 | 1 | 213 | 22 | | | [@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 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 544 | 11 | 518 | 49 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 545 | 11 | 519 | 49 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds UI Actions service to Kibana | 144 | 2 | 102 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Extends UI Actions plugin with more functionality | 206 | 0 | 140 | 9 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the field list which can be integrated into apps | 296 | 0 | 270 | 8 | @@ -512,7 +512,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 15 | 0 | 7 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 147 | 0 | 125 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 528 | 0 | 515 | 0 | -| | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 66 | 0 | 37 | 0 | +| | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 67 | 0 | 37 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 28 | 0 | 21 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 69 | 0 | 65 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 35 | 0 | 23 | 0 | @@ -565,7 +565,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 4 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 9 | 0 | 3 | 0 | -| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 111 | 0 | 111 | 0 | +| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 115 | 0 | 115 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 20 | 0 | 12 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 100 | 2 | 64 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 4 | 0 | 2 | 0 | @@ -579,7 +579,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 39 | 0 | 25 | 1 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 86 | 0 | 86 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 18 | 0 | 8 | 0 | -| | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 46 | 0 | 37 | 0 | +| | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 47 | 0 | 38 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 7 | 0 | 6 | 0 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 4 | 0 | 0 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 58 | 0 | 5 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index bcf649652fd40..af274f9e8bcaf 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 7c48b21ffd976..89342dde3491f 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 79c2ccea0c224..12894edd48f11 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2023-06-15 +date: 2023-06-16 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 810aa5d148b06..7baae2787c864 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/reporting_export_types.mdx b/api_docs/reporting_export_types.mdx index a744bccc8b457..faca1d35de068 100644 --- a/api_docs/reporting_export_types.mdx +++ b/api_docs/reporting_export_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reportingExportTypes title: "reportingExportTypes" image: https://source.unsplash.com/400x175/?github description: API docs for the reportingExportTypes plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reportingExportTypes'] --- import reportingExportTypesObj from './reporting_export_types.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index d26855fb31b24..d6880d693140e 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2023-06-15 +date: 2023-06-16 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 b347ead9230b5..e3d422b49570f 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2023-06-15 +date: 2023-06-16 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 c77ec62f8f362..71b939c0df64e 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2023-06-15 +date: 2023-06-16 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 817aeb025dda7..f3485fd154132 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2023-06-15 +date: 2023-06-16 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 49ee9cf5cc53e..05c1742c46a84 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.devdocs.json b/api_docs/saved_objects_management.devdocs.json index 961a621562f4b..8a3496a40bb3a 100644 --- a/api_docs/saved_objects_management.devdocs.json +++ b/api_docs/saved_objects_management.devdocs.json @@ -294,7 +294,7 @@ "label": "euiColumn", "description": [], "signature": [ - "{ prefix?: string | undefined; scope?: string | undefined; id?: string | undefined; defaultValue?: string | number | readonly string[] | undefined; name: React.ReactNode; children?: React.ReactNode; description?: string | undefined; onChange?: React.FormEventHandler | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; className?: string | undefined; contentEditable?: Booleanish | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; lang?: string | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: string | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; color?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; security?: string | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"search\" | \"none\" | \"text\" | \"url\" | \"tel\" | \"email\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: Booleanish | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: Booleanish | undefined; 'aria-checked'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"page\" | \"date\" | \"time\" | \"true\" | \"false\" | \"step\" | \"location\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; 'aria-dropeffect'?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: Booleanish | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: boolean | \"dialog\" | \"menu\" | \"true\" | \"false\" | \"grid\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: Booleanish | undefined; 'aria-multiline'?: Booleanish | undefined; 'aria-multiselectable'?: Booleanish | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-readonly'?: Booleanish | undefined; 'aria-relevant'?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: Booleanish | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: Booleanish | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onError?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; 'data-test-subj'?: string | undefined; css?: ", + "{ prefix?: string | undefined; scope?: string | undefined; id?: string | undefined; defaultValue?: string | number | readonly string[] | undefined; name: React.ReactNode; security?: string | undefined; children?: React.ReactNode; description?: string | undefined; onChange?: React.FormEventHandler | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; className?: string | undefined; contentEditable?: Booleanish | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; lang?: string | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: string | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; color?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"search\" | \"none\" | \"text\" | \"url\" | \"tel\" | \"email\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: Booleanish | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: Booleanish | undefined; 'aria-checked'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"page\" | \"date\" | \"time\" | \"true\" | \"false\" | \"step\" | \"location\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; 'aria-dropeffect'?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: Booleanish | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: boolean | \"dialog\" | \"menu\" | \"true\" | \"false\" | \"grid\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: Booleanish | undefined; 'aria-multiline'?: Booleanish | undefined; 'aria-multiselectable'?: Booleanish | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-readonly'?: Booleanish | undefined; 'aria-relevant'?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: Booleanish | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: Booleanish | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onError?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; 'data-test-subj'?: string | undefined; css?: ", "Interpolation", "<", "Theme", diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index fc01383b89a6f..9d42755df200d 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2023-06-15 +date: 2023-06-16 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 2603aec82d3b0..6d9bb92a141e8 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2023-06-15 +date: 2023-06-16 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 6aa41ed9ed2c5..f82b18ee42dc4 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2023-06-15 +date: 2023-06-16 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 cb28f107ba18e..227d7e827efb2 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2023-06-15 +date: 2023-06-16 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 5f94d6bdfbef1..75468bb14aeeb 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2023-06-15 +date: 2023-06-16 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 f38e38badfcc8..12b4d947258ce 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index b69c67b18c370..8892000f95d85 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2023-06-15 +date: 2023-06-16 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 687d1b9f232e4..bad44deb8f9da 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -101,7 +101,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly alertDetailsPageEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly securityFlyoutEnabled: boolean; readonly assistantEnabled: boolean; readonly riskyHostsEnabled: boolean; readonly riskyUsersEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly newUserDetailsFlyout: boolean; readonly detectionsCoverageOverview: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly alertDetailsPageEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly securityFlyoutEnabled: boolean; readonly assistantEnabled: boolean; readonly riskyHostsEnabled: boolean; readonly riskyUsersEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly newUserDetailsFlyout: boolean; readonly detectionsCoverageOverview: boolean; readonly riskScoringRoutesEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/plugin.tsx", "deprecated": false, @@ -1853,6 +1853,22 @@ ], "returnComment": [] }, + { + "parentPluginId": "securitySolution", + "id": "def-server.AppClient.getAlertsIndex", + "type": "Function", + "tags": [], + "label": "getAlertsIndex", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/plugins/security_solution/server/client/client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "securitySolution", "id": "def-server.AppClient.getSignalsIndex", @@ -2728,7 +2744,7 @@ "label": "ExperimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly alertDetailsPageEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly securityFlyoutEnabled: boolean; readonly assistantEnabled: boolean; readonly riskyHostsEnabled: boolean; readonly riskyUsersEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly newUserDetailsFlyout: boolean; readonly detectionsCoverageOverview: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly alertDetailsPageEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly securityFlyoutEnabled: boolean; readonly assistantEnabled: boolean; readonly riskyHostsEnabled: boolean; readonly riskyUsersEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly newUserDetailsFlyout: boolean; readonly detectionsCoverageOverview: boolean; readonly riskScoringRoutesEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/common/experimental_features.ts", "deprecated": false, @@ -2781,7 +2797,7 @@ "\nA list of allowed values that can be used in `xpack.securitySolution.enableExperimental`.\nThis object is then used to validate and parse the value entered." ], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly alertDetailsPageEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly securityFlyoutEnabled: boolean; readonly assistantEnabled: boolean; readonly riskyHostsEnabled: boolean; readonly riskyUsersEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly newUserDetailsFlyout: boolean; readonly detectionsCoverageOverview: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly alertDetailsPageEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly securityFlyoutEnabled: boolean; readonly assistantEnabled: boolean; readonly riskyHostsEnabled: boolean; readonly riskyUsersEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly newUserDetailsFlyout: boolean; readonly detectionsCoverageOverview: boolean; readonly riskScoringRoutesEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/common/experimental_features.ts", "deprecated": false, diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index f5b92f43d33a8..b5d516935041a 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2023-06-15 +date: 2023-06-16 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 | |-------------------|-----------|------------------------|-----------------| -| 156 | 2 | 112 | 29 | +| 157 | 2 | 113 | 29 | ## Client diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index c215e96645d9a..7d3b899f9b79e 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2023-06-15 +date: 2023-06-16 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 f91f16499f8a8..852d675c37048 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2023-06-15 +date: 2023-06-16 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 df91d68ef77b9..4e6096e5cd800 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/serverless_security.mdx b/api_docs/serverless_security.mdx index 1049c08e22c93..dccb1887beaf5 100644 --- a/api_docs/serverless_security.mdx +++ b/api_docs/serverless_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSecurity title: "serverlessSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSecurity plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSecurity'] --- import serverlessSecurityObj from './serverless_security.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 3d7c0e59fbb86..4aae28b6f7bdc 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2023-06-15 +date: 2023-06-16 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 13425faf325d1..b48acd52ae7fc 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index f9665e79cfcc7..03b0b31168281 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2023-06-15 +date: 2023-06-16 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 f5d42991d29e7..b0c9bdb5b0647 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2023-06-15 +date: 2023-06-16 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 1b74789392fbd..3aa84a78b91dd 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2023-06-15 +date: 2023-06-16 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 0844ffa7cb494..c1ca28bc94fc2 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 1df30b077a492..36999d7c13258 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 08fb5aec057f2..3ba32c60cb354 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.devdocs.json b/api_docs/telemetry_collection_manager.devdocs.json index b68644517c22f..67ed3b0e5e195 100644 --- a/api_docs/telemetry_collection_manager.devdocs.json +++ b/api_docs/telemetry_collection_manager.devdocs.json @@ -214,37 +214,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -338,7 +308,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -762,6 +758,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -1166,6 +1164,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 01efad29a7a9b..a778bb1d95b05 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 3e7f407ad7f7f..c336e71f5877a 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 9b9853ce8fdc1..7506d05e99bfa 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 3c1d0788be0a3..e74e0be56231f 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index ffcb99b658326..dfdd26bb7a4eb 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index d572862610e22..6ee92f5a513ef 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2023-06-15 +date: 2023-06-16 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 62213ea97a44c..56ef88da3a200 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.devdocs.json b/api_docs/triggers_actions_ui.devdocs.json index 372a78b05e21a..3bcb93fcdd348 100644 --- a/api_docs/triggers_actions_ui.devdocs.json +++ b/api_docs/triggers_actions_ui.devdocs.json @@ -4736,7 +4736,7 @@ "label": "setRuleProperty", "description": [], "signature": [ - "(key: Prop, value: ", + "(key: Prop, value: ", "SanitizedRule", "[Prop] | null) => void" ], @@ -5106,6 +5106,26 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.TriggersAndActionsUiServices.dashboard", + "type": "Object", + "tags": [], + "label": "dashboard", + "description": [], + "signature": [ + { + "pluginId": "dashboard", + "scope": "public", + "docId": "kibDashboardPluginApi", + "section": "def-public.DashboardStart", + "text": "DashboardStart" + } + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.TriggersAndActionsUiServices.charts", diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 7cff9fb36b630..6207d7fc78c93 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.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 | |-------------------|-----------|------------------------|-----------------| -| 544 | 11 | 518 | 49 | +| 545 | 11 | 519 | 49 | ## Client diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 8884c4fd05145..be718bb58463a 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2023-06-15 +date: 2023-06-16 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 e4f6f7dc07e79..e6a42bb7964b3 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_field_list.mdx b/api_docs/unified_field_list.mdx index 94ee95f638a2f..76b529e3a4096 100644 --- a/api_docs/unified_field_list.mdx +++ b/api_docs/unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedFieldList title: "unifiedFieldList" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedFieldList plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index bff52d80af88e..2b7b6d472c430 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2023-06-15 +date: 2023-06-16 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 6878f30edf76d..b9af776ac190e 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2023-06-15 +date: 2023-06-16 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 bfde6e3d4c83b..4e89eacae5d1e 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 28832268b211e..6ee693ac3e412 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.devdocs.json b/api_docs/usage_collection.devdocs.json index 46837f735f684..dfc86b1d1b8f1 100644 --- a/api_docs/usage_collection.devdocs.json +++ b/api_docs/usage_collection.devdocs.json @@ -483,37 +483,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; security: ", - "default", - "; monitoring: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -607,7 +577,33 @@ "ClosePointInTimeResponse", ">; }; cluster: ", "default", - "; danglingIndices: ", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", "default", "; deleteByQuery: { (this: That, params: ", "DeleteByQueryRequest", @@ -1031,6 +1027,8 @@ "default", "; ml: ", "default", + "; monitoring: ", + "default", "; msearch: { >(this: That, params: ", @@ -1435,6 +1433,8 @@ "SearchTemplateResponse", ">; }; searchableSnapshots: ", "default", + "; security: ", + "default", "; shutdown: ", "default", "; slm: ", diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index c4eed791ad6e6..dff68a27077ac 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2023-06-15 +date: 2023-06-16 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 8abdc51591a21..517d4c4b8d019 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2023-06-15 +date: 2023-06-16 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 bc08fa66c10d8..af406d91a5a19 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2023-06-15 +date: 2023-06-16 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 f64a941eb7b73..9981d8c3f3db6 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2023-06-15 +date: 2023-06-16 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 151bfdf45909d..bbc4452cc82c0 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2023-06-15 +date: 2023-06-16 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 9657659cd4499..1085c6a4c4a5f 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2023-06-15 +date: 2023-06-16 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 f17a423512c02..e5320c124db57 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2023-06-15 +date: 2023-06-16 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 5f25624d1faa2..859e47fec0439 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2023-06-15 +date: 2023-06-16 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 5dc37f249e13e..1001199df6a3a 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2023-06-15 +date: 2023-06-16 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 ef9b15b803c80..c3c24cd67c0a3 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2023-06-15 +date: 2023-06-16 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 14aaf958c54e9..06bfd2b5380e2 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2023-06-15 +date: 2023-06-16 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 0845d07aef638..9c91ae64f5217 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualization_ui_components.mdx b/api_docs/visualization_ui_components.mdx index e059ab5003621..3007cc6fd89c6 100644 --- a/api_docs/visualization_ui_components.mdx +++ b/api_docs/visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizationUiComponents title: "visualizationUiComponents" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizationUiComponents plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizationUiComponents'] --- import visualizationUiComponentsObj from './visualization_ui_components.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index f8946850bad29..18b16e947c202 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2023-06-15 +date: 2023-06-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 5c5add2d7c91119509f56b93e7cade7f9d93ab42 Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Fri, 16 Jun 2023 00:28:29 -0500 Subject: [PATCH 47/59] [data / search session] BWCA all the routes (#158981) ### Summary All routes - Use versioned router - Validate responses - All responses are typed with response types, separate from internal api types. This is to help prevent unacknowledged changes to the api. Closes https://github.com/elastic/kibana/issues/158944 --------- Co-authored-by: Lukas Olson --- .../public/search/session/sessions_client.ts | 30 +-- src/plugins/data/server/index.ts | 7 +- src/plugins/data/server/search/index.ts | 1 + .../server/search/routes/response_schema.ts | 72 +++++ .../server/search/routes/response_types.ts | 65 +++++ .../data/server/search/routes/session.test.ts | 29 +- .../data/server/search/routes/session.ts | 249 +++++++++++------- .../api_integration/apis/search/session.ts | 69 ++++- .../functional/services/search_sessions.ts | 4 + 9 files changed, 393 insertions(+), 133 deletions(-) create mode 100644 src/plugins/data/server/search/routes/response_schema.ts create mode 100644 src/plugins/data/server/search/routes/response_types.ts diff --git a/src/plugins/data/public/search/session/sessions_client.ts b/src/plugins/data/public/search/session/sessions_client.ts index 80fe88c22a951..b49539056370a 100644 --- a/src/plugins/data/public/search/session/sessions_client.ts +++ b/src/plugins/data/public/search/session/sessions_client.ts @@ -10,7 +10,6 @@ import { PublicContract } from '@kbn/utility-types'; import { HttpSetup } from '@kbn/core/public'; import type { SavedObject, - SavedObjectsFindResponse, SavedObjectsUpdateResponse, SavedObjectsFindOptions, } from '@kbn/core/server'; @@ -24,6 +23,9 @@ export interface SessionsClientDeps { http: HttpSetup; } +const version = '1'; +const options = { version }; + /** * CRUD Search Session SO */ @@ -35,7 +37,7 @@ export class SessionsClient { } public get(sessionId: string): Promise { - return this.http.get(`/internal/session/${encodeURIComponent(sessionId)}`); + return this.http.get(`/internal/session/${encodeURIComponent(sessionId)}`, options); } public create({ @@ -54,6 +56,7 @@ export class SessionsClient { sessionId: string; }): Promise { return this.http.post(`/internal/session`, { + version, body: JSON.stringify({ name, appId, @@ -65,9 +68,10 @@ export class SessionsClient { }); } - public find(options: Omit): Promise { + public find(opts: Omit): Promise { return this.http!.post(`/internal/session/_find`, { - body: JSON.stringify(options), + version, + body: JSON.stringify(opts), }); } @@ -76,27 +80,23 @@ export class SessionsClient { attributes: unknown ): Promise> { return this.http!.put(`/internal/session/${encodeURIComponent(sessionId)}`, { + version, body: JSON.stringify(attributes), }); } - public rename( - sessionId: string, - newName: string - ): Promise>> { - return this.update(sessionId, { name: newName }); + public async rename(sessionId: string, newName: string): Promise { + await this.update(sessionId, { name: newName }); } - public extend( - sessionId: string, - expires: string - ): Promise> { - return this.http!.post(`/internal/session/${encodeURIComponent(sessionId)}/_extend`, { + public async extend(sessionId: string, expires: string): Promise { + await this.http!.post(`/internal/session/${encodeURIComponent(sessionId)}/_extend`, { + version, body: JSON.stringify({ expires }), }); } public delete(sessionId: string): Promise { - return this.http!.delete(`/internal/session/${encodeURIComponent(sessionId)}`); + return this.http!.delete(`/internal/session/${encodeURIComponent(sessionId)}`, options); } } diff --git a/src/plugins/data/server/index.ts b/src/plugins/data/server/index.ts index 52e480665f00f..10368bd74281f 100644 --- a/src/plugins/data/server/index.ts +++ b/src/plugins/data/server/index.ts @@ -71,7 +71,12 @@ export type { DataRequestHandlerContext, AsyncSearchStatusResponse, } from './search'; -export { shimHitsTotal, SearchSessionService, NoSearchIdInSessionError } from './search'; +export { + shimHitsTotal, + SearchSessionService, + NoSearchIdInSessionError, + INITIAL_SEARCH_SESSION_REST_VERSION, +} from './search'; // Search namespace export const search = { diff --git a/src/plugins/data/server/search/index.ts b/src/plugins/data/server/search/index.ts index a61a74609cc6f..825b7eee3302f 100644 --- a/src/plugins/data/server/search/index.ts +++ b/src/plugins/data/server/search/index.ts @@ -15,3 +15,4 @@ export { usageProvider, searchUsageObserver } from './collectors/search'; export * from './aggs'; export * from './session'; export * from './errors/no_search_id_in_session'; +export { INITIAL_SEARCH_SESSION_REST_VERSION } from './routes/session'; diff --git a/src/plugins/data/server/search/routes/response_schema.ts b/src/plugins/data/server/search/routes/response_schema.ts new file mode 100644 index 0000000000000..c8ae3a7e44909 --- /dev/null +++ b/src/plugins/data/server/search/routes/response_schema.ts @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { schema } from '@kbn/config-schema'; + +const searchSessionRequestInfoSchema = schema.object({ + id: schema.string(), + strategy: schema.string(), +}); + +const serializeableSchema = schema.mapOf(schema.string(), schema.any()); + +const searchSessionAttrSchema = schema.object({ + sessionId: schema.string(), + name: schema.maybe(schema.string()), + appId: schema.maybe(schema.string()), + created: schema.string(), + expires: schema.string(), + locatorId: schema.maybe(schema.string()), + initialState: schema.maybe(serializeableSchema), + restoreState: schema.maybe(serializeableSchema), + idMapping: schema.mapOf(schema.string(), searchSessionRequestInfoSchema), + realmType: schema.maybe(schema.string()), + realmName: schema.maybe(schema.string()), + username: schema.maybe(schema.string()), + version: schema.string(), + isCanceled: schema.maybe(schema.boolean()), +}); + +export const searchSessionSchema = schema.object({ + id: schema.string(), + attributes: searchSessionAttrSchema, +}); + +export const searchSessionStatusSchema = schema.object({ + status: schema.oneOf([ + schema.literal('in_progress'), + schema.literal('error'), + schema.literal('complete'), + schema.literal('cancelled'), + schema.literal('expired'), + ]), + errors: schema.maybe(schema.arrayOf(schema.string())), +}); + +export const searchSessionsFindSchema = schema.object({ + total: schema.number(), + saved_objects: schema.arrayOf(searchSessionSchema), + statuses: schema.recordOf(schema.string(), searchSessionStatusSchema), +}); + +const referencesSchema = schema.arrayOf( + schema.object({ id: schema.string(), type: schema.string(), name: schema.string() }) +); + +export const searchSessionsUpdateSchema = schema.object({ + id: schema.string(), + type: schema.string(), + updated_at: schema.maybe(schema.string()), + version: schema.maybe(schema.string()), + namespaces: schema.maybe(schema.arrayOf(schema.string())), + references: schema.maybe(referencesSchema), + attributes: schema.object({ + name: schema.maybe(schema.string()), + expires: schema.maybe(schema.string()), + }), +}); diff --git a/src/plugins/data/server/search/routes/response_types.ts b/src/plugins/data/server/search/routes/response_types.ts new file mode 100644 index 0000000000000..489c5a615437a --- /dev/null +++ b/src/plugins/data/server/search/routes/response_types.ts @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { SerializableRecord } from '@kbn/utility-types'; + +interface SearchSessionAttrRestResponse { + sessionId: string; + name?: string; + appId?: string; + created: string; + expires: string; + locatorId?: string; + initialState?: SerializableRecord; + restoreState?: SerializableRecord; + idMapping: Record; + realmType?: string; + realmName?: string; + username?: string; + version: string; + isCanceled?: boolean; +} + +interface SearchSessionRequestInfoRestResponse { + id: string; + strategy: string; +} + +export interface SearchSessionRestResponse { + id: string; + attributes: SearchSessionAttrRestResponse; +} + +export interface SearchSessionStatusRestResponse { + status: StatusRestRespone; + errors?: string[]; +} + +type StatusRestRespone = 'in_progress' | 'error' | 'complete' | 'cancelled' | 'expired'; + +export interface SearchSessionsFindRestResponse { + saved_objects: SearchSessionRestResponse[]; + total: number; + /** + * Map containing calculated statuses of search sessions from the find response + */ + statuses: Record; +} + +export interface SearchSessionsUpdateRestResponse { + id: string; + type: string; + updated_at?: string; + version?: string; + namespaces?: string[]; + references?: Array<{ id: string; type: string; name: string }>; + attributes: { + name?: string; + expires?: string; + }; +} diff --git a/src/plugins/data/server/search/routes/session.test.ts b/src/plugins/data/server/search/routes/session.test.ts index 2fdf02c86ce6b..b20af00d77904 100644 --- a/src/plugins/data/server/search/routes/session.test.ts +++ b/src/plugins/data/server/search/routes/session.test.ts @@ -15,6 +15,11 @@ import { dataPluginMock } from '../../mocks'; import { registerSessionRoutes } from './session'; +enum GetHandlerIndex { + ID, + STATUS, +} + enum PostHandlerIndex { SAVE, FIND, @@ -43,7 +48,8 @@ describe('registerSessionRoutes', () => { const mockResponse = httpServerMock.createResponseFactory(); const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const [, saveHandler] = mockRouter.post.mock.calls[PostHandlerIndex.SAVE]; + const [[, saveHandler]] = + mockRouter.versioned.post.mock.results[PostHandlerIndex.SAVE].value.addVersion.mock.calls; await saveHandler(mockContext, mockRequest, mockResponse); @@ -58,7 +64,7 @@ describe('registerSessionRoutes', () => { const mockResponse = httpServerMock.createResponseFactory(); const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const [[, getHandler]] = mockRouter.get.mock.calls; + const [[, getHandler]] = mockRouter.versioned.get.mock.results[0].value.addVersion.mock.calls; await getHandler(mockContext, mockRequest, mockResponse); @@ -73,10 +79,12 @@ describe('registerSessionRoutes', () => { const mockResponse = httpServerMock.createResponseFactory(); const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const [[], [, statusHandler]] = mockRouter.get.mock.calls; + const [[, statusHandler]] = + mockRouter.versioned.get.mock.results[GetHandlerIndex.STATUS].value.addVersion.mock.calls; await statusHandler(mockContext, mockRequest, mockResponse); + expect(mockContext.search!.getSessionStatus).toHaveBeenCalled(); expect(mockContext.search!.getSessionStatus).toHaveBeenCalledWith(id); }); @@ -92,7 +100,8 @@ describe('registerSessionRoutes', () => { const mockResponse = httpServerMock.createResponseFactory(); const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const [, findHandler] = mockRouter.post.mock.calls[PostHandlerIndex.FIND]; + const [[, findHandler]] = + mockRouter.versioned.post.mock.results[PostHandlerIndex.FIND].value.addVersion.mock.calls; await findHandler(mockContext, mockRequest, mockResponse); @@ -110,7 +119,8 @@ describe('registerSessionRoutes', () => { const mockResponse = httpServerMock.createResponseFactory(); const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const [, updateHandler] = mockRouter.put.mock.calls[0]; + const [[, updateHandler]] = + mockRouter.versioned.put.mock.results[0].value.addVersion.mock.calls; await updateHandler(mockContext, mockRequest, mockResponse); @@ -125,7 +135,8 @@ describe('registerSessionRoutes', () => { const mockResponse = httpServerMock.createResponseFactory(); const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const [, cancelHandler] = mockRouter.post.mock.calls[PostHandlerIndex.CANCEL]; + const [[, cancelHandler]] = + mockRouter.versioned.post.mock.results[PostHandlerIndex.CANCEL].value.addVersion.mock.calls; await cancelHandler(mockContext, mockRequest, mockResponse); @@ -140,7 +151,8 @@ describe('registerSessionRoutes', () => { const mockResponse = httpServerMock.createResponseFactory(); const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const [, deleteHandler] = mockRouter.delete.mock.calls[0]; + const [[, deleteHandler]] = + mockRouter.versioned.delete.mock.results[0].value.addVersion.mock.calls; await deleteHandler(mockContext, mockRequest, mockResponse); @@ -157,7 +169,8 @@ describe('registerSessionRoutes', () => { const mockResponse = httpServerMock.createResponseFactory(); const mockRouter = mockCoreSetup.http.createRouter.mock.results[0].value; - const [, extendHandler] = mockRouter.post.mock.calls[PostHandlerIndex.EXTEND]; + const [[, extendHandler]] = + mockRouter.versioned.post.mock.results[PostHandlerIndex.EXTEND].value.addVersion.mock.calls; await extendHandler(mockContext, mockRequest, mockResponse); diff --git a/src/plugins/data/server/search/routes/session.ts b/src/plugins/data/server/search/routes/session.ts index c654fcb53adbd..ad0173a4d677a 100644 --- a/src/plugins/data/server/search/routes/session.ts +++ b/src/plugins/data/server/search/routes/session.ts @@ -10,26 +10,52 @@ import { schema } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; import { reportServerError } from '@kbn/kibana-utils-plugin/server'; import { DataPluginRouter } from '../types'; +import { + SearchSessionRestResponse, + SearchSessionStatusRestResponse, + SearchSessionsFindRestResponse, + SearchSessionsUpdateRestResponse, +} from './response_types'; +import { + searchSessionSchema, + searchSessionStatusSchema, + searchSessionsFindSchema, + searchSessionsUpdateSchema, +} from './response_schema'; const STORE_SEARCH_SESSIONS_ROLE_TAG = `access:store_search_session`; +const access = 'internal'; +const options = { + tags: [STORE_SEARCH_SESSIONS_ROLE_TAG], +}; +const pathPrefix = '/internal/session'; +export const INITIAL_SEARCH_SESSION_REST_VERSION = '1'; +const version = INITIAL_SEARCH_SESSION_REST_VERSION; + +const idAndAttrsOnly = (so?: SearchSessionRestResponse) => + so && { id: so.id, attributes: so.attributes }; export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): void { - router.post( + router.versioned.post({ path: pathPrefix, access, options }).addVersion( { - path: '/internal/session', + version, validate: { - body: schema.object({ - sessionId: schema.string(), - name: schema.string(), - appId: schema.string(), - expires: schema.maybe(schema.string()), - locatorId: schema.string(), - initialState: schema.maybe(schema.object({}, { unknowns: 'allow' })), - restoreState: schema.maybe(schema.object({}, { unknowns: 'allow' })), - }), - }, - options: { - tags: [STORE_SEARCH_SESSIONS_ROLE_TAG], + request: { + body: schema.object({ + sessionId: schema.string(), + name: schema.string(), + appId: schema.string(), + expires: schema.maybe(schema.string()), + locatorId: schema.string(), + initialState: schema.maybe(schema.object({}, { unknowns: 'allow' })), + restoreState: schema.maybe(schema.object({}, { unknowns: 'allow' })), + }), + }, + response: { + 200: { + body: schema.maybe(searchSessionSchema), + }, + }, }, }, async (context, request, res) => { @@ -38,6 +64,7 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): try { const searchContext = await context.search; + const response = await searchContext.saveSession(sessionId, { name, appId, @@ -47,9 +74,9 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): restoreState, }); - return res.ok({ - body: response, - }); + const body: SearchSessionRestResponse | undefined = idAndAttrsOnly(response); + + return res.ok({ body }); } catch (err) { logger.error(err); return reportServerError(res, err); @@ -57,27 +84,30 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): } ); - router.get( + router.versioned.get({ path: `${pathPrefix}/{id}`, access, options }).addVersion( { - path: '/internal/session/{id}', + version, validate: { - params: schema.object({ - id: schema.string(), - }), - }, - options: { - tags: [STORE_SEARCH_SESSIONS_ROLE_TAG], + request: { + params: schema.object({ + id: schema.string(), + }), + }, + response: { + 200: { + body: searchSessionSchema, + }, + }, }, }, async (context, request, res) => { const { id } = request.params; try { const searchContext = await context.search; - const response = await searchContext!.getSession(id); + const response: SearchSessionRestResponse = await searchContext!.getSession(id); + const body = idAndAttrsOnly(response); - return res.ok({ - body: response, - }); + return res.ok({ body }); } catch (e) { const err = e.output?.payload || e; logger.error(err); @@ -86,23 +116,27 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): } ); - router.get( + router.versioned.get({ path: `${pathPrefix}/{id}/status`, access, options }).addVersion( { - path: '/internal/session/{id}/status', + version, validate: { - params: schema.object({ - id: schema.string(), - }), - }, - options: { - tags: [STORE_SEARCH_SESSIONS_ROLE_TAG], + request: { + params: schema.object({ + id: schema.string(), + }), + }, + response: { + 200: { + body: searchSessionStatusSchema, + }, + }, }, }, async (context, request, res) => { const { id } = request.params; try { const searchContext = await context.search; - const response = await searchContext!.getSessionStatus(id); + const response: SearchSessionStatusRestResponse = await searchContext!.getSessionStatus(id); return res.ok({ body: response, @@ -115,29 +149,33 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): } ); - router.post( + router.versioned.post({ path: `${pathPrefix}/_find`, access, options }).addVersion( { - path: '/internal/session/_find', + version, validate: { - body: schema.object({ - page: schema.maybe(schema.number()), - perPage: schema.maybe(schema.number()), - sortField: schema.maybe(schema.string()), - sortOrder: schema.maybe(schema.oneOf([schema.literal('desc'), schema.literal('asc')])), - filter: schema.maybe(schema.string()), - searchFields: schema.maybe(schema.arrayOf(schema.string())), - search: schema.maybe(schema.string()), - }), - }, - options: { - tags: [STORE_SEARCH_SESSIONS_ROLE_TAG], + request: { + body: schema.object({ + page: schema.maybe(schema.number()), + perPage: schema.maybe(schema.number()), + sortField: schema.maybe(schema.string()), + sortOrder: schema.maybe(schema.oneOf([schema.literal('desc'), schema.literal('asc')])), + filter: schema.maybe(schema.string()), + searchFields: schema.maybe(schema.arrayOf(schema.string())), + search: schema.maybe(schema.string()), + }), + }, + response: { + 200: { + body: searchSessionsFindSchema, + }, + }, }, }, async (context, request, res) => { const { page, perPage, sortField, sortOrder, filter, searchFields, search } = request.body; try { const searchContext = await context.search; - const response = await searchContext!.findSessions({ + const response: SearchSessionsFindRestResponse = await searchContext!.findSessions({ page, perPage, sortField, @@ -147,9 +185,13 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): search, }); - return res.ok({ - body: response, - }); + const body = { + total: response.total, + saved_objects: response.saved_objects.map(idAndAttrsOnly), + statuses: response.statuses, + }; + + return res.ok({ body }); } catch (err) { logger.error(err); return reportServerError(res, err); @@ -157,16 +199,15 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): } ); - router.delete( + router.versioned.delete({ path: `${pathPrefix}/{id}`, access, options }).addVersion( { - path: '/internal/session/{id}', + version, validate: { - params: schema.object({ - id: schema.string(), - }), - }, - options: { - tags: [STORE_SEARCH_SESSIONS_ROLE_TAG], + request: { + params: schema.object({ + id: schema.string(), + }), + }, }, }, async (context, request, res) => { @@ -184,16 +225,15 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): } ); - router.post( + router.versioned.post({ path: `${pathPrefix}/{id}/cancel`, access, options }).addVersion( { - path: '/internal/session/{id}/cancel', + version, validate: { - params: schema.object({ - id: schema.string(), - }), - }, - options: { - tags: [STORE_SEARCH_SESSIONS_ROLE_TAG], + request: { + params: schema.object({ + id: schema.string(), + }), + }, }, }, async (context, request, res) => { @@ -211,20 +251,24 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): } ); - router.put( + router.versioned.put({ path: `${pathPrefix}/{id}`, access, options }).addVersion( { - path: '/internal/session/{id}', + version, validate: { - params: schema.object({ - id: schema.string(), - }), - body: schema.object({ - name: schema.maybe(schema.string()), - expires: schema.maybe(schema.string()), - }), - }, - options: { - tags: [STORE_SEARCH_SESSIONS_ROLE_TAG], + request: { + params: schema.object({ + id: schema.string(), + }), + body: schema.object({ + name: schema.maybe(schema.string()), + expires: schema.maybe(schema.string()), + }), + }, + response: { + 200: { + body: searchSessionsUpdateSchema, + }, + }, }, }, async (context, request, res) => { @@ -232,8 +276,10 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): const { name, expires } = request.body; try { const searchContext = await context.search; - const response = await searchContext.updateSession(id, { name, expires }); - + const response: SearchSessionsUpdateRestResponse = await searchContext.updateSession(id, { + name, + expires, + }); return res.ok({ body: response, }); @@ -244,19 +290,23 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): } ); - router.post( + router.versioned.post({ path: `${pathPrefix}/{id}/_extend`, access, options }).addVersion( { - path: '/internal/session/{id}/_extend', + version, validate: { - params: schema.object({ - id: schema.string(), - }), - body: schema.object({ - expires: schema.string(), - }), - }, - options: { - tags: [STORE_SEARCH_SESSIONS_ROLE_TAG], + request: { + params: schema.object({ + id: schema.string(), + }), + body: schema.object({ + expires: schema.string(), + }), + }, + response: { + 200: { + body: searchSessionsUpdateSchema, + }, + }, }, }, async (context, request, res) => { @@ -264,7 +314,10 @@ export function registerSessionRoutes(router: DataPluginRouter, logger: Logger): const { expires } = request.body; try { const searchContext = await context.search; - const response = await searchContext.extendSession(id, new Date(expires)); + const response: SearchSessionsUpdateRestResponse = await searchContext.extendSession( + id, + new Date(expires) + ); return res.ok({ body: response, diff --git a/x-pack/test/api_integration/apis/search/session.ts b/x-pack/test/api_integration/apis/search/session.ts index 6021968c53ab3..13198dd0520ba 100644 --- a/x-pack/test/api_integration/apis/search/session.ts +++ b/x-pack/test/api_integration/apis/search/session.ts @@ -5,9 +5,10 @@ * 2.0. */ +import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; +import { INITIAL_SEARCH_SESSION_REST_VERSION } from '@kbn/data-plugin/server'; import expect from '@kbn/expect'; import { SearchSessionStatus } from '@kbn/data-plugin/common'; -import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { @@ -23,6 +24,7 @@ export default function ({ getService }: FtrProviderContext) { const sessionId = `my-session-${Math.random()}`; await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -37,6 +39,7 @@ export default function ({ getService }: FtrProviderContext) { const sessionId = `my-session-${Math.random()}`; await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -47,17 +50,26 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - await supertest.get(`/internal/session/${sessionId}`).set('kbn-xsrf', 'foo').expect(200); + await supertest + .get(`/internal/session/${sessionId}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) + .set('kbn-xsrf', 'foo') + .expect(200); }); it('should fail to delete an unknown session', async () => { - await supertest.delete(`/internal/session/123`).set('kbn-xsrf', 'foo').expect(404); + await supertest + .delete(`/internal/session/123`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) + .set('kbn-xsrf', 'foo') + .expect(404); }); it('should create and delete a session', async () => { const sessionId = `my-session-${Math.random()}`; await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -68,15 +80,24 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - await supertest.delete(`/internal/session/${sessionId}`).set('kbn-xsrf', 'foo').expect(200); + await supertest + .delete(`/internal/session/${sessionId}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) + .set('kbn-xsrf', 'foo') + .expect(200); - await supertest.get(`/internal/session/${sessionId}`).set('kbn-xsrf', 'foo').expect(404); + await supertest + .get(`/internal/session/${sessionId}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) + .set('kbn-xsrf', 'foo') + .expect(404); }); it('should create and cancel a session', async () => { const sessionId = `my-session-${Math.random()}`; await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -89,11 +110,13 @@ export default function ({ getService }: FtrProviderContext) { await supertest .post(`/internal/session/${sessionId}/cancel`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .expect(200); const resp = await supertest .get(`/internal/session/${sessionId}/status`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .expect(200); @@ -109,6 +132,7 @@ export default function ({ getService }: FtrProviderContext) { body: { attributes: originalSession }, } = await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -123,6 +147,7 @@ export default function ({ getService }: FtrProviderContext) { body: { attributes: updatedSession }, } = await supertest .put(`/internal/session/${sessionId}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ name: newName, @@ -139,7 +164,7 @@ export default function ({ getService }: FtrProviderContext) { // run search, this will not be persisted because session is not saved yet const searchRes1 = await supertest .post(`/internal/search/ese`) - .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -161,6 +186,7 @@ export default function ({ getService }: FtrProviderContext) { // save session await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -174,7 +200,7 @@ export default function ({ getService }: FtrProviderContext) { // run search const searchRes2 = await supertest .post(`/internal/search/ese`) - .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -195,6 +221,7 @@ export default function ({ getService }: FtrProviderContext) { await retry.waitFor('a search persisted into session', async () => { const resp = await supertest .get(`/internal/session/${sessionId}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .expect(200); @@ -213,6 +240,7 @@ export default function ({ getService }: FtrProviderContext) { const sessionId = `my-session-${Math.random()}`; await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -225,6 +253,7 @@ export default function ({ getService }: FtrProviderContext) { await supertest .post(`/internal/session/${sessionId}/_extend`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ expires: '2021-02-26T21:02:43.742Z', @@ -236,6 +265,7 @@ export default function ({ getService }: FtrProviderContext) { it('should fail to extend a nonexistent session', async () => { await supertest .post(`/internal/session/123/_extend`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ expires: '2021-02-26T21:02:43.742Z', @@ -259,7 +289,7 @@ export default function ({ getService }: FtrProviderContext) { // run search const searchRes = await supertest .post(`/internal/search/ese`) - .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -272,6 +302,7 @@ export default function ({ getService }: FtrProviderContext) { // persist session await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -285,7 +316,7 @@ export default function ({ getService }: FtrProviderContext) { // run search to persist into a session await supertest .post(`/internal/search/ese/${id}`) - .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -297,6 +328,7 @@ export default function ({ getService }: FtrProviderContext) { await retry.waitFor('searches persisted into session', async () => { const resp = await supertest .get(`/internal/session/${sessionId}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .expect(200); @@ -313,6 +345,7 @@ export default function ({ getService }: FtrProviderContext) { async () => { const resp = await supertest .get(`/internal/session/${sessionId}/status`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .expect(200); @@ -342,6 +375,7 @@ export default function ({ getService }: FtrProviderContext) { const sessionId = `my-session-${Math.random()}`; await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -354,6 +388,7 @@ export default function ({ getService }: FtrProviderContext) { await supertestWithoutAuth .get(`/internal/session/${sessionId}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .auth('other_user', 'password') .expect(404); @@ -363,6 +398,7 @@ export default function ({ getService }: FtrProviderContext) { const sessionId = `my-session-${Math.random()}`; await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -375,6 +411,7 @@ export default function ({ getService }: FtrProviderContext) { await supertestWithoutAuth .delete(`/internal/session/${sessionId}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .auth('other_user', 'password') .expect(404); @@ -384,6 +421,7 @@ export default function ({ getService }: FtrProviderContext) { const sessionId = `my-session-${Math.random()}`; await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -396,6 +434,7 @@ export default function ({ getService }: FtrProviderContext) { await supertestWithoutAuth .post(`/internal/session/${sessionId}/cancel`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .auth('other_user', 'password') .expect(404); @@ -405,6 +444,7 @@ export default function ({ getService }: FtrProviderContext) { const sessionId = `my-session-${Math.random()}`; await supertest .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -417,6 +457,7 @@ export default function ({ getService }: FtrProviderContext) { await supertestWithoutAuth .post(`/internal/session/${sessionId}/_extend`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .auth('other_user', 'password') .send({ @@ -429,6 +470,7 @@ export default function ({ getService }: FtrProviderContext) { const sessionId = `my-session-${Math.random()}`; await supertestWithoutAuth .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -469,6 +511,7 @@ export default function ({ getService }: FtrProviderContext) { const sessionId = `my-session-${Math.random()}`; await supertestWithoutAuth .post(`/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .auth('analyst', 'analyst-password') .set('kbn-xsrf', 'foo') .send({ @@ -482,6 +525,7 @@ export default function ({ getService }: FtrProviderContext) { await supertestWithoutAuth .get(`/internal/session/${sessionId}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .auth('analyst', 'analyst-password') .set('kbn-xsrf', 'foo') .expect(403); @@ -522,7 +566,7 @@ export default function ({ getService }: FtrProviderContext) { // run search const searchRes = await supertest .post(`/s/${spaceId}/internal/search/ese`) - .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -535,6 +579,7 @@ export default function ({ getService }: FtrProviderContext) { // persist session await supertest .post(`/s/${spaceId}/internal/session`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -548,7 +593,7 @@ export default function ({ getService }: FtrProviderContext) { // run search to persist into a session await supertest .post(`/s/${spaceId}/internal/search/ese/${id}`) - .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .send({ sessionId, @@ -560,6 +605,7 @@ export default function ({ getService }: FtrProviderContext) { await retry.waitFor('searches persisted into session', async () => { const resp = await supertest .get(`/s/${spaceId}/internal/session/${sessionId}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .expect(200); @@ -576,6 +622,7 @@ export default function ({ getService }: FtrProviderContext) { async () => { const resp = await supertest .get(`/s/${spaceId}/internal/session/${sessionId}/status`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'foo') .expect(200); diff --git a/x-pack/test/functional/services/search_sessions.ts b/x-pack/test/functional/services/search_sessions.ts index 8e93ce27e3297..a22e635742686 100644 --- a/x-pack/test/functional/services/search_sessions.ts +++ b/x-pack/test/functional/services/search_sessions.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; +import { INITIAL_SEARCH_SESSION_REST_VERSION } from '@kbn/data-plugin/server'; import expect from '@kbn/expect'; import { SavedObjectsFindResponse } from '@kbn/core/server'; import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; @@ -145,6 +147,7 @@ export class SearchSessionsService extends FtrService { await this.retry.tryForTime(10000, async () => { const { body } = await this.security.testUserSupertest .post('/internal/session/_find') + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set('kbn-xsrf', 'anything') .set('kbn-system-request', 'true') .send({ @@ -169,6 +172,7 @@ export class SearchSessionsService extends FtrService { this.log.debug(`Deleting search session: ${so.id}`); await this.security.testUserSupertest .delete(`/internal/session/${so.id}`) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_SEARCH_SESSION_REST_VERSION) .set(`kbn-xsrf`, `anything`) .expect(200); }) From f745dddfb35c0abb117e212c6d95ef9c36f6251f Mon Sep 17 00:00:00 2001 From: Rudolf Meijering Date: Fri, 16 Jun 2023 10:29:20 +0200 Subject: [PATCH 48/59] Fix link to known 8.8.0 data loss issue (#159860) ## Summary Fixes incorrect link to 8.8.0 known issues. ### Checklist Delete any items that are not applicable to this PR. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### Risk Matrix Delete this section if it is not applicable to this PR. Before closing this PR, invite QA, stakeholders, and other developers to identify risks that should be tested prior to the change/feature release. When forming the risk matrix, consider some of the following examples and how they may potentially impact the change: | Risk | Probability | Severity | Mitigation/Notes | |---------------------------|-------------|----------|-------------------------| | Multiple Spaces—unexpected behavior in non-default Kibana Space. | Low | High | Integration tests will verify that all features are still supported in non-default Kibana Space and when user switches between spaces. | | Multiple nodes—Elasticsearch polling might have race conditions when multiple Kibana nodes are polling for the same tasks. | High | Low | Tasks are idempotent, so executing them multiple times will not result in logical error, but will degrade performance. To test for this case we add plenty of unit tests around this logic and document manual testing procedure. | | Code should gracefully handle cases when feature X or plugin Y are disabled. | Medium | High | Unit tests will verify that any feature flag or plugin combination still results in our service operational. | | [See more potential risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) | ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- docs/CHANGELOG.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc index f4860d729942c..8c95a3d703700 100644 --- a/docs/CHANGELOG.asciidoc +++ b/docs/CHANGELOG.asciidoc @@ -135,7 +135,7 @@ The 8.8.0 release splits the `.kibana` index into multiple saved object indices. This can result in a loss of saved objects during the upgrade. This can also leave {kib} in a bootlooping state where it's unable to start due to `write_blocked` indices. *Impact* + -The 8.8.1 release includes in {kibana-pull}158940[a fix] for this problem. Customers affected by a failed 8.8.0 upgrade should contact Elastic support. For more information, see the {kibana-issue}58733[related issue]. +The 8.8.1 release includes in {kibana-pull}158940[a fix] for this problem. Customers affected by a failed 8.8.0 upgrade should contact Elastic support. For more information, see the {kibana-issue}158733[related issue]. ==== // end::known-issue-158940[] From 5df612ef64866b054710a602c40219aa8edd2add Mon Sep 17 00:00:00 2001 From: Christos Nasikas Date: Fri, 16 Jun 2023 12:46:43 +0300 Subject: [PATCH 49/59] [Cases] Lens as persistable state attachment type (#159004) ## Summary This PR registers the lens attachment type using the cases attachment framework. ## Testing scenarios 1. Attaching a lens visualization to the markdown editor works as expected 2. Attaching a lens visualization from the dashboard creates a lens attachment (persistable state) 3. Attaching a lens visualization from the security solution dashboard (Security solution -> Dashboards -> Create dashboard) creates a lens attachment (persistable state). 4. Attaching a lens visualization from the security solution overview dashboard (Security solution -> Dashboards -> Overview) creates a lens attachment (persistable state). Screenshot 2023-06-13 at 3 10 50 PM ### Checklist Delete any items that are not applicable to this PR. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios ### For maintainers - [x] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../cases/common/api/cases/comment/files.ts | 2 - .../plugins/cases/common/constants/files.ts | 2 + .../plugins/cases/common/constants/index.ts | 1 + .../cases/common/constants/visualizations.ts | 8 + x-pack/plugins/cases/common/index.ts | 1 + .../client/attachment_framework/types.ts | 4 +- .../public/components/files/add_file.tsx | 2 +- .../components/files/file_type.test.tsx | 34 +- .../public/components/files/file_type.tsx | 15 +- .../markdown_editor/plugins/lens/index.ts | 4 +- .../lens/use_lens_open_visualization.tsx | 10 +- .../components/property_actions/index.tsx | 2 +- .../registered_attachments.test.tsx.snap | 342 ++++++++++++++++++ .../comment/registered_attachments.test.tsx | 169 +++++++++ .../comment/registered_attachments.tsx | 9 +- .../actions/add_to_existing_case.test.tsx | 20 +- .../actions/add_to_new_case.test.tsx | 27 +- .../visualizations/actions/utils.test.ts | 8 +- .../visualizations/actions/utils.ts | 20 +- .../visualizations/attachment.test.tsx | 128 +++++++ .../components/visualizations/attachment.tsx | 85 +++++ .../components/visualizations/index.mock.ts | 96 +++++ .../visualizations/lens_renderer.test.tsx | 65 ++++ .../lens_renderer.tsx} | 22 +- .../visualizations/open_lens_button.test.tsx | 63 ++++ .../visualizations/open_lens_button.tsx | 55 +++ .../visualizations/translations.tsx | 29 ++ .../public/components/visualizations/types.ts | 10 + .../public/internal_attachments/index.ts | 6 +- x-pack/plugins/cases/public/plugin.ts | 6 +- .../common/limiter_checker/test_utils.ts | 7 +- .../server/internal_attachments/index.ts | 13 +- x-pack/plugins/cases/server/mocks.ts | 230 +++++++++++- x-pack/plugins/cases/server/plugin.ts | 5 +- .../migrations/comments.test.ts | 101 +++++- .../saved_object_types/migrations/comments.ts | 146 +++++--- .../migrations/constants.ts | 2 +- .../migrations/utils.test.ts | 38 +- .../saved_object_types/migrations/utils.ts | 42 +++ .../server/services/attachments/test_utils.ts | 7 +- .../cases/server/telemetry/queries/utils.ts | 2 +- .../hooks/use_add_to_case.test.tsx | 2 +- .../exploratory_view/hooks/use_add_to_case.ts | 13 +- .../visualization_actions/use_actions.ts | 4 +- .../use_add_to_existing_case.test.tsx | 31 ++ .../use_add_to_existing_case.tsx | 14 +- .../use_add_to_new_case.test.tsx | 29 ++ .../use_add_to_new_case.tsx | 14 +- .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - .../cases_api_integration/common/lib/mock.ts | 2 +- .../persistable_state.ts | 1 + 53 files changed, 1752 insertions(+), 199 deletions(-) create mode 100644 x-pack/plugins/cases/common/constants/visualizations.ts create mode 100644 x-pack/plugins/cases/public/components/user_actions/comment/__snapshots__/registered_attachments.test.tsx.snap create mode 100644 x-pack/plugins/cases/public/components/user_actions/comment/registered_attachments.test.tsx create mode 100644 x-pack/plugins/cases/public/components/visualizations/attachment.test.tsx create mode 100644 x-pack/plugins/cases/public/components/visualizations/attachment.tsx create mode 100644 x-pack/plugins/cases/public/components/visualizations/index.mock.ts create mode 100644 x-pack/plugins/cases/public/components/visualizations/lens_renderer.test.tsx rename x-pack/plugins/cases/public/components/{markdown_editor/plugins/lens/processor.tsx => visualizations/lens_renderer.tsx} (68%) create mode 100644 x-pack/plugins/cases/public/components/visualizations/open_lens_button.test.tsx create mode 100644 x-pack/plugins/cases/public/components/visualizations/open_lens_button.tsx create mode 100644 x-pack/plugins/cases/public/components/visualizations/translations.tsx create mode 100644 x-pack/plugins/cases/public/components/visualizations/types.ts diff --git a/x-pack/plugins/cases/common/api/cases/comment/files.ts b/x-pack/plugins/cases/common/api/cases/comment/files.ts index 5ac9a94f4118a..3a1d468ac2162 100644 --- a/x-pack/plugins/cases/common/api/cases/comment/files.ts +++ b/x-pack/plugins/cases/common/api/cases/comment/files.ts @@ -22,8 +22,6 @@ export const FileAttachmentMetadataRt = rt.strict({ export type FileAttachmentMetadata = rt.TypeOf; -export const FILE_ATTACHMENT_TYPE = '.files'; - const MIN_DELETE_IDS = 1; export const BulkDeleteFileAttachmentsRequestRt = rt.strict({ diff --git a/x-pack/plugins/cases/common/constants/files.ts b/x-pack/plugins/cases/common/constants/files.ts index 3c7a8d80d9ae6..7f3f355aff1a9 100644 --- a/x-pack/plugins/cases/common/constants/files.ts +++ b/x-pack/plugins/cases/common/constants/files.ts @@ -5,6 +5,8 @@ * 2.0. */ +export const FILE_ATTACHMENT_TYPE = '.files'; + export const MAX_FILE_SIZE = 100 * 1024 * 1024; // 100 MiB export const MAX_IMAGE_FILE_SIZE = 10 * 1024 * 1024; // 10 MiB export const MAX_FILES_PER_CASE = 100; diff --git a/x-pack/plugins/cases/common/constants/index.ts b/x-pack/plugins/cases/common/constants/index.ts index 098b7b385f173..3974c9e7631b0 100644 --- a/x-pack/plugins/cases/common/constants/index.ts +++ b/x-pack/plugins/cases/common/constants/index.ts @@ -10,6 +10,7 @@ import type { CasesFeaturesAllRequired } from '../ui/types'; export * from './owners'; export * from './files'; export * from './application'; +export { LENS_ATTACHMENT_TYPE } from './visualizations'; export const DEFAULT_DATE_FORMAT = 'dateFormat' as const; export const DEFAULT_DATE_FORMAT_TZ = 'dateFormat:tz' as const; diff --git a/x-pack/plugins/cases/common/constants/visualizations.ts b/x-pack/plugins/cases/common/constants/visualizations.ts new file mode 100644 index 0000000000000..9af1681360d16 --- /dev/null +++ b/x-pack/plugins/cases/common/constants/visualizations.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 const LENS_ATTACHMENT_TYPE = '.lens'; diff --git a/x-pack/plugins/cases/common/index.ts b/x-pack/plugins/cases/common/index.ts index 4733eab1b72b9..8b335346373a0 100644 --- a/x-pack/plugins/cases/common/index.ts +++ b/x-pack/plugins/cases/common/index.ts @@ -37,6 +37,7 @@ export { READ_CASES_CAPABILITY, UPDATE_CASES_CAPABILITY, INTERNAL_BULK_GET_CASES_URL, + LENS_ATTACHMENT_TYPE, } from './constants'; export { diff --git a/x-pack/plugins/cases/public/client/attachment_framework/types.ts b/x-pack/plugins/cases/public/client/attachment_framework/types.ts index 793bcca8d15eb..5160903cda288 100644 --- a/x-pack/plugins/cases/public/client/attachment_framework/types.ts +++ b/x-pack/plugins/cases/public/client/attachment_framework/types.ts @@ -20,12 +20,12 @@ export enum AttachmentActionType { interface BaseAttachmentAction { type: AttachmentActionType; - label: string; isPrimary?: boolean; disabled?: boolean; } interface ButtonAttachmentAction extends BaseAttachmentAction { + label: string; type: AttachmentActionType.BUTTON; onClick: () => void; iconType: string; @@ -48,6 +48,7 @@ export interface AttachmentViewObject { } export interface CommonAttachmentViewProps { + attachmentId: string; caseData: Pick; } @@ -67,7 +68,6 @@ export interface AttachmentType { displayName: string; getAttachmentViewObject: (props: Props) => AttachmentViewObject; getAttachmentRemovalObject?: (props: Props) => Pick, 'event'>; - hideDefaultActions?: boolean; } export type ExternalReferenceAttachmentType = AttachmentType; diff --git a/x-pack/plugins/cases/public/components/files/add_file.tsx b/x-pack/plugins/cases/public/components/files/add_file.tsx index b8172751bd2de..7ca135ad21111 100644 --- a/x-pack/plugins/cases/public/components/files/add_file.tsx +++ b/x-pack/plugins/cases/public/components/files/add_file.tsx @@ -20,11 +20,11 @@ import type { UploadedFile } from '@kbn/shared-ux-file-upload/src/file_upload'; import { FILE_SO_TYPE } from '@kbn/files-plugin/common'; import { FileUpload } from '@kbn/shared-ux-file-upload'; +import { FILE_ATTACHMENT_TYPE } from '../../../common/constants'; import { constructFileKindIdByOwner } from '../../../common/files'; import type { Owner } from '../../../common/constants/types'; import { CommentType, ExternalReferenceStorageType } from '../../../common'; -import { FILE_ATTACHMENT_TYPE } from '../../../common/api'; import { useCasesToast } from '../../common/use_cases_toast'; import { useCreateAttachments } from '../../containers/use_create_attachments'; import { useCasesContext } from '../cases_context/use_cases_context'; diff --git a/x-pack/plugins/cases/public/components/files/file_type.test.tsx b/x-pack/plugins/cases/public/components/files/file_type.test.tsx index 0fc01442487f4..6a96870f14cf9 100644 --- a/x-pack/plugins/cases/public/components/files/file_type.test.tsx +++ b/x-pack/plugins/cases/public/components/files/file_type.test.tsx @@ -5,18 +5,17 @@ * 2.0. */ import type { JsonValue } from '@kbn/utility-types'; - +import userEvent from '@testing-library/user-event'; import { screen } from '@testing-library/react'; import type { ExternalReferenceAttachmentViewProps } from '../../client/attachment_framework/types'; import type { AppMockRenderer } from '../../common/mock'; import { AttachmentActionType } from '../../client/attachment_framework/types'; -import { FILE_ATTACHMENT_TYPE } from '../../../common/api'; import { createAppMockRenderer } from '../../common/mock'; import { basicCase, basicFileMock } from '../../containers/mock'; import { getFileType } from './file_type'; -import userEvent from '@testing-library/user-event'; +import { FILE_ATTACHMENT_TYPE } from '../../../common/constants'; describe('getFileType', () => { const fileType = getFileType(); @@ -25,7 +24,7 @@ describe('getFileType', () => { expect(fileType).toStrictEqual({ id: FILE_ATTACHMENT_TYPE, icon: 'document', - displayName: 'File Attachment Type', + displayName: 'Files', getAttachmentViewObject: expect.any(Function), getAttachmentRemovalObject: expect.any(Function), }); @@ -34,11 +33,12 @@ describe('getFileType', () => { describe('getFileAttachmentViewObject', () => { let appMockRender: AppMockRenderer; - const attachmentViewProps = { + const attachmentViewProps: ExternalReferenceAttachmentViewProps = { externalReferenceId: basicFileMock.id, + // @ts-expect-error: files is a proper JSON externalReferenceMetadata: { files: [basicFileMock] }, caseData: { title: basicCase.title, id: basicCase.id }, - } as unknown as ExternalReferenceAttachmentViewProps; + }; beforeEach(() => { jest.clearAllMocks(); @@ -47,7 +47,7 @@ describe('getFileType', () => { it('event renders a clickable name if the file is an image', async () => { appMockRender = createAppMockRenderer(); - // @ts-ignore + // @ts-expect-error: event is defined appMockRender.render(fileType.getAttachmentViewObject({ ...attachmentViewProps }).event); expect(await screen.findByText('my-super-cool-screenshot.png')).toBeInTheDocument(); @@ -57,7 +57,7 @@ describe('getFileType', () => { it('clicking the name rendered in event opens the file preview', async () => { appMockRender = createAppMockRenderer(); - // @ts-ignore + // @ts-expect-error: event is a React element appMockRender.render(fileType.getAttachmentViewObject({ ...attachmentViewProps }).event); userEvent.click(await screen.findByText('my-super-cool-screenshot.png')); @@ -71,18 +71,17 @@ describe('getFileType', () => { expect(attachmentViewObject).not.toBeUndefined(); - // @ts-ignore + // @ts-expect-error: object is defined const actions = attachmentViewObject.getActions(); expect(actions.length).toBe(2); expect(actions[0]).toStrictEqual({ type: AttachmentActionType.CUSTOM, isPrimary: false, - label: 'Download file', render: expect.any(Function), }); - // @ts-ignore + // @ts-expect-error: render exists on CustomAttachmentAction appMockRender.render(actions[0].render()); expect(await screen.findByTestId('cases-files-download-button')).toBeInTheDocument(); @@ -95,18 +94,17 @@ describe('getFileType', () => { expect(attachmentViewObject).not.toBeUndefined(); - // @ts-ignore + // @ts-expect-error: object is defined const actions = attachmentViewObject.getActions(); expect(actions.length).toBe(2); expect(actions[1]).toStrictEqual({ type: AttachmentActionType.CUSTOM, isPrimary: false, - label: 'Delete file', render: expect.any(Function), }); - // @ts-ignore + // @ts-expect-error: render exists on CustomAttachmentAction appMockRender.render(actions[1].render()); expect(await screen.findByTestId('cases-files-delete-button')).toBeInTheDocument(); @@ -119,18 +117,17 @@ describe('getFileType', () => { expect(attachmentViewObject).not.toBeUndefined(); - // @ts-ignore + // @ts-expect-error: object is defined const actions = attachmentViewObject.getActions(); expect(actions.length).toBe(2); expect(actions[1]).toStrictEqual({ type: AttachmentActionType.CUSTOM, isPrimary: false, - label: 'Delete file', render: expect.any(Function), }); - // @ts-ignore + // @ts-expect-error: render exists on CustomAttachmentAction appMockRender.render(actions[1].render()); const deleteButton = await screen.findByTestId('cases-files-delete-button'); @@ -149,7 +146,6 @@ describe('getFileType', () => { event: 'added an unknown file', hideDefaultActions: true, timelineAvatar: 'document', - type: 'regular', getActions: expect.any(Function), }); }); @@ -188,7 +184,7 @@ describe('getFileType', () => { describe('getFileAttachmentRemovalObject', () => { it('event renders the right message', async () => { - // @ts-ignore + // @ts-expect-error: object is defined expect(fileType.getAttachmentRemovalObject().event).toBe('removed file'); }); }); diff --git a/x-pack/plugins/cases/public/components/files/file_type.tsx b/x-pack/plugins/cases/public/components/files/file_type.tsx index 6908b9baead97..6ab16b227b994 100644 --- a/x-pack/plugins/cases/public/components/files/file_type.tsx +++ b/x-pack/plugins/cases/public/components/files/file_type.tsx @@ -7,13 +7,14 @@ import React, { Suspense, lazy } from 'react'; import { EuiLoadingSpinner } from '@elastic/eui'; +import { FILE_ATTACHMENT_TYPE } from '../../../common/constants'; import type { + AttachmentViewObject, ExternalReferenceAttachmentType, ExternalReferenceAttachmentViewProps, } from '../../client/attachment_framework/types'; import { AttachmentActionType } from '../../client/attachment_framework/types'; -import { FILE_ATTACHMENT_TYPE } from '../../../common/api'; import * as i18n from './translations'; import { isImage, isValidFileExternalReferenceMetadata } from './utils'; @@ -47,31 +48,29 @@ const getFileAttachmentActions = ({ caseId, fileId }: { caseId: string; fileId: { type: AttachmentActionType.CUSTOM as const, render: () => getFileDownloadButton(fileId), - label: i18n.DOWNLOAD_FILE, isPrimary: false, }, { type: AttachmentActionType.CUSTOM as const, render: () => getFileDeleteButton(caseId, fileId), - label: i18n.DELETE_FILE, isPrimary: false, }, ]; -const getFileAttachmentViewObject = (props: ExternalReferenceAttachmentViewProps) => { +const getFileAttachmentViewObject = ( + props: ExternalReferenceAttachmentViewProps +): AttachmentViewObject => { const caseId = props.caseData.id; const fileId = props.externalReferenceId; if (!isValidFileExternalReferenceMetadata(props.externalReferenceMetadata)) { return { - type: 'regular', event: i18n.ADDED_UNKNOWN_FILE, timelineAvatar: 'document', getActions: () => [ { - type: AttachmentActionType.CUSTOM as const, + type: AttachmentActionType.CUSTOM, render: () => getFileDeleteButton(caseId, fileId), - label: i18n.DELETE_FILE, isPrimary: false, }, ], @@ -100,7 +99,7 @@ const getFileAttachmentViewObject = (props: ExternalReferenceAttachmentViewProps export const getFileType = (): ExternalReferenceAttachmentType => ({ id: FILE_ATTACHMENT_TYPE, icon: 'document', - displayName: 'File Attachment Type', + displayName: 'Files', getAttachmentViewObject: getFileAttachmentViewObject, getAttachmentRemovalObject: () => ({ event: i18n.REMOVED_FILE }), }); diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/index.ts b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/index.ts index 04f8665e345df..38f81fb6d525f 100644 --- a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/index.ts +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/index.ts @@ -7,7 +7,7 @@ import { plugin } from './plugin'; import { LensParser } from './parser'; -import { LensMarkDownRenderer } from './processor'; import { VISUALIZATION } from './translations'; +import { LensRenderer } from '../../../visualizations/lens_renderer'; -export { plugin, LensParser as parser, LensMarkDownRenderer as renderer, VISUALIZATION }; +export { plugin, LensParser as parser, LensRenderer as renderer, VISUALIZATION }; diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx index 84dddd64ba61b..d9e78330113ee 100644 --- a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx +++ b/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx @@ -6,8 +6,6 @@ */ import { useCallback } from 'react'; -import { i18n } from '@kbn/i18n'; - import type { TypedLensByValueInput } from '@kbn/lens-plugin/public'; import { AttachmentActionType } from '../../../../client/attachment_framework/types'; @@ -16,6 +14,7 @@ import { parseCommentString, getLensVisualizations, } from '../../../../../common/utils/markdown_plugins/utils'; +import { OPEN_IN_VISUALIZATION } from '../../../visualizations/translations'; export const useLensOpenVisualization = ({ comment }: { comment: string }) => { const parsedComment = parseCommentString(comment); @@ -46,12 +45,7 @@ export const useLensOpenVisualization = ({ comment }: { comment: string }) => { : { type: AttachmentActionType.BUTTON as const, iconType: 'lensApp', - label: i18n.translate( - 'xpack.cases.markdownEditor.plugins.lens.openVisualizationButtonLabel', - { - defaultMessage: 'Open visualization', - } - ), + label: OPEN_IN_VISUALIZATION, onClick: handleClick, }, }; diff --git a/x-pack/plugins/cases/public/components/property_actions/index.tsx b/x-pack/plugins/cases/public/components/property_actions/index.tsx index 443cab88760b9..36b0070990c48 100644 --- a/x-pack/plugins/cases/public/components/property_actions/index.tsx +++ b/x-pack/plugins/cases/public/components/property_actions/index.tsx @@ -101,7 +101,7 @@ export const PropertyActions = React.memo( gutterSize="none" > {propertyActions.map((action, key) => ( - + {(action.type === AttachmentActionType.BUTTON && ( + + My button + + + , + "children": } + > + + , + "className": "comment-user-attachment-test", + "data-test-subj": "comment-user-test", + "event": + My event + , + "timelineAvatar": "casesApp", + "timestamp": , + "username": Object { + "data": Object {}, + "enabled": true, + "uid": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0", + "user": Object { + "email": "damaged_raccoon@elastic.co", + "full_name": "Damaged Raccoon", + "username": "damaged_raccoon", + }, + }, + "u_A_tM4n0wPkdiQ9smmd8o0Hr_h61XQfu8aRPh9GMoRoc_0" => Object { + "data": Object {}, + "enabled": true, + "uid": "u_A_tM4n0wPkdiQ9smmd8o0Hr_h61XQfu8aRPh9GMoRoc_0", + "user": Object { + "email": "physical_dinosaur@elastic.co", + "full_name": "Physical Dinosaur", + "username": "physical_dinosaur", + }, + }, + "u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0" => Object { + "data": Object {}, + "enabled": true, + "uid": "u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0", + "user": Object { + "email": "wet_dingo@elastic.co", + "full_name": "Wet Dingo", + "username": "wet_dingo", + }, + }, + } + } + />, + }, +] +`; + +exports[`createRegisteredAttachmentUserActionBuilder builds the buttons correctly when hideDefaultActions=true 1`] = ` +Array [ + Object { + "actions": + + My button + + + , + "children": } + > + + , + "className": "comment-user-attachment-test", + "data-test-subj": "comment-user-test", + "event": + My event + , + "timelineAvatar": "casesApp", + "timestamp": , + "username": Object { + "data": Object {}, + "enabled": true, + "uid": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0", + "user": Object { + "email": "damaged_raccoon@elastic.co", + "full_name": "Damaged Raccoon", + "username": "damaged_raccoon", + }, + }, + "u_A_tM4n0wPkdiQ9smmd8o0Hr_h61XQfu8aRPh9GMoRoc_0" => Object { + "data": Object {}, + "enabled": true, + "uid": "u_A_tM4n0wPkdiQ9smmd8o0Hr_h61XQfu8aRPh9GMoRoc_0", + "user": Object { + "email": "physical_dinosaur@elastic.co", + "full_name": "Physical Dinosaur", + "username": "physical_dinosaur", + }, + }, + "u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0" => Object { + "data": Object {}, + "enabled": true, + "uid": "u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0", + "user": Object { + "email": "wet_dingo@elastic.co", + "full_name": "Wet Dingo", + "username": "wet_dingo", + }, + }, + } + } + />, + }, +] +`; + +exports[`createRegisteredAttachmentUserActionBuilder builds the user action correctly 1`] = ` +Array [ + Object { + "actions": + + , + "children": } + > + + , + "className": "comment-user-attachment-test", + "data-test-subj": "comment-user-test", + "event": + My event + , + "timelineAvatar": "casesApp", + "timestamp": , + "username": Object { + "data": Object {}, + "enabled": true, + "uid": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0", + "user": Object { + "email": "damaged_raccoon@elastic.co", + "full_name": "Damaged Raccoon", + "username": "damaged_raccoon", + }, + }, + "u_A_tM4n0wPkdiQ9smmd8o0Hr_h61XQfu8aRPh9GMoRoc_0" => Object { + "data": Object {}, + "enabled": true, + "uid": "u_A_tM4n0wPkdiQ9smmd8o0Hr_h61XQfu8aRPh9GMoRoc_0", + "user": Object { + "email": "physical_dinosaur@elastic.co", + "full_name": "Physical Dinosaur", + "username": "physical_dinosaur", + }, + }, + "u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0" => Object { + "data": Object {}, + "enabled": true, + "uid": "u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0", + "user": Object { + "email": "wet_dingo@elastic.co", + "full_name": "Wet Dingo", + "username": "wet_dingo", + }, + }, + } + } + />, + }, +] +`; + +exports[`createRegisteredAttachmentUserActionBuilder returns an unknown user action if the attachment type is not registered 1`] = ` +Array [ + Object { + "children": , + "className": "comment-user-not-found", + "data-test-subj": "comment-user-not-found", + "event": + added an attachment of type + + invalid + + , + "timestamp": , + "username": Object { + "data": Object {}, + "enabled": true, + "uid": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0", + "user": Object { + "email": "damaged_raccoon@elastic.co", + "full_name": "Damaged Raccoon", + "username": "damaged_raccoon", + }, + }, + "u_A_tM4n0wPkdiQ9smmd8o0Hr_h61XQfu8aRPh9GMoRoc_0" => Object { + "data": Object {}, + "enabled": true, + "uid": "u_A_tM4n0wPkdiQ9smmd8o0Hr_h61XQfu8aRPh9GMoRoc_0", + "user": Object { + "email": "physical_dinosaur@elastic.co", + "full_name": "Physical Dinosaur", + "username": "physical_dinosaur", + }, + }, + "u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0" => Object { + "data": Object {}, + "enabled": true, + "uid": "u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0", + "user": Object { + "email": "wet_dingo@elastic.co", + "full_name": "Wet Dingo", + "username": "wet_dingo", + }, + }, + } + } + />, + }, +] +`; diff --git a/x-pack/plugins/cases/public/components/user_actions/comment/registered_attachments.test.tsx b/x-pack/plugins/cases/public/components/user_actions/comment/registered_attachments.test.tsx new file mode 100644 index 0000000000000..0a31b0cb875ad --- /dev/null +++ b/x-pack/plugins/cases/public/components/user_actions/comment/registered_attachments.test.tsx @@ -0,0 +1,169 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { screen } from '@testing-library/react'; + +import type { + AttachmentType, + CommonAttachmentViewProps, +} from '../../../client/attachment_framework/types'; +import { AttachmentActionType } from '../../../client/attachment_framework/types'; +import { AttachmentTypeRegistry } from '../../../../common/registry'; +import { getMockBuilderArgs } from '../mock'; +import { createRegisteredAttachmentUserActionBuilder } from './registered_attachments'; +import type { AppMockRenderer } from '../../../common/mock'; +import { createAppMockRenderer } from '../../../common/mock'; + +const getLazyComponent = () => + React.lazy(() => { + return Promise.resolve().then(() => { + return { + // eslint-disable-next-line react/display-name + default: React.memo(() => { + return <>{'My component'}; + }), + }; + }); + }); + +describe('createRegisteredAttachmentUserActionBuilder', () => { + let appMockRender: AppMockRenderer; + + const attachmentTypeId = 'test'; + const builderArgs = getMockBuilderArgs(); + const registry = new AttachmentTypeRegistry>( + 'test-registry' + ); + + const viewProps = { foo: 'bar' }; + const viewObjectProps = { + timelineAvatar: 'casesApp', + children: getLazyComponent(), + event: <>{'My event'}, + }; + + const getAttachmentViewObject = jest.fn().mockReturnValue(viewObjectProps); + const getAttachmentRemovalObject = jest.fn(); + const getAttachmentViewProps = jest.fn().mockReturnValue(viewProps); + const getId = jest.fn().mockReturnValue(attachmentTypeId); + + const item = { + id: attachmentTypeId, + icon: 'test-icon', + displayName: 'Test', + getAttachmentViewObject, + getAttachmentRemovalObject, + }; + + registry.register(item); + + const comment = builderArgs.comments[0]; + + const userActionBuilderArgs = { + userAction: builderArgs.userAction, + userProfiles: builderArgs.userProfiles, + caseData: builderArgs.caseData, + handleDeleteComment: builderArgs.handleDeleteComment, + getId, + getAttachmentViewProps, + isLoading: false, + comment, + registry, + }; + + beforeEach(() => { + appMockRender = createAppMockRenderer(); + jest.clearAllMocks(); + }); + + it('builds the user action correctly', async () => { + expect( + createRegisteredAttachmentUserActionBuilder(userActionBuilderArgs).build() + ).toMatchSnapshot(); + }); + + it('returns an unknown user action if the attachment type is not registered', async () => { + expect( + createRegisteredAttachmentUserActionBuilder({ + ...userActionBuilderArgs, + getId: () => 'invalid', + }).build() + ).toMatchSnapshot(); + }); + + it('calls getAttachmentViewObject with correct arguments', async () => { + createRegisteredAttachmentUserActionBuilder(userActionBuilderArgs).build(); + + expect(getAttachmentViewProps).toHaveBeenCalled(); + expect(getAttachmentViewObject).toBeCalledWith({ + ...viewProps, + attachmentId: comment.id, + caseData: { id: builderArgs.caseData.id, title: builderArgs.caseData.title }, + }); + }); + + it('builds the buttons correctly', async () => { + const actions = [ + { + type: AttachmentActionType.CUSTOM, + render: () => <>{'My button'}, + isPrimary: true, + }, + { + type: AttachmentActionType.BUTTON, + onClick: () => {}, + iconType: 'danger', + label: 'My button 2', + isPrimary: false, + }, + ]; + + getAttachmentViewObject.mockReturnValue({ ...viewObjectProps, getActions: () => actions }); + + expect( + createRegisteredAttachmentUserActionBuilder(userActionBuilderArgs).build() + ).toMatchSnapshot(); + }); + + it('builds the buttons correctly when hideDefaultActions=true', async () => { + const actions = [ + { + type: AttachmentActionType.CUSTOM, + render: () => <>{'My button'}, + isPrimary: true, + }, + { + type: AttachmentActionType.BUTTON, + onClick: () => {}, + iconType: 'danger', + label: 'My button 2', + isPrimary: false, + }, + ]; + + getAttachmentViewObject.mockReturnValue({ + ...viewObjectProps, + getActions: () => actions, + hideDefaultActions: true, + }); + + expect( + createRegisteredAttachmentUserActionBuilder(userActionBuilderArgs).build() + ).toMatchSnapshot(); + }); + + it('renders the children correctly', async () => { + const userAction = + createRegisteredAttachmentUserActionBuilder(userActionBuilderArgs).build()[0]; + + // @ts-expect-error: children is a proper React element + appMockRender.render(userAction.children); + + expect(await screen.findByText('My component')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/cases/public/components/user_actions/comment/registered_attachments.tsx b/x-pack/plugins/cases/public/components/user_actions/comment/registered_attachments.tsx index 5fbcf2e578f94..beb74a87bff9d 100644 --- a/x-pack/plugins/cases/public/components/user_actions/comment/registered_attachments.tsx +++ b/x-pack/plugins/cases/public/components/user_actions/comment/registered_attachments.tsx @@ -19,6 +19,7 @@ import { EuiCallOut, EuiCode, EuiLoadingSpinner, EuiButtonIcon, EuiFlexItem } fr import type { AttachmentType, AttachmentViewObject, + CommonAttachmentViewProps, } from '../../../client/attachment_framework/types'; import { AttachmentActionType } from '../../../client/attachment_framework/types'; @@ -56,7 +57,10 @@ type BuilderArgs = Pick< const getAttachmentRenderer = memoize((cachingKey: string) => { let AttachmentElement: React.ReactElement; - const renderCallback = (attachmentViewObject: AttachmentViewObject, props: object) => { + const renderCallback = ( + attachmentViewObject: AttachmentViewObject, + props: CommonAttachmentViewProps + ) => { if (!attachmentViewObject.children) return; if (!AttachmentElement) { @@ -118,6 +122,7 @@ export const createRegisteredAttachmentUserActionBuilder = < const props = { ...getAttachmentViewProps(), + attachmentId: comment.id, caseData: { id: caseData.id, title: caseData.title }, }; @@ -147,6 +152,7 @@ export const createRegisteredAttachmentUserActionBuilder = < )) || diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx index 08a96ccb8587b..2a997ea9e3e5c 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx @@ -23,7 +23,6 @@ import { MockEmbeddable, mockTimeRange, } from './mocks'; -import { CommentType } from '../../../../common'; import { useKibana } from '../../../common/lib/kibana'; import { waitFor } from '@testing-library/dom'; import { canUseCases } from '../../../client/helpers/can_use_cases'; @@ -176,17 +175,16 @@ describe('createAddToExistingCaseLensAction', () => { expect(mockOpenModal).toHaveBeenCalled(); const getAttachments = mockOpenModal.mock.calls[0][0].getAttachments; - expect(getAttachments()).toEqual( - expect.objectContaining([ - { - comment: `!{lens${JSON.stringify({ - timeRange: mockTimeRange, - attributes: mockAttributes, - })}}`, - type: CommentType.user as const, + expect(getAttachments()).toEqual([ + { + persistableStateAttachmentState: { + attributes: mockAttributes, + timeRange: mockTimeRange, }, - ]) - ); + persistableStateAttachmentTypeId: '.lens', + type: 'persistableState', + }, + ]); }); }); diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.test.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.test.tsx index 7e99bbaae24c6..3b2ebfd0c73be 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.test.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.test.tsx @@ -8,6 +8,7 @@ import { LENS_EMBEDDABLE_TYPE } from '@kbn/lens-plugin/public'; import { ErrorEmbeddable } from '@kbn/embeddable-plugin/public'; import type { Action } from '@kbn/ui-actions-plugin/public'; +import { waitFor } from '@testing-library/dom'; import { createAddToNewCaseLensAction } from './add_to_new_case'; import type { ActionContext, DashboardVisualizationEmbeddable } from './types'; @@ -24,8 +25,6 @@ import { } from './mocks'; import ReactDOM, { unmountComponentAtNode } from 'react-dom'; import { useKibana } from '../../../common/lib/kibana'; -import { CommentType } from '../../../../common'; -import { waitFor } from '@testing-library/dom'; import { canUseCases } from '../../../client/helpers/can_use_cases'; import { getCaseOwnerByAppId } from '../../../../common/utils/owner'; @@ -88,6 +87,7 @@ describe('createAddToNewCaseLensAction', () => { const mockCasePermissions = jest.fn(); beforeEach(() => { + jest.clearAllMocks(); mockUseCasesAddToNewCaseFlyout.mockReturnValue({ open: mockOpenFlyout, }); @@ -177,19 +177,18 @@ describe('createAddToNewCaseLensAction', () => { it('should open flyout', async () => { await waitFor(() => { - expect(mockOpenFlyout).toHaveBeenCalledWith( - expect.objectContaining({ - attachments: [ - { - comment: `!{lens${JSON.stringify({ - timeRange: mockTimeRange, - attributes: mockAttributes, - })}}`, - type: CommentType.user as const, + expect(mockOpenFlyout).toHaveBeenCalledWith({ + attachments: [ + { + persistableStateAttachmentState: { + attributes: mockAttributes, + timeRange: mockTimeRange, }, - ], - }) - ); + persistableStateAttachmentTypeId: '.lens', + type: 'persistableState', + }, + ], + }); }); }); diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/utils.test.ts b/x-pack/plugins/cases/public/components/visualizations/actions/utils.test.ts index 3f61ac958dd18..283f21f1a8650 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/utils.test.ts +++ b/x-pack/plugins/cases/public/components/visualizations/actions/utils.test.ts @@ -51,8 +51,12 @@ describe('utils', () => { // @ts-expect-error: extra attributes are not needed expect(getLensCaseAttachment(embeddable)).toMatchInlineSnapshot(` Object { - "comment": "!{lens{\\"timeRange\\":{},\\"attributes\\":{}}}", - "type": "user", + "persistableStateAttachmentState": Object { + "attributes": Object {}, + "timeRange": Object {}, + }, + "persistableStateAttachmentTypeId": ".lens", + "type": "persistableState", } `); }); diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/utils.ts b/x-pack/plugins/cases/public/components/visualizations/actions/utils.ts index fcf48bfaf0d8b..5fba84fc678e0 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/utils.ts +++ b/x-pack/plugins/cases/public/components/visualizations/actions/utils.ts @@ -6,6 +6,8 @@ */ import type { IEmbeddable } from '@kbn/embeddable-plugin/public'; import { LENS_EMBEDDABLE_TYPE, type Embeddable as LensEmbeddable } from '@kbn/lens-plugin/public'; +import { LENS_ATTACHMENT_TYPE } from '../../../../common/constants/visualizations'; +import type { CommentRequestPersistableStateType } from '../../../../common/api'; import { CommentType } from '../../../../common'; import type { DashboardVisualizationEmbeddable, EmbeddableInput } from './types'; @@ -18,10 +20,14 @@ export const hasInput = (embeddable: DashboardVisualizationEmbeddable) => { return attributes != null && timeRange != null; }; -export const getLensCaseAttachment = ({ timeRange, attributes }: Omit) => ({ - comment: `!{lens${JSON.stringify({ - timeRange, - attributes, - })}}`, - type: CommentType.user as const, -}); +type PersistableStateAttachmentWithoutOwner = Omit; + +export const getLensCaseAttachment = ({ + timeRange, + attributes, +}: Omit): PersistableStateAttachmentWithoutOwner => + ({ + persistableStateAttachmentState: { attributes, timeRange }, + persistableStateAttachmentTypeId: LENS_ATTACHMENT_TYPE, + type: CommentType.persistableState, + } as unknown as PersistableStateAttachmentWithoutOwner); diff --git a/x-pack/plugins/cases/public/components/visualizations/attachment.test.tsx b/x-pack/plugins/cases/public/components/visualizations/attachment.test.tsx new file mode 100644 index 0000000000000..4c5acc11372d8 --- /dev/null +++ b/x-pack/plugins/cases/public/components/visualizations/attachment.test.tsx @@ -0,0 +1,128 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { Suspense } from 'react'; +import { screen, waitFor } from '@testing-library/react'; +import { LENS_ATTACHMENT_TYPE } from '../../../common'; +import type { PersistableStateAttachmentViewProps } from '../../client/attachment_framework/types'; +import { AttachmentActionType } from '../../client/attachment_framework/types'; +import type { AppMockRenderer } from '../../common/mock'; +import { createAppMockRenderer } from '../../common/mock'; +import { basicCase } from '../../containers/mock'; +import { getVisualizationAttachmentType } from './attachment'; + +describe('getVisualizationAttachmentType', () => { + const mockEmbeddableComponent = jest + .fn() + .mockReturnValue(
); + + let appMockRender: AppMockRenderer; + + const attachmentViewProps: PersistableStateAttachmentViewProps = { + persistableStateAttachmentTypeId: LENS_ATTACHMENT_TYPE, + persistableStateAttachmentState: { attributes: {}, timeRange: {} }, + attachmentId: 'test', + caseData: { title: basicCase.title, id: basicCase.id }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + appMockRender = createAppMockRenderer(); + appMockRender.coreStart.lens.EmbeddableComponent = mockEmbeddableComponent; + }); + + it('create the attachment type correctly', () => { + const lensType = getVisualizationAttachmentType(); + + expect(lensType).toStrictEqual({ + id: LENS_ATTACHMENT_TYPE, + icon: 'document', + displayName: 'Visualizations', + getAttachmentViewObject: expect.any(Function), + getAttachmentRemovalObject: expect.any(Function), + }); + }); + + describe('getAttachmentViewObject', () => { + it('renders the event correctly', () => { + const lensType = getVisualizationAttachmentType(); + const event = lensType.getAttachmentViewObject(attachmentViewProps).event; + + expect(event).toBe('added visualization'); + }); + + it('renders the timelineAvatar correctly', () => { + const lensType = getVisualizationAttachmentType(); + const avatar = lensType.getAttachmentViewObject(attachmentViewProps).timelineAvatar; + + expect(avatar).toBe('lensApp'); + }); + + it('does not hide the default actions', () => { + const lensType = getVisualizationAttachmentType(); + const hideDefaultActions = + lensType.getAttachmentViewObject(attachmentViewProps).hideDefaultActions; + + expect(hideDefaultActions).toBe(false); + }); + + it('set the custom actions correctly', () => { + const lensType = getVisualizationAttachmentType(); + const actions = lensType + .getAttachmentViewObject(attachmentViewProps) + .getActions?.(attachmentViewProps)!; + + expect(actions.length).toBe(1); + + expect(actions[0]).toEqual({ + type: AttachmentActionType.CUSTOM, + isPrimary: false, + render: expect.any(Function), + }); + }); + + it('renders the open visualization button correctly', () => { + appMockRender.coreStart.lens.canUseEditor = () => true; + + const lensType = getVisualizationAttachmentType(); + const actions = lensType + .getAttachmentViewObject(attachmentViewProps) + .getActions?.(attachmentViewProps)!; + + const openLensButton = actions[0]; + + // @ts-expect-error: render exists on CustomAttachmentAction + appMockRender.render(openLensButton.render()); + + expect(screen.getByTestId('cases-open-in-visualization-btn')).toBeInTheDocument(); + }); + + it('renders the children correctly', async () => { + const lensType = getVisualizationAttachmentType(); + const Component = lensType.getAttachmentViewObject(attachmentViewProps).children!; + + appMockRender.render( + + + + ); + + await waitFor(() => { + expect(screen.getByTestId('embeddableComponent')); + }); + }); + }); + + describe('getAttachmentRemovalObject', () => { + it('renders the removal event correctly', () => { + const lensType = getVisualizationAttachmentType(); + const event = lensType.getAttachmentRemovalObject?.(attachmentViewProps); + + expect(event).toEqual({ event: 'removed visualization' }); + }); + }); +}); diff --git a/x-pack/plugins/cases/public/components/visualizations/attachment.tsx b/x-pack/plugins/cases/public/components/visualizations/attachment.tsx new file mode 100644 index 0000000000000..70fbdd8e35bd9 --- /dev/null +++ b/x-pack/plugins/cases/public/components/visualizations/attachment.tsx @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 deepEqual from 'fast-deep-equal'; +import { LENS_ATTACHMENT_TYPE } from '../../../common/constants/visualizations'; +import * as i18n from './translations'; + +import type { + PersistableStateAttachmentType, + PersistableStateAttachmentViewProps, +} from '../../client/attachment_framework/types'; +import { AttachmentActionType } from '../../client/attachment_framework/types'; +import type { LensProps } from './types'; +import { OpenLensButton } from './open_lens_button'; +import { LensRenderer } from './lens_renderer'; + +function getOpenLensButton(attachmentId: string, props: LensProps) { + return ( + + ); +} + +const getVisualizationAttachmentActions = (attachmentId: string, props: LensProps) => [ + { + type: AttachmentActionType.CUSTOM as const, + render: () => getOpenLensButton(attachmentId, props), + isPrimary: false, + }, +]; + +const LensAttachment = React.memo( + (props: PersistableStateAttachmentViewProps) => { + const { attributes, timeRange } = props.persistableStateAttachmentState as unknown as LensProps; + + return ; + }, + (prevProps, nextProps) => + deepEqual(prevProps.persistableStateAttachmentState, nextProps.persistableStateAttachmentState) +); + +LensAttachment.displayName = 'LensAttachment'; + +const LensAttachmentRendererLazyComponent = React.lazy(async () => { + return { + default: LensAttachment, + }; +}); + +const getVisualizationAttachmentViewObject = ({ + attachmentId, + persistableStateAttachmentState, +}: PersistableStateAttachmentViewProps) => { + const { attributes: lensAttributes, timeRange: lensTimeRange } = + persistableStateAttachmentState as unknown as LensProps; + + return { + event: i18n.ADDED_VISUALIZATION, + timelineAvatar: 'lensApp', + getActions: () => + getVisualizationAttachmentActions(attachmentId, { + attributes: lensAttributes, + timeRange: lensTimeRange, + }), + hideDefaultActions: false, + children: LensAttachmentRendererLazyComponent, + }; +}; + +export const getVisualizationAttachmentType = (): PersistableStateAttachmentType => ({ + id: LENS_ATTACHMENT_TYPE, + icon: 'document', + displayName: 'Visualizations', + getAttachmentViewObject: getVisualizationAttachmentViewObject, + getAttachmentRemovalObject: () => ({ event: i18n.REMOVED_VISUALIZATION }), +}); diff --git a/x-pack/plugins/cases/public/components/visualizations/index.mock.ts b/x-pack/plugins/cases/public/components/visualizations/index.mock.ts new file mode 100644 index 0000000000000..47ceab5a38c08 --- /dev/null +++ b/x-pack/plugins/cases/public/components/visualizations/index.mock.ts @@ -0,0 +1,96 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const lensVisualization = { + timeRange: { from: 'now-7d', to: 'now', mode: 'relative' }, + attributes: { + title: '', + description: '', + visualizationType: 'lnsXY', + type: 'lens', + references: [ + { + type: 'index-pattern', + id: 'security-solution-default', + name: 'indexpattern-datasource-layer-f7de35b1-ea37-483f-a642-dc261dd3e965', + }, + ], + state: { + visualization: { + legend: { isVisible: true, position: 'right' }, + valueLabels: 'hide', + fittingFunction: 'None', + axisTitlesVisibilitySettings: { x: true, yLeft: true, yRight: true }, + tickLabelsVisibilitySettings: { x: true, yLeft: true, yRight: true }, + labelsOrientation: { x: 0, yLeft: 0, yRight: 0 }, + gridlinesVisibilitySettings: { x: true, yLeft: true, yRight: true }, + preferredSeriesType: 'bar_stacked', + layers: [ + { + layerId: 'f7de35b1-ea37-483f-a642-dc261dd3e965', + accessors: ['7362bd0f-d602-4cbb-8246-37e41b38eeeb'], + position: 'top', + seriesType: 'bar_stacked', + showGridlines: false, + layerType: 'data', + xAccessor: 'dea21c97-cc99-432a-ae0b-fce79f23830d', + }, + ], + }, + query: { query: '', language: 'kuery' }, + filters: [], + datasourceStates: { + formBased: { + layers: { + 'f7de35b1-ea37-483f-a642-dc261dd3e965': { + columns: { + 'dea21c97-cc99-432a-ae0b-fce79f23830d': { + label: 'Top 5 values of host.name', + dataType: 'string', + operationType: 'terms', + scale: 'ordinal', + sourceField: 'host.name', + isBucketed: true, + params: { + size: 5, + orderBy: { type: 'column', columnId: '7362bd0f-d602-4cbb-8246-37e41b38eeeb' }, + orderDirection: 'desc', + otherBucket: true, + missingBucket: false, + parentFormat: { id: 'terms' }, + include: [], + exclude: [], + includeIsRegex: false, + excludeIsRegex: false, + }, + }, + '7362bd0f-d602-4cbb-8246-37e41b38eeeb': { + label: 'Count of records', + dataType: 'number', + operationType: 'count', + isBucketed: false, + scale: 'ratio', + sourceField: '___records___', + params: { emptyAsNull: true }, + }, + }, + columnOrder: [ + 'dea21c97-cc99-432a-ae0b-fce79f23830d', + '7362bd0f-d602-4cbb-8246-37e41b38eeeb', + ], + incompleteColumns: {}, + sampling: 1, + }, + }, + }, + textBased: { layers: {} }, + }, + internalReferences: [], + adHocDataViews: {}, + }, + }, +}; diff --git a/x-pack/plugins/cases/public/components/visualizations/lens_renderer.test.tsx b/x-pack/plugins/cases/public/components/visualizations/lens_renderer.test.tsx new file mode 100644 index 0000000000000..3fcc23adbc21a --- /dev/null +++ b/x-pack/plugins/cases/public/components/visualizations/lens_renderer.test.tsx @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { screen } from '@testing-library/react'; +import type { AppMockRenderer } from '../../common/mock'; +import { createAppMockRenderer } from '../../common/mock'; +import { LensRenderer } from './lens_renderer'; +import { lensVisualization } from './index.mock'; + +describe('LensRenderer', () => { + const mockEmbeddableComponent = jest + .fn() + .mockReturnValue(
); + + let appMockRender: AppMockRenderer; + + beforeEach(() => { + jest.clearAllMocks(); + appMockRender = createAppMockRenderer(); + appMockRender.coreStart.lens.EmbeddableComponent = mockEmbeddableComponent; + }); + + it('renders the lens visualization correctly', () => { + // @ts-expect-error: props are correct + appMockRender.render(); + + expect(screen.getByTestId('embeddableComponent')).toBeInTheDocument(); + }); + + it('renders the lens visualization with correct attributes', () => { + // @ts-expect-error: props are correct + appMockRender.render(); + + expect(mockEmbeddableComponent).toHaveBeenCalledWith( + { + id: '', + attributes: lensVisualization.attributes, + timeRange: lensVisualization.timeRange, + disableTriggers: true, + executionContext: { + type: 'cases', + }, + renderMode: 'view', + style: { + height: 200, + }, + syncCursor: false, + syncTooltips: false, + }, + {} + ); + }); + + it('does not renders the lens visualization if the attributes are not defined', () => { + // @ts-expect-error: props are correct + appMockRender.render(); + + expect(screen.queryByTestId('embeddableComponent')).not.toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/processor.tsx b/x-pack/plugins/cases/public/components/visualizations/lens_renderer.tsx similarity index 68% rename from x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/processor.tsx rename to x-pack/plugins/cases/public/components/visualizations/lens_renderer.tsx index b1a13c067f343..3ab0b272cd6ac 100644 --- a/x-pack/plugins/cases/public/components/markdown_editor/plugins/lens/processor.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/lens_renderer.tsx @@ -9,9 +9,10 @@ import React from 'react'; import styled from 'styled-components'; import { createGlobalStyle } from '@kbn/kibana-react-plugin/common'; -import type { TypedLensByValueInput } from '@kbn/lens-plugin/public'; -import { useKibana } from '../../../../common/lib/kibana'; -import { LENS_VISUALIZATION_HEIGHT } from './constants'; +import { useKibana } from '../../common/lib/kibana'; +import type { LensProps } from './types'; + +const LENS_VISUALIZATION_HEIGHT = 200; const Container = styled.div` min-height: ${LENS_VISUALIZATION_HEIGHT}px; @@ -24,15 +25,7 @@ const LensChartTooltipFix = createGlobalStyle` } `; -interface LensMarkDownRendererProps { - attributes: TypedLensByValueInput['attributes'] | null; - timeRange?: TypedLensByValueInput['timeRange']; -} - -const LensMarkDownRendererComponent: React.FC = ({ - attributes, - timeRange, -}) => { +const LensRendererComponent: React.FC = ({ attributes, timeRange }) => { const { lens: { EmbeddableComponent }, } = useKibana().services; @@ -60,6 +53,7 @@ const LensMarkDownRendererComponent: React.FC = ({ ); }; -LensMarkDownRendererComponent.displayName = 'LensMarkDownRenderer'; -export const LensMarkDownRenderer = React.memo(LensMarkDownRendererComponent); +LensRendererComponent.displayName = 'LensRenderer'; + +export const LensRenderer = React.memo(LensRendererComponent); diff --git a/x-pack/plugins/cases/public/components/visualizations/open_lens_button.test.tsx b/x-pack/plugins/cases/public/components/visualizations/open_lens_button.test.tsx new file mode 100644 index 0000000000000..ed3908c279ac0 --- /dev/null +++ b/x-pack/plugins/cases/public/components/visualizations/open_lens_button.test.tsx @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { screen } from '@testing-library/react'; +import type { AppMockRenderer } from '../../common/mock'; +import { createAppMockRenderer } from '../../common/mock'; +import { OpenLensButton } from './open_lens_button'; +import { lensVisualization } from './index.mock'; +import userEvent from '@testing-library/user-event'; + +describe('OpenLensButton', () => { + const props = { + attachmentId: 'test', + ...lensVisualization, + }; + + let appMockRender: AppMockRenderer; + + beforeEach(() => { + jest.clearAllMocks(); + appMockRender = createAppMockRenderer(); + appMockRender.coreStart.lens.canUseEditor = () => true; + }); + + it('renders the button correctly', () => { + const navigateToPrefilledEditor = jest.fn(); + appMockRender.coreStart.lens.navigateToPrefilledEditor = navigateToPrefilledEditor; + // @ts-expect-error: props are correct + appMockRender.render(); + + expect(screen.getByText('Open visualization')).toBeInTheDocument(); + }); + + it('calls navigateToPrefilledEditor correctly', () => { + const navigateToPrefilledEditor = jest.fn(); + appMockRender.coreStart.lens.navigateToPrefilledEditor = navigateToPrefilledEditor; + // @ts-expect-error: props are correct + appMockRender.render(); + + userEvent.click(screen.getByTestId('cases-open-in-visualization-btn')); + + expect(navigateToPrefilledEditor).toBeCalledWith( + { + id: props.attachmentId, + ...lensVisualization, + }, + { openInNewTab: true } + ); + }); + + it('returns null if the user does not have access to lens', () => { + appMockRender.coreStart.lens.canUseEditor = () => false; + // @ts-expect-error: props are correct + appMockRender.render(); + + expect(screen.queryByText('Open visualization')).not.toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/cases/public/components/visualizations/open_lens_button.tsx b/x-pack/plugins/cases/public/components/visualizations/open_lens_button.tsx new file mode 100644 index 0000000000000..365f2134a0d0a --- /dev/null +++ b/x-pack/plugins/cases/public/components/visualizations/open_lens_button.tsx @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { EuiButtonEmpty } from '@elastic/eui'; +import React, { useCallback } from 'react'; +import { useKibana } from '../../common/lib/kibana'; +import { OPEN_IN_VISUALIZATION } from './translations'; +import type { LensProps } from './types'; + +type Props = LensProps & { attachmentId: string }; + +const OpenLensButtonComponent: React.FC = ({ attachmentId, attributes, timeRange }) => { + const { + lens: { navigateToPrefilledEditor, canUseEditor }, + } = useKibana().services; + + const onClick = useCallback(() => { + navigateToPrefilledEditor( + { + id: attachmentId, + timeRange, + attributes, + }, + { + openInNewTab: true, + } + ); + }, [attachmentId, attributes, navigateToPrefilledEditor, timeRange]); + + const hasLensPermissions = canUseEditor(); + + if (!hasLensPermissions) { + return null; + } + + return ( + + {OPEN_IN_VISUALIZATION} + + ); +}; + +OpenLensButtonComponent.displayName = 'OpenLensButton'; + +export const OpenLensButton = React.memo(OpenLensButtonComponent); diff --git a/x-pack/plugins/cases/public/components/visualizations/translations.tsx b/x-pack/plugins/cases/public/components/visualizations/translations.tsx new file mode 100644 index 0000000000000..0d450914645e7 --- /dev/null +++ b/x-pack/plugins/cases/public/components/visualizations/translations.tsx @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const ADDED_VISUALIZATION = i18n.translate( + 'xpack.cases.caseView.visualizations.addedVisualization', + { + defaultMessage: 'added visualization', + } +); + +export const REMOVED_VISUALIZATION = i18n.translate( + 'xpack.cases.caseView.visualizations.removedVisualization', + { + defaultMessage: 'removed visualization', + } +); + +export const OPEN_IN_VISUALIZATION = i18n.translate( + 'xpack.cases.caseView.visualizations.openVisualizationButtonLabel', + { + defaultMessage: 'Open visualization', + } +); diff --git a/x-pack/plugins/cases/public/components/visualizations/types.ts b/x-pack/plugins/cases/public/components/visualizations/types.ts new file mode 100644 index 0000000000000..b4f2d33d3d482 --- /dev/null +++ b/x-pack/plugins/cases/public/components/visualizations/types.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { TypedLensByValueInput } from '@kbn/lens-plugin/public'; + +export type LensProps = Pick; diff --git a/x-pack/plugins/cases/public/internal_attachments/index.ts b/x-pack/plugins/cases/public/internal_attachments/index.ts index c8457d9a16a1b..6d177fe5d7d84 100644 --- a/x-pack/plugins/cases/public/internal_attachments/index.ts +++ b/x-pack/plugins/cases/public/internal_attachments/index.ts @@ -6,10 +6,14 @@ */ import type { ExternalReferenceAttachmentTypeRegistry } from '../client/attachment_framework/external_reference_registry'; +import type { PersistableStateAttachmentTypeRegistry } from '../client/attachment_framework/persistable_state_registry'; import { getFileType } from '../components/files/file_type'; +import { getVisualizationAttachmentType } from '../components/visualizations/attachment'; export const registerInternalAttachments = ( - externalRefRegistry: ExternalReferenceAttachmentTypeRegistry + externalRefRegistry: ExternalReferenceAttachmentTypeRegistry, + persistableStateRegistry: PersistableStateAttachmentTypeRegistry ) => { externalRefRegistry.register(getFileType()); + persistableStateRegistry.register(getVisualizationAttachmentType()); }; diff --git a/x-pack/plugins/cases/public/plugin.ts b/x-pack/plugins/cases/public/plugin.ts index ee07fc217f2c1..82d62f2c07da7 100644 --- a/x-pack/plugins/cases/public/plugin.ts +++ b/x-pack/plugins/cases/public/plugin.ts @@ -56,7 +56,11 @@ export class CasesUiPlugin const externalReferenceAttachmentTypeRegistry = this.externalReferenceAttachmentTypeRegistry; const persistableStateAttachmentTypeRegistry = this.persistableStateAttachmentTypeRegistry; - registerInternalAttachments(externalReferenceAttachmentTypeRegistry); + registerInternalAttachments( + externalReferenceAttachmentTypeRegistry, + persistableStateAttachmentTypeRegistry + ); + const config = this.initializerContext.config.get(); registerCaseFileKinds(config.files, plugins.files); if (plugins.home) { diff --git a/x-pack/plugins/cases/server/common/limiter_checker/test_utils.ts b/x-pack/plugins/cases/server/common/limiter_checker/test_utils.ts index 1f0423dc323f5..f0c990e439bdf 100644 --- a/x-pack/plugins/cases/server/common/limiter_checker/test_utils.ts +++ b/x-pack/plugins/cases/server/common/limiter_checker/test_utils.ts @@ -5,11 +5,8 @@ * 2.0. */ -import { - CommentType, - ExternalReferenceStorageType, - FILE_ATTACHMENT_TYPE, -} from '../../../common/api'; +import { FILE_ATTACHMENT_TYPE } from '../../../common/constants'; +import { CommentType, ExternalReferenceStorageType } from '../../../common/api'; import type { CommentRequestUserType, CommentRequestAlertType, diff --git a/x-pack/plugins/cases/server/internal_attachments/index.ts b/x-pack/plugins/cases/server/internal_attachments/index.ts index 0a3eab9953cd7..d52f8248be10f 100644 --- a/x-pack/plugins/cases/server/internal_attachments/index.ts +++ b/x-pack/plugins/cases/server/internal_attachments/index.ts @@ -6,18 +6,19 @@ */ import { badRequest } from '@hapi/boom'; +import { LENS_ATTACHMENT_TYPE } from '../../common/constants/visualizations'; +import { FILE_ATTACHMENT_TYPE } from '../../common/constants'; -import { - FileAttachmentMetadataRt, - FILE_ATTACHMENT_TYPE, - decodeWithExcessOrThrow, -} from '../../common/api'; +import { FileAttachmentMetadataRt, decodeWithExcessOrThrow } from '../../common/api'; import type { ExternalReferenceAttachmentTypeRegistry } from '../attachment_framework/external_reference_registry'; +import type { PersistableStateAttachmentTypeRegistry } from '../attachment_framework/persistable_state_registry'; export const registerInternalAttachments = ( - externalRefRegistry: ExternalReferenceAttachmentTypeRegistry + externalRefRegistry: ExternalReferenceAttachmentTypeRegistry, + persistableStateRegistry: PersistableStateAttachmentTypeRegistry ) => { externalRefRegistry.register({ id: FILE_ATTACHMENT_TYPE, schemaValidator }); + persistableStateRegistry.register({ id: LENS_ATTACHMENT_TYPE }); }; const schemaValidator = (data: unknown): void => { diff --git a/x-pack/plugins/cases/server/mocks.ts b/x-pack/plugins/cases/server/mocks.ts index c108ccaed45f2..479873f7c0a9e 100644 --- a/x-pack/plugins/cases/server/mocks.ts +++ b/x-pack/plugins/cases/server/mocks.ts @@ -12,13 +12,116 @@ import type { CommentRequestAlertType, CommentRequestUserType, ConnectorMappings, + UserActionAttributes, +} from '../common/api'; +import { + Actions, + ActionTypes, + CaseSeverity, + CaseStatuses, + CommentType, + ConnectorTypes, } from '../common/api'; -import { CaseSeverity, CaseStatuses, CommentType, ConnectorTypes } from '../common/api'; import { SECURITY_SOLUTION_OWNER } from '../common/constants'; import type { CasesStart } from './types'; import { createCasesClientMock } from './client/mocks'; import type { CaseSavedObjectTransformed } from './common/types/case'; +const lensPersistableState = { + attributes: { + title: '', + description: '', + visualizationType: 'lnsXY', + type: 'lens', + references: [ + { + type: 'index-pattern', + id: 'security-solution-default', + name: 'indexpattern-datasource-layer-3298543e-9615-4df1-bc10-248cb0ec857f', + }, + ], + state: { + visualization: { + legend: { + isVisible: true, + position: 'right', + }, + valueLabels: 'hide', + fittingFunction: 'None', + axisTitlesVisibilitySettings: { + x: true, + yLeft: true, + yRight: true, + }, + tickLabelsVisibilitySettings: { + x: true, + yLeft: true, + yRight: true, + }, + labelsOrientation: { + x: 0, + yLeft: 0, + yRight: 0, + }, + gridlinesVisibilitySettings: { + x: true, + yLeft: true, + yRight: true, + }, + preferredSeriesType: 'bar_stacked', + layers: [ + { + layerId: '3298543e-9615-4df1-bc10-248cb0ec857f', + accessors: ['fde6cfef-44d7-452c-9c0a-5c797cbb0d40'], + position: 'top', + seriesType: 'bar_stacked', + showGridlines: false, + layerType: 'data', + }, + ], + }, + query: { + query: '', + language: 'kuery', + }, + filters: [], + datasourceStates: { + formBased: { + layers: { + '3298543e-9615-4df1-bc10-248cb0ec857f': { + columns: { + 'fde6cfef-44d7-452c-9c0a-5c797cbb0d40': { + label: 'Count of records', + dataType: 'number', + operationType: 'count', + isBucketed: false, + scale: 'ratio', + sourceField: '___records___', + params: { + emptyAsNull: true, + }, + }, + }, + columnOrder: ['fde6cfef-44d7-452c-9c0a-5c797cbb0d40'], + incompleteColumns: {}, + sampling: 1, + }, + }, + }, + textBased: { + layers: {}, + }, + }, + internalReferences: [], + adHocDataViews: {}, + }, + }, + timeRange: { + from: 'now-15m', + to: 'now', + }, +}; + export const mockCases: CaseSavedObjectTransformed[] = [ { type: 'cases', @@ -412,6 +515,131 @@ export const mockCaseComments: Array> = [ updated_at: '2019-11-25T22:32:30.608Z', version: 'WzYsMV0=', }, + { + type: 'cases-comment', + id: 'mock-comment-7', + attributes: { + type: CommentType.persistableState, + persistableStateAttachmentTypeId: '.lens', + persistableStateAttachmentState: lensPersistableState, + owner: 'cases', + created_at: '2023-06-05T08:56:53.794Z', + created_by: { + email: null, + full_name: null, + username: 'elastic', + profile_uid: 'u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0', + }, + pushed_at: null, + pushed_by: null, + updated_at: '2019-11-25T22:32:30.608Z', + updated_by: null, + }, + references: [ + { + type: 'cases', + name: 'associated-cases', + id: 'mock-id-4', + }, + ], + updated_at: '2019-11-25T22:32:30.608Z', + version: 'WzE1NjM2ODQsMTFd', + }, +]; + +export const mockUsersActions: Array> = [ + { + type: 'cases-user-actions', + id: 'mock-user-action-1', + attributes: { + type: ActionTypes.description, + action: Actions.update, + payload: { description: 'test' }, + created_at: '2019-11-25T21:55:00.177Z', + created_by: { + full_name: 'elastic', + email: 'testemail@elastic.co', + username: 'elastic', + }, + comment_id: null, + owner: SECURITY_SOLUTION_OWNER, + }, + references: [ + { + type: 'cases', + name: 'associated-cases', + id: 'mock-id-1', + }, + ], + updated_at: '2019-11-25T21:55:00.177Z', + version: 'WzEsMV0=', + }, + { + type: 'cases-user-actions', + id: 'mock-user-action-2', + attributes: { + type: ActionTypes.comment, + action: Actions.update, + payload: { + comment: { + type: CommentType.persistableState, + persistableStateAttachmentTypeId: '.test', + persistableStateAttachmentState: {}, + owner: 'cases', + }, + }, + created_at: '2019-11-25T21:55:00.177Z', + created_by: { + full_name: 'elastic', + email: 'testemail@elastic.co', + username: 'elastic', + }, + comment_id: null, + owner: SECURITY_SOLUTION_OWNER, + }, + references: [ + { + type: 'cases', + name: 'associated-cases', + id: 'mock-id-1', + }, + ], + updated_at: '2019-11-25T21:55:00.177Z', + version: 'WzEsMV0=', + }, + { + type: 'cases-user-actions', + id: 'mock-user-action-3', + attributes: { + type: ActionTypes.comment, + action: Actions.update, + payload: { + comment: { + type: CommentType.persistableState, + persistableStateAttachmentTypeId: '.lens', + persistableStateAttachmentState: lensPersistableState, + owner: 'cases', + }, + }, + created_at: '2019-11-25T21:55:00.177Z', + created_by: { + full_name: 'elastic', + email: 'testemail@elastic.co', + username: 'elastic', + }, + comment_id: null, + owner: SECURITY_SOLUTION_OWNER, + }, + references: [ + { + type: 'cases', + name: 'associated-cases', + id: 'mock-id-1', + }, + ], + updated_at: '2019-11-25T21:55:00.177Z', + version: 'WzEsMV0=', + }, ]; export const newCase: CasePostRequest = { diff --git a/x-pack/plugins/cases/server/plugin.ts b/x-pack/plugins/cases/server/plugin.ts index 6fcf27e6410e6..0ae005e09b188 100644 --- a/x-pack/plugins/cases/server/plugin.ts +++ b/x-pack/plugins/cases/server/plugin.ts @@ -112,7 +112,10 @@ export class CasePlugin { )}] and plugins [${Object.keys(plugins)}]` ); - registerInternalAttachments(this.externalReferenceAttachmentTypeRegistry); + registerInternalAttachments( + this.externalReferenceAttachmentTypeRegistry, + this.persistableStateAttachmentTypeRegistry + ); registerCaseFileKinds(this.caseConfig.files, plugins.files); this.securityPluginSetup = plugins.security; diff --git a/x-pack/plugins/cases/server/saved_object_types/migrations/comments.test.ts b/x-pack/plugins/cases/server/saved_object_types/migrations/comments.test.ts index fd6c59c837516..dee9bdf95f44a 100644 --- a/x-pack/plugins/cases/server/saved_object_types/migrations/comments.test.ts +++ b/x-pack/plugins/cases/server/saved_object_types/migrations/comments.test.ts @@ -16,6 +16,7 @@ import { getLensVisualizations, parseCommentString, } from '../../../common/utils/markdown_plugins/utils'; +import type { AttributesTypePersistableState } from '../../../common/api'; import { CommentType } from '../../../common/api'; import { savedObjectsServiceMock } from '@kbn/core/server/mocks'; @@ -33,12 +34,14 @@ import type { SerializableRecord } from '@kbn/utility-types'; import { GENERATED_ALERT, SUB_CASE_SAVED_OBJECT } from './constants'; import { PersistableStateAttachmentTypeRegistry } from '../../attachment_framework/persistable_state_registry'; import { omit, partition } from 'lodash'; +import gte from 'semver/functions/gte'; import type { + SavedObject, SavedObjectMigrationFn, SavedObjectMigrationMap, SavedObjectMigrationParams, } from '@kbn/core-saved-objects-server'; -import { gte } from 'semver'; +import { mockCaseComments } from '../../mocks'; describe('comments migrations', () => { const contextMock = savedObjectsServiceMock.createMigrationContext(); @@ -329,6 +332,82 @@ describe('comments migrations', () => { expect(migration).toEqual(expect.any(Function)); } }); + + describe('persistable state lens migrations', () => { + it('migrates correctly persistable state lens attachments', () => { + const persistableAttachment = + mockCaseComments[6] as SavedObject; + const persistableAttachmentState = + persistableAttachment.attributes.persistableStateAttachmentState; + + const migratedPersistableAttachmentState = { + ...persistableAttachmentState, + // @ts-expect-error: lens attributes can be spread + attributes: { ...persistableAttachmentState.attributes, foo: 'bar' }, + }; + + const migrateFunction = jest.fn().mockReturnValue(migratedPersistableAttachmentState); + + const migrations = createCommentsMigrations({ + persistableStateAttachmentTypeRegistry: new PersistableStateAttachmentTypeRegistry(), + lensEmbeddableFactory: () => ({ + id: 'test', + migrations: { '8.9.0': migrateFunction }, + }), + }); + + const result = SavedObjectsUtils.getMigrationFunction(migrations['8.9.0'])( + persistableAttachment, + contextMock + ); + + expect(result).toEqual({ + ...persistableAttachment, + attributes: { + ...persistableAttachment.attributes, + persistableStateAttachmentState: migratedPersistableAttachmentState, + }, + }); + }); + + it('logs and do not throw in case of a migration error', () => { + const persistableAttachment = + mockCaseComments[6] as SavedObject; + + const migrateFunction = jest.fn().mockImplementation(() => { + throw new Error('an error'); + }); + + const migrations = createCommentsMigrations({ + persistableStateAttachmentTypeRegistry: new PersistableStateAttachmentTypeRegistry(), + lensEmbeddableFactory: () => ({ + id: 'test', + migrations: { '8.9.0': migrateFunction }, + }), + }); + + const result = SavedObjectsUtils.getMigrationFunction(migrations['8.9.0'])( + persistableAttachment, + contextMock + ); + + expect(result).toEqual(persistableAttachment); + + const log = contextMock.log as jest.Mocked; + expect(log.error.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + "Failed to migrate comment persistable lens attachment with doc id: mock-comment-7 version: 8.0.0 error: an error", + Object { + "migrations": Object { + "comment": Object { + "id": "mock-comment-7", + }, + }, + }, + ] + `); + }); + }); }); describe('handles errors', () => { @@ -351,6 +430,22 @@ describe('comments migrations', () => { id: '1cefd0d0-e86d-11eb-bae5-3d065cd16a32', attributes: { comment, + owner: 'cases', + type: CommentType.user, + created_at: '2021-07-19T08:41:29.951Z', + created_by: { + email: null, + full_name: null, + username: 'elastic', + }, + pushed_at: null, + pushed_by: null, + updated_at: '2021-07-19T08:41:47.549Z', + updated_by: { + full_name: null, + email: null, + username: 'elastic', + }, }, references: [], }; @@ -365,7 +460,7 @@ describe('comments migrations', () => { const log = contextMock.log as jest.Mocked; expect(log.error.mock.calls[0]).toMatchInlineSnapshot(` Array [ - "Failed to migrate comment with doc id: 1cefd0d0-e86d-11eb-bae5-3d065cd16a32 version: 8.0.0 error: an error", + "Failed to migrate lens comment with doc id: 1cefd0d0-e86d-11eb-bae5-3d065cd16a32 version: 8.0.0 error: an error", Object { "migrations": Object { "comment": Object { @@ -395,7 +490,7 @@ describe('comments migrations', () => { const log = contextMock.log as jest.Mocked; expect(log.error.mock.calls[0]).toMatchInlineSnapshot(` Array [ - "Failed to migrate comment with doc id: 1cefd0d0-e86d-11eb-bae5-3d065cd16a32 version: 8.0.0 error: an error", + "Failed to migrate lens comment with doc id: 1cefd0d0-e86d-11eb-bae5-3d065cd16a32 version: 8.0.0 error: an error", Object { "migrations": Object { "comment": Object { diff --git a/x-pack/plugins/cases/server/saved_object_types/migrations/comments.ts b/x-pack/plugins/cases/server/saved_object_types/migrations/comments.ts index 41943f90da199..3fc4afac6fd6b 100644 --- a/x-pack/plugins/cases/server/saved_object_types/migrations/comments.ts +++ b/x-pack/plugins/cases/server/saved_object_types/migrations/comments.ts @@ -5,9 +5,9 @@ * 2.0. */ -import { mapValues, trimEnd, cloneDeep, unset } from 'lodash'; +import { trimEnd, cloneDeep, unset } from 'lodash'; import type { SerializableRecord } from '@kbn/utility-types'; -import type { MigrateFunction, MigrateFunctionsObject } from '@kbn/kibana-utils-plugin/common'; +import type { MigrateFunction } from '@kbn/kibana-utils-plugin/common'; import type { SavedObjectUnsanitizedDoc, SavedObjectSanitizedDoc, @@ -17,6 +17,7 @@ import type { import { mergeSavedObjectMigrationMaps } from '@kbn/core/server'; import type { LensServerPluginSetup } from '@kbn/lens-plugin/server'; import type { SavedObjectMigrationParams } from '@kbn/core-saved-objects-server'; +import type { AttributesTypePersistableState, AttributesTypeUser } from '../../../common/api'; import { CommentType } from '../../../common/api'; import type { LensMarkdownNode, MarkdownNode } from '../../../common/utils/markdown_plugins/utils'; import { @@ -26,9 +27,20 @@ import { } from '../../../common/utils/markdown_plugins/utils'; import type { SanitizedCaseOwner } from '.'; import { addOwnerToSO } from '.'; -import { isDeferredMigration, logError } from './utils'; -import { GENERATED_ALERT, MIN_DEFERRED_KIBANA_VERSION, SUB_CASE_SAVED_OBJECT } from './constants'; +import { + getLensMigrations, + isDeferredMigration, + isPersistableStateAttachmentSO, + isUserCommentSO, + logError, +} from './utils'; +import { + GENERATED_ALERT, + MIN_COMMENTS_DEFERRED_KIBANA_VERSION, + SUB_CASE_SAVED_OBJECT, +} from './constants'; import type { PersistableStateAttachmentTypeRegistry } from '../../attachment_framework/persistable_state_registry'; +import type { AttachmentPersistedAttributes } from '../../common/types/attachments'; interface UnsanitizedComment { comment: string; @@ -57,14 +69,10 @@ export interface CreateCommentsMigrationsDeps { export const createCommentsMigrations = ( migrationDeps: CreateCommentsMigrationsDeps ): SavedObjectMigrationMap => { - const lensMigrations = migrationDeps.lensEmbeddableFactory().migrations; - const lensMigrationObject = - typeof lensMigrations === 'function' ? lensMigrations() : lensMigrations || {}; - - const embeddableMigrations = mapValues< - MigrateFunctionsObject, - SavedObjectMigrationParams<{ comment?: string }, { comment?: string }> - >(lensMigrationObject, migrateByValueLensVisualizations); + const embeddableMigrations = getLensMigrations({ + lensEmbeddableFactory: migrationDeps.lensEmbeddableFactory, + migratorFactory: migrateByValueLensVisualizations, + }); const commentsMigrations = { '7.11.0': ( @@ -122,52 +130,100 @@ export const createCommentsMigrations = ( export const migrateByValueLensVisualizations = ( migrate: MigrateFunction, migrationVersion: string -): SavedObjectMigrationParams<{ comment?: string }, { comment?: string }> => { - const deferred = isDeferredMigration(MIN_DEFERRED_KIBANA_VERSION, migrationVersion); +): SavedObjectMigrationParams => { + const deferred = isDeferredMigration(MIN_COMMENTS_DEFERRED_KIBANA_VERSION, migrationVersion); return { // @ts-expect-error: remove when core changes the types deferred, transform: ( - doc: SavedObjectUnsanitizedDoc<{ comment?: string }>, + doc: SavedObjectUnsanitizedDoc, context: SavedObjectMigrationContext - ) => { - if (doc.attributes.comment == null) { - return doc; + ): SavedObjectSanitizedDoc => { + if (isUserCommentSO(doc)) { + return migrateLensComment({ migrate, doc, context }); } - try { - const parsedComment = parseCommentString(doc.attributes.comment); - const migratedComment = parsedComment.children.map((comment) => { - if (isLensMarkdownNode(comment)) { - // casting here because ts complains that comment isn't serializable because LensMarkdownNode - // extends Node which has fields that conflict with SerializableRecord even though it is serializable - return migrate(comment as SerializableRecord) as LensMarkdownNode; - } - - return comment; - }); - - const migratedMarkdown = { ...parsedComment, children: migratedComment }; - - return { - ...doc, - attributes: { - ...doc.attributes, - comment: stringifyCommentWithoutTrailingNewline( - doc.attributes.comment, - migratedMarkdown - ), - }, - }; - } catch (error) { - logError({ id: doc.id, context, error, docType: 'comment', docKey: 'comment' }); - return doc; + if (isPersistableStateAttachmentSO(doc)) { + return migratePersistableLensAttachment({ migrate, doc, context }); } + + return Object.assign(doc, { references: doc.references ?? [] }); }, }; }; +const migrateLensComment = ({ + migrate, + doc, + context, +}: { + migrate: MigrateFunction; + doc: SavedObjectUnsanitizedDoc; + context: SavedObjectMigrationContext; +}): SavedObjectSanitizedDoc => { + try { + const parsedComment = parseCommentString(doc.attributes.comment); + const migratedComment = parsedComment.children.map((comment) => { + if (isLensMarkdownNode(comment)) { + // casting here because ts complains that comment isn't serializable because LensMarkdownNode + // extends Node which has fields that conflict with SerializableRecord even though it is serializable + return migrate(comment as SerializableRecord) as LensMarkdownNode; + } + + return comment; + }); + + const migratedMarkdown = { ...parsedComment, children: migratedComment }; + + return { + ...doc, + attributes: { + ...doc.attributes, + comment: stringifyCommentWithoutTrailingNewline(doc.attributes.comment, migratedMarkdown), + }, + references: doc.references ?? [], + }; + } catch (error) { + logError({ id: doc.id, context, error, docType: 'lens comment', docKey: 'comment' }); + return Object.assign(doc, { references: doc.references ?? [] }); + } +}; + +const migratePersistableLensAttachment = ({ + migrate, + doc, + context, +}: { + migrate: MigrateFunction; + doc: SavedObjectUnsanitizedDoc; + context: SavedObjectMigrationContext; +}): SavedObjectSanitizedDoc => { + try { + const { persistableStateAttachmentState } = doc.attributes; + + const migratedLensAttachment = migrate(persistableStateAttachmentState); + + return { + ...doc, + attributes: { + ...doc.attributes, + persistableStateAttachmentState: migratedLensAttachment, + } as AttachmentPersistedAttributes, + references: doc.references ?? [], + }; + } catch (error) { + logError({ + id: doc.id, + context, + error, + docType: 'comment persistable lens attachment', + docKey: 'comment', + }); + return Object.assign(doc, { references: doc.references ?? [] }); + } +}; + export const stringifyCommentWithoutTrailingNewline = ( originalComment: string, markdownNode: MarkdownNode diff --git a/x-pack/plugins/cases/server/saved_object_types/migrations/constants.ts b/x-pack/plugins/cases/server/saved_object_types/migrations/constants.ts index e08b0632419b3..6de61f39b9b7e 100644 --- a/x-pack/plugins/cases/server/saved_object_types/migrations/constants.ts +++ b/x-pack/plugins/cases/server/saved_object_types/migrations/constants.ts @@ -13,4 +13,4 @@ export const COMMENT_ASSOCIATION_TYPE = 'case'; export const CASE_TYPE_INDIVIDUAL = 'individual'; export const SUB_CASE_SAVED_OBJECT = 'cases-sub-case'; -export const MIN_DEFERRED_KIBANA_VERSION = '8.9.0'; +export const MIN_COMMENTS_DEFERRED_KIBANA_VERSION = '8.9.0'; diff --git a/x-pack/plugins/cases/server/saved_object_types/migrations/utils.test.ts b/x-pack/plugins/cases/server/saved_object_types/migrations/utils.test.ts index 71e1a7397da3a..c9ef3af362f28 100644 --- a/x-pack/plugins/cases/server/saved_object_types/migrations/utils.test.ts +++ b/x-pack/plugins/cases/server/saved_object_types/migrations/utils.test.ts @@ -7,8 +7,14 @@ import type { SavedObjectsMigrationLogger } from '@kbn/core/server'; import { migrationMocks } from '@kbn/core/server/mocks'; -import { MIN_DEFERRED_KIBANA_VERSION } from './constants'; -import { isDeferredMigration, logError } from './utils'; +import { mockCaseComments } from '../../mocks'; +import { MIN_COMMENTS_DEFERRED_KIBANA_VERSION } from './constants'; +import { + isDeferredMigration, + isUserCommentSO, + logError, + isPersistableStateAttachmentSO, +} from './utils'; describe('migration utils', () => { const context = migrationMocks.createContext(); @@ -46,15 +52,15 @@ describe('migration utils', () => { describe('isDeferredMigration', () => { it('should mark the migration as deferred if the migration version is greater than the Kibana version', () => { - expect(isDeferredMigration(MIN_DEFERRED_KIBANA_VERSION, '8.10.0')).toBe(true); + expect(isDeferredMigration(MIN_COMMENTS_DEFERRED_KIBANA_VERSION, '8.10.0')).toBe(true); }); it('should mark the migration as not deferred if the migration version is smaller than the Kibana version', () => { - expect(isDeferredMigration(MIN_DEFERRED_KIBANA_VERSION, '8.8.0')).toBe(false); + expect(isDeferredMigration(MIN_COMMENTS_DEFERRED_KIBANA_VERSION, '8.8.0')).toBe(false); }); it('should mark the migration as deferred if the migration version is equal to the Kibana version', () => { - expect(isDeferredMigration(MIN_DEFERRED_KIBANA_VERSION, '8.9.0')).toBe(true); + expect(isDeferredMigration(MIN_COMMENTS_DEFERRED_KIBANA_VERSION, '8.9.0')).toBe(true); }); it('should return false if the Kibana version is not a valid semver', () => { @@ -62,7 +68,27 @@ describe('migration utils', () => { }); it('should return false if the migration version is not a valid semver', () => { - expect(isDeferredMigration(MIN_DEFERRED_KIBANA_VERSION, 'invalid')).toBe(false); + expect(isDeferredMigration(MIN_COMMENTS_DEFERRED_KIBANA_VERSION, 'invalid')).toBe(false); + }); + }); + + describe('isUserCommentSO', () => { + it('should return true if it is a user comment SO', () => { + expect(isUserCommentSO(mockCaseComments[0])).toBe(true); + }); + + it('should return false if it is not a user comment SO', () => { + expect(isUserCommentSO(mockCaseComments[3])).toBe(false); + }); + }); + + describe('isPersistableStateAttachmentSO', () => { + it('should return true if it is a persistable attachment SO', () => { + expect(isPersistableStateAttachmentSO(mockCaseComments[6])).toBe(true); + }); + + it('should return false if it is not a persistable attachment SO', () => { + expect(isPersistableStateAttachmentSO(mockCaseComments[0])).toBe(false); }); }); }); diff --git a/x-pack/plugins/cases/server/saved_object_types/migrations/utils.ts b/x-pack/plugins/cases/server/saved_object_types/migrations/utils.ts index a25111ef57af2..e84d3271f466e 100644 --- a/x-pack/plugins/cases/server/saved_object_types/migrations/utils.ts +++ b/x-pack/plugins/cases/server/saved_object_types/migrations/utils.ts @@ -13,6 +13,13 @@ import type { SavedObjectMigrationContext, SavedObjectUnsanitizedDoc, } from '@kbn/core/server'; +import { isFunction, mapValues } from 'lodash'; +import type { LensServerPluginSetup } from '@kbn/lens-plugin/server'; +import type { SavedObjectMigrationParams } from '@kbn/core-saved-objects-server'; +import type { MigrateFunction, MigrateFunctionsObject } from '@kbn/kibana-utils-plugin/common'; +import type { AttachmentPersistedAttributes } from '../../common/types/attachments'; +import { CommentType } from '../../../common/api'; +import type { AttributesTypePersistableState, AttributesTypeUser } from '../../../common/api'; interface MigrationLogMeta extends LogMeta { migrations: { @@ -63,3 +70,38 @@ export const isDeferredMigration = ( valid(minDeferredKibanaVersion) && gte(migrationVersion, minDeferredKibanaVersion) ); + +export const isUserCommentSO = ( + doc: SavedObjectUnsanitizedDoc +): doc is SavedObjectUnsanitizedDoc => { + return doc.attributes.type === CommentType.user; +}; + +export const isPersistableStateAttachmentSO = ( + doc: SavedObjectUnsanitizedDoc +): doc is SavedObjectUnsanitizedDoc => { + return doc.attributes.type === CommentType.persistableState; +}; + +interface GetLensMigrationsArgs { + lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory']; + migratorFactory: ( + migrate: MigrateFunction, + migrationVersion: string + ) => SavedObjectMigrationParams; +} + +export const getLensMigrations = ({ + lensEmbeddableFactory, + migratorFactory, +}: GetLensMigrationsArgs) => { + const lensMigrations = lensEmbeddableFactory().migrations; + const lensMigrationObject = isFunction(lensMigrations) ? lensMigrations() : lensMigrations || {}; + + const embeddableMigrations = mapValues>( + lensMigrationObject, + migratorFactory + ); + + return embeddableMigrations; +}; diff --git a/x-pack/plugins/cases/server/services/attachments/test_utils.ts b/x-pack/plugins/cases/server/services/attachments/test_utils.ts index 8a34665421d70..57b3dc9c724da 100644 --- a/x-pack/plugins/cases/server/services/attachments/test_utils.ts +++ b/x-pack/plugins/cases/server/services/attachments/test_utils.ts @@ -13,14 +13,11 @@ import type { CommentAttributesWithoutRefs, ExternalReferenceWithoutRefs, } from '../../../common/api'; -import { - ExternalReferenceStorageType, - FILE_ATTACHMENT_TYPE, - CommentType, -} from '../../../common/api'; +import { ExternalReferenceStorageType, CommentType } from '../../../common/api'; import { CASE_COMMENT_SAVED_OBJECT, CASE_SAVED_OBJECT, + FILE_ATTACHMENT_TYPE, SECURITY_SOLUTION_OWNER, } from '../../../common/constants'; import { CASE_REF_NAME, EXTERNAL_REFERENCE_REF_NAME } from '../../common/constants'; diff --git a/x-pack/plugins/cases/server/telemetry/queries/utils.ts b/x-pack/plugins/cases/server/telemetry/queries/utils.ts index 57671bc5ea0db..9c8d528f58e2b 100644 --- a/x-pack/plugins/cases/server/telemetry/queries/utils.ts +++ b/x-pack/plugins/cases/server/telemetry/queries/utils.ts @@ -12,6 +12,7 @@ import { CASE_COMMENT_SAVED_OBJECT, CASE_SAVED_OBJECT, CASE_USER_ACTION_SAVED_OBJECT, + FILE_ATTACHMENT_TYPE, } from '../../../common/constants'; import type { CaseAggregationResult, @@ -29,7 +30,6 @@ import type { } from '../types'; import { buildFilter } from '../../client/utils'; import type { Owner } from '../../../common/constants/types'; -import { FILE_ATTACHMENT_TYPE } from '../../../common/api'; export const getCountsAggregationQuery = (savedObjectType: string) => ({ counts: { diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx index f1b81483c9b3e..9ab9d00d2bc82 100644 --- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx +++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx @@ -75,7 +75,7 @@ describe('useAddToCase', function () { expect(core.http?.post).toHaveBeenCalledTimes(1); expect(core.http?.post).toHaveBeenCalledWith('/api/cases/test/comments', { - body: '{"comment":"!{lens{\\"attributes\\":{\\"title\\":\\"Test lens attributes\\"},\\"timeRange\\":{\\"to\\":\\"now\\",\\"from\\":\\"now-5m\\"}}}","type":"user","owner":"observability"}', + body: '{"persistableStateAttachmentState":{"attributes":{"title":"Test lens attributes"},"timeRange":{"to":"now","from":"now-5m"}},"persistableStateAttachmentTypeId":".lens","type":"persistableState","owner":"observability"}', }); }); }); diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts index da279ef57f5cb..dace0ed9a18a3 100644 --- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts +++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts @@ -8,11 +8,12 @@ import { useCallback, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { HttpSetup, MountPoint } from '@kbn/core/public'; -import { CaseUI } from '@kbn/cases-plugin/common'; +import { CaseUI, CommentType } from '@kbn/cases-plugin/common'; import { TypedLensByValueInput } from '@kbn/lens-plugin/public'; import { CasesDeepLinkId, DRAFT_COMMENT_STORAGE_ID } from '@kbn/cases-plugin/public'; import { observabilityFeatureId } from '@kbn/observability-shared-plugin/public'; import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { LENS_ATTACHMENT_TYPE } from '@kbn/cases-plugin/common'; import { ObservabilityAppServices } from '../../../../application/types'; import { AddToCaseProps } from '../header/add_to_case_action'; @@ -25,14 +26,10 @@ async function addToCase( ) { const apiPath = `/api/cases/${theCase?.id}/comments`; - const vizPayload = { - attributes, - timeRange, - }; - const payload = { - comment: `!{lens${JSON.stringify(vizPayload)}}`, - type: 'user', + persistableStateAttachmentState: { attributes, timeRange }, + persistableStateAttachmentTypeId: LENS_ATTACHMENT_TYPE, + type: CommentType.persistableState, owner: owner ?? observabilityFeatureId, }; diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_actions.ts b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_actions.ts index 504f30511cafc..08f8cd63f7673 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_actions.ts +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_actions.ts @@ -158,7 +158,7 @@ const getAddToNewCaseAction = ({ return ADD_TO_NEW_CASE; }, getIconType(context: ActionExecutionContext): string | undefined { - return 'plusInCircle'; + return 'casesApp'; }, type: 'actionButton', async isCompatible(context: ActionExecutionContext): Promise { @@ -212,7 +212,7 @@ const getAddToExistingCaseAction = ({ return ADD_TO_EXISTING_CASE; }, getIconType(context: ActionExecutionContext): string | undefined { - return 'plusInCircle'; + return 'casesApp'; }, type: 'actionButton', async isCompatible(context: ActionExecutionContext): Promise { diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.test.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.test.tsx index c3b52d2402c96..6eb0dd3f2fc6c 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.test.tsx @@ -14,6 +14,7 @@ import { readCasesPermissions, writeCasesPermissions, } from '../../../cases_test_utils'; +import { CommentType } from '@kbn/cases-plugin/common'; const mockedUseKibana = mockUseKibana(); const mockGetUseCasesAddToExistingCaseModal = jest.fn(); @@ -113,4 +114,34 @@ describe('useAddToExistingCase', () => { ); expect(result.current.disabled).toEqual(true); }); + + it('should open add to existing case modal', () => { + const mockOpenCaseModal = jest.fn(); + const mockClick = jest.fn(); + + mockGetUseCasesAddToExistingCaseModal.mockReturnValue({ open: mockOpenCaseModal }); + + const { result } = renderHook(() => + useAddToExistingCase({ + lensAttributes: kpiHostMetricLensAttributes, + timeRange, + onAddToCaseClicked: mockClick, + }) + ); + + result.current.onAddToExistingCaseClicked(); + const attachments = mockOpenCaseModal.mock.calls[0][0].getAttachments(); + + expect(attachments).toEqual([ + { + persistableStateAttachmentState: { + attributes: kpiHostMetricLensAttributes, + timeRange, + }, + persistableStateAttachmentTypeId: '.lens', + type: CommentType.persistableState as const, + }, + ]); + expect(mockClick).toHaveBeenCalled(); + }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.tsx index 2c1a6caddd045..9fb48a0fdbfe1 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.tsx +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.tsx @@ -5,11 +5,11 @@ * 2.0. */ import { useCallback, useMemo } from 'react'; -import { CommentType } from '@kbn/cases-plugin/common'; +import { CommentType, LENS_ATTACHMENT_TYPE } from '@kbn/cases-plugin/common'; +import type { CaseAttachmentsWithoutOwner } from '@kbn/cases-plugin/public'; import { useKibana, useGetUserCasesPermissions } from '../../lib/kibana'; import { ADD_TO_CASE_SUCCESS } from './translations'; - import type { LensAttributes } from './types'; export const useAddToExistingCase = ({ @@ -26,13 +26,11 @@ export const useAddToExistingCase = ({ const attachments = useMemo(() => { return [ { - comment: `!{lens${JSON.stringify({ - timeRange, - attributes: lensAttributes, - })}}`, - type: CommentType.user as const, + persistableStateAttachmentState: { attributes: lensAttributes, timeRange }, + persistableStateAttachmentTypeId: LENS_ATTACHMENT_TYPE, + type: CommentType.persistableState as const, }, - ]; + ] as CaseAttachmentsWithoutOwner; }, [lensAttributes, timeRange]); const selectCaseModal = cases.hooks.useCasesAddToExistingCaseModal({ diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.test.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.test.tsx index d05743049d2c2..baffe5a10e522 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.test.tsx @@ -14,6 +14,7 @@ import { readCasesPermissions, writeCasesPermissions, } from '../../../cases_test_utils'; +import { CommentType } from '@kbn/cases-plugin/common'; jest.mock('../../lib/kibana/kibana_react'); @@ -105,4 +106,32 @@ describe('useAddToNewCase', () => { ); expect(result.current.disabled).toEqual(true); }); + + it('should open create case flyout', () => { + const mockOpenCaseFlyout = jest.fn(); + mockGetUseCasesAddToNewCaseFlyout.mockReturnValue({ open: mockOpenCaseFlyout }); + + const mockClick = jest.fn(); + + const { result } = renderHook(() => + useAddToNewCase({ + lensAttributes: kpiHostMetricLensAttributes, + timeRange, + onClick: mockClick, + }) + ); + + result.current.onAddToNewCaseClicked(); + + expect(mockOpenCaseFlyout).toHaveBeenCalledWith({ + attachments: [ + { + persistableStateAttachmentState: { attributes: kpiHostMetricLensAttributes, timeRange }, + persistableStateAttachmentTypeId: '.lens', + type: CommentType.persistableState as const, + }, + ], + }); + expect(mockClick).toHaveBeenCalled(); + }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.tsx index 9d5b7f689831f..cf393a99a1742 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.tsx +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.tsx @@ -5,8 +5,8 @@ * 2.0. */ import { useCallback, useMemo } from 'react'; - -import { CommentType } from '@kbn/cases-plugin/common'; +import { CommentType, LENS_ATTACHMENT_TYPE } from '@kbn/cases-plugin/common'; +import type { CaseAttachmentsWithoutOwner } from '@kbn/cases-plugin/public'; import { useKibana, useGetUserCasesPermissions } from '../../lib/kibana'; import { ADD_TO_CASE_SUCCESS } from './translations'; @@ -25,13 +25,11 @@ export const useAddToNewCase = ({ onClick, timeRange, lensAttributes }: UseAddTo const attachments = useMemo(() => { return [ { - comment: `!{lens${JSON.stringify({ - timeRange, - attributes: lensAttributes, - })}}`, - type: CommentType.user as const, + persistableStateAttachmentState: { attributes: lensAttributes, timeRange }, + persistableStateAttachmentTypeId: LENS_ATTACHMENT_TYPE, + type: CommentType.persistableState as const, }, - ]; + ] as CaseAttachmentsWithoutOwner; }, [lensAttributes, timeRange]); const createCaseFlyout = cases.hooks.useCasesAddToNewCaseFlyout({ diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 9fba693c79656..5574c0cb85a1c 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -10627,7 +10627,6 @@ "xpack.cases.markdownEditor.plugins.lens.createVisualizationButtonLabel": "Créer", "xpack.cases.markdownEditor.plugins.lens.insertLensSavedObjectModal.searchSelection.notFoundLabel": "Impossible de trouver un Lens correspondant.", "xpack.cases.markdownEditor.plugins.lens.insertLensSavedObjectModal.searchSelection.savedObjectType.lens": "Lens", - "xpack.cases.markdownEditor.plugins.lens.openVisualizationButtonLabel": "Visualisation ouverte", "xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.searchInputHelpText": "Insérez une visualisation Lens existante ou créez-en une. Les modifications ou nouvelles visualisations s'appliqueront uniquement à ce commentaire.", "xpack.cases.markdownEditor.plugins.lens.visualizationButtonLabel": "Visualisation", "xpack.cases.markdownEditor.plugins.timeline.noParenthesesErrorMsg": "Parenthèses gauches attendues", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index c360c62c9ad75..7d0b8e2345bca 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -10627,7 +10627,6 @@ "xpack.cases.markdownEditor.plugins.lens.createVisualizationButtonLabel": "新規作成", "xpack.cases.markdownEditor.plugins.lens.insertLensSavedObjectModal.searchSelection.notFoundLabel": "一致するLensが見つかりません。", "xpack.cases.markdownEditor.plugins.lens.insertLensSavedObjectModal.searchSelection.savedObjectType.lens": "レンズ", - "xpack.cases.markdownEditor.plugins.lens.openVisualizationButtonLabel": "ビジュアライゼーションを開く", "xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.searchInputHelpText": "既存のLensビジュアライゼーションを挿入するか、新しいビジュアライゼーションを作成します。変更または新しいビジュアライゼーションはすべてこのコメントにのみ適用されます。", "xpack.cases.markdownEditor.plugins.lens.visualizationButtonLabel": "ビジュアライゼーション", "xpack.cases.markdownEditor.plugins.timeline.noParenthesesErrorMsg": "想定される左括弧", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index f7880ab6928db..db961e19dda3a 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -10627,7 +10627,6 @@ "xpack.cases.markdownEditor.plugins.lens.createVisualizationButtonLabel": "新建", "xpack.cases.markdownEditor.plugins.lens.insertLensSavedObjectModal.searchSelection.notFoundLabel": "未找到匹配的 lens。", "xpack.cases.markdownEditor.plugins.lens.insertLensSavedObjectModal.searchSelection.savedObjectType.lens": "Lens", - "xpack.cases.markdownEditor.plugins.lens.openVisualizationButtonLabel": "打开可视化", "xpack.cases.markdownEditor.plugins.lens.savedObjects.finder.searchInputHelpText": "插入现有 Lens 可视化或新建一个。任何更改或新建可视化将仅应用于此注释。", "xpack.cases.markdownEditor.plugins.lens.visualizationButtonLabel": "可视化", "xpack.cases.markdownEditor.plugins.timeline.noParenthesesErrorMsg": "应为左括号", diff --git a/x-pack/test/cases_api_integration/common/lib/mock.ts b/x-pack/test/cases_api_integration/common/lib/mock.ts index 6345573951bf5..bd89e2d1aa663 100644 --- a/x-pack/test/cases_api_integration/common/lib/mock.ts +++ b/x-pack/test/cases_api_integration/common/lib/mock.ts @@ -22,9 +22,9 @@ import { CommentRequestExternalReferenceSOType, CommentRequestExternalReferenceNoSOType, CommentRequestPersistableStateType, - FILE_ATTACHMENT_TYPE, FileAttachmentMetadata, } from '@kbn/cases-plugin/common/api'; +import { FILE_ATTACHMENT_TYPE } from '@kbn/cases-plugin/common/constants'; import { FILE_SO_TYPE } from '@kbn/files-plugin/common'; export const defaultUser = { email: null, full_name: null, username: 'elastic' }; diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/attachments_framework/persistable_state.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/attachments_framework/persistable_state.ts index 9135f2e5b09fe..d20e59daf4ad5 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/attachments_framework/persistable_state.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/attachments_framework/persistable_state.ts @@ -289,6 +289,7 @@ export default ({ getService }: FtrProviderContext): void => { const types = await getRegisteredTypes(); expect(types).to.eql({ + '.lens': '78559fd806809ac3a1008942ead2a079864054f5', '.test': 'ab2204830c67f5cf992c9aa2f7e3ead752cc60a1', ml_anomaly_charts: '23e92e824af9db6e8b8bb1d63c222e04f57d2147', ml_anomaly_swimlane: 'a3517f3e53fb041e9cbb150477fb6ef0f731bd5f', From b8823520d0b52a0cee98d36bcfc143bee6e1cd4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Fri, 16 Jun 2023 12:39:36 +0200 Subject: [PATCH 50/59] [APM] Add retry mechanism to synthtrace (#159623) Closes https://github.com/elastic/kibana/issues/159614 Add retry mechanism to `synthtraceKibanaClient.installApmPackage` to reduce possible flakiness in tests. --- .../lib/apm/client/apm_synthtrace_kibana_client.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts b/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts index 615d754452349..bfae0c76d76a8 100644 --- a/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts +++ b/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts @@ -7,6 +7,7 @@ */ import fetch from 'node-fetch'; +import pRetry from 'p-retry'; import { Logger } from '../../utils/create_logger'; export class ApmSynthtraceKibanaClient { @@ -42,17 +43,20 @@ export class ApmSynthtraceKibanaClient { async installApmPackage(packageVersion: string) { this.logger.debug(`Installing APM package ${packageVersion}`); - const response = await fetch(`${this.target}/api/fleet/epm/packages/apm/${packageVersion}`, { - method: 'POST', - headers: kibanaHeaders(), - body: '{"force":true}', + const url = `${this.target}/api/fleet/epm/packages/apm/${packageVersion}`; + const response = await pRetry(() => { + return fetch(url, { + method: 'POST', + headers: kibanaHeaders(), + body: '{"force":true}', + }); }); const responseJson = await response.json(); if (!responseJson.items) { throw new Error( - `Failed to install APM package version ${packageVersion}, received HTTP ${response.status} and message: ${responseJson.message}` + `Failed to install APM package version ${packageVersion}, received HTTP ${response.status} and message: ${responseJson.message} for url ${url}` ); } From 90faa0e85c4ab815bc9b8c2575a7198cd42c8ada Mon Sep 17 00:00:00 2001 From: Lola Date: Fri, 16 Jun 2023 07:19:52 -0400 Subject: [PATCH 51/59] [Cloud Posture] add vulnerability dashboard tables (#159699) ## Summary Summarize your PR. If it involves visual changes include a screenshot or gif. PR features: Top 10 Vulnerable Resources Top 10 Patchable Vulnerabilities Top 10 vulnerabilities https://github.com/elastic/kibana/assets/17135495/599fe431-2b0d-43df-900b-871c9c6ff789 --- .../cloud_security_posture/common/types.ts | 44 +++ .../common/hooks/use_navigate_findings.ts | 12 +- .../vulnerability_dashboard.tsx | 3 + .../vulnerability_table_panel.config.ts | 32 ++ .../vulnerability_table_panel.tsx | 71 ++++ .../vulnerability_table_panel_section.tsx | 349 ++++++++++++++++++ .../get_top_patchable_vulnerabilities.ts | 101 +++++ .../get_top_vulnerabilities.ts | 152 ++++++++ .../get_top_vulnerable_resources.ts | 74 ++++ .../vulnerabilities_dashboard.ts | 19 +- 10 files changed, 853 insertions(+), 4 deletions(-) create mode 100644 x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.config.ts create mode 100644 x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.tsx create mode 100644 x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx create mode 100644 x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_patchable_vulnerabilities.ts create mode 100644 x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerabilities.ts create mode 100644 x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerable_resources.ts diff --git a/x-pack/plugins/cloud_security_posture/common/types.ts b/x-pack/plugins/cloud_security_posture/common/types.ts index d3c89e0836c07..69a6ed48f3b2f 100644 --- a/x-pack/plugins/cloud_security_posture/common/types.ts +++ b/x-pack/plugins/cloud_security_posture/common/types.ts @@ -141,6 +141,50 @@ export interface CnvmStatistics { export interface CnvmDashboardData { cnvmStatistics: CnvmStatistics; + topVulnerableResources: VulnerableResourceStat[]; + topPatchableVulnerabilities: PatchableVulnerabilityStat[]; + topVulnerabilities: VulnerabilityStat[]; } export type VulnSeverity = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL' | 'UNKNOWN'; + +export interface VulnerableResourceStat { + vulnerabilityCount: number | undefined; + resource: { + id: string | undefined; + name: string | undefined; + }; + cloudRegion: string | undefined; +} + +export interface PatchableVulnerabilityStat { + vulnerabilityCount: number | undefined; + packageFixVersion: string | undefined; + cve: string | undefined; + cvss: { + score: number | undefined; + version: string | undefined; + }; +} + +export interface VulnerabilityStat { + packageFixVersion: string | undefined; + packageName: string | undefined; + packageVersion: string | undefined; + severity: string | undefined; + vulnerabilityCount: number | undefined; + cvss: { + score: number | undefined; + version: string | undefined; + }; + cve: string | undefined; +} + +export interface AggFieldBucket { + doc_count_error_upper_bound: number; + sum_other_doc_count: number; + buckets: Array<{ + key?: string; + doc_count?: string; + }>; +} diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts index 484f16969b9a0..48b16f62cbaf5 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts @@ -28,7 +28,13 @@ const createFilter = (key: string, filterValue: FilterValue): Filter => { negate = filterValue.negate; value = filterValue.value; } - + // If the value is '*', we want to create an exists filter + if (value === '*') { + return { + query: { exists: { field: key } }, + meta: { type: 'exists' }, + }; + } return { meta: { alias: null, @@ -40,7 +46,6 @@ const createFilter = (key: string, filterValue: FilterValue): Filter => { query: { match_phrase: { [key]: value } }, }; }; - const useNavigate = (pathname: string) => { const history = useHistory(); const { services } = useKibana(); @@ -71,3 +76,6 @@ export const useNavigateFindingsByResource = () => export const useNavigateVulnerabilities = () => useNavigate(findingsNavigation.vulnerabilities.path); + +export const useNavigateVulnerabilitiesByResource = () => + useNavigate(findingsNavigation.vulnerabilities_by_resource.path); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx index 31a1fe1b2971b..36d2d5fe99c6e 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx @@ -16,6 +16,7 @@ import { import { VulnerabilityStatistics } from './vulnerability_statistics'; import { CloudPosturePageTitle } from '../../components/cloud_posture_page_title'; import { CloudPosturePage } from '../../components/cloud_posture_page'; +import { VulnerabilityTablePanelSection } from './vulnerability_table_panel_section'; export const VulnerabilityDashboard = () => { const getSetupStatus = useCspSetupStatusApi(); @@ -40,6 +41,8 @@ export const VulnerabilityDashboard = () => {
+ +
)} diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.config.ts b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.config.ts new file mode 100644 index 0000000000000..1144f86471b4b --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.config.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export enum DASHBOARD_TABLE_TYPES { + TOP_VULNERABLE_RESOURCES = 'topVulnerableResources', + TOP_PATCH_VULNERABILITIES = 'topPatchVulnerabilities', + TOP_VULNERABILITIES = 'topVulnerabilities', +} + +export const vulnerabilityDashboardTableContent = { + [DASHBOARD_TABLE_TYPES.TOP_VULNERABLE_RESOURCES]: { + title: i18n.translate('xpack.csp.cvnmDasbhboardTable.panel.topVulnerableResources.title', { + defaultMessage: 'Top 10 vulnerable resources', + }), + }, + [DASHBOARD_TABLE_TYPES.TOP_PATCH_VULNERABILITIES]: { + title: i18n.translate('xpack.csp.cvnmDasbhboardTable.panel.topPatchVulnerabilities.title', { + defaultMessage: 'Top 10 patchable vulnerabilities', + }), + }, + [DASHBOARD_TABLE_TYPES.TOP_VULNERABILITIES]: { + title: i18n.translate('xpack.csp.cvnmDasbhboardTable.panel.topVulnerabilities.title', { + defaultMessage: 'Top 10 vulnerabilities', + }), + }, +}; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.tsx new file mode 100644 index 0000000000000..cba8b36f1ed15 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.tsx @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { + EuiTitle, + EuiButtonEmpty, + EuiPanel, + EuiBasicTable, + EuiSpacer, + EuiToolTip, + EuiBasicTableColumn, + useEuiTheme, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { css } from '@emotion/react'; +import { + DASHBOARD_TABLE_TYPES, + vulnerabilityDashboardTableContent, +} from './vulnerability_table_panel.config'; + +export interface VulnerabilityDashboardTableProps { + tableType: DASHBOARD_TABLE_TYPES; + columns: Array>; + items: T[]; + onViewVulnerabilitiesClick: () => void; +} + +export const VulnerabilityTablePanel = ({ + items, + columns, + tableType, + onViewVulnerabilitiesClick, +}: VulnerabilityDashboardTableProps) => { + const { euiTheme } = useEuiTheme(); + const { title } = vulnerabilityDashboardTableContent[tableType]; + const tooltipText = i18n.translate('xpack.csp.vulnerabilityTable.panel.tooltipText', { + defaultMessage: 'Explore in Findings', + }); + + return ( + + +

{title}

+
+ + + + + + {i18n.translate('xpack.csp.vulnerabilityTable.panel..buttonText', { + defaultMessage: 'View all vulnerabilities', + })} + + +
+ ); +}; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx new file mode 100644 index 0000000000000..a81f01875746a --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx @@ -0,0 +1,349 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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, { useCallback, useMemo } from 'react'; +import { + EuiBasicTableColumn, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiLink, + EuiSpacer, + useEuiTheme, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { + PatchableVulnerabilityStat, + VulnerabilityStat, + VulnerableResourceStat, + VulnSeverity, +} from '../../../common/types'; +import { useCnvmStatisticsApi } from '../../common/api/use_vulnerabilities_stats_api'; +import { DASHBOARD_TABLE_TYPES } from './vulnerability_table_panel.config'; +import { VulnerabilityTablePanel } from './vulnerability_table_panel'; +import { + NavFilter, + useNavigateVulnerabilities, + useNavigateVulnerabilitiesByResource, +} from '../../common/hooks/use_navigate_findings'; +import { CVSScoreBadge, SeverityStatusBadge } from '../../components/vulnerability_badges'; + +export const VulnerabilityTablePanelSection = () => { + const getCnvmStats = useCnvmStatisticsApi(); + const { euiTheme } = useEuiTheme(); + const navToVulnerabilities = useNavigateVulnerabilities(); + const navToVulnerabilitiesByResource = useNavigateVulnerabilitiesByResource(); + + const onCellClick = useCallback( + (filters: NavFilter) => { + navToVulnerabilities(filters); + }, + [navToVulnerabilities] + ); + + const onViewVulnerabilitiesByResourceClick = useCallback(() => { + navToVulnerabilitiesByResource(); + }, [navToVulnerabilitiesByResource]); + + const onViewVulnerabilitiesClick = useCallback(() => { + navToVulnerabilities(); + }, [navToVulnerabilities]); + + const topVulnerableResourceColumns: Array> = useMemo( + () => [ + { + field: 'resource', + truncateText: true, + name: i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerableResources.column.resource', + { + defaultMessage: 'Resource', + } + ), + render: (resource: { id: string; name: string }) => ( + onCellClick({ 'resource.name': resource.name })} + className="eui-textTruncate" + > + {resource.name} + + ), + }, + { + field: 'cloudRegion', + name: i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerableResources.column.region', + { + defaultMessage: 'Region', + } + ), + render: (region: string) => ( + onCellClick({ 'cloud.region': region })} + className="eui-textTruncate" + color="text" + > + {region} + + ), + width: '140', + }, + { + field: 'vulnerabilityCount', + name: ( + + + {i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerableResources.column.vulnerabilities', + { + defaultMessage: 'Vulnerabilities', + } + )} + + ), + width: '120', + align: 'right', + }, + ], + [onCellClick, euiTheme.size.xs] + ); + + const topPatchableVulnerabilitiesColumns: Array> = + useMemo( + () => [ + { + field: 'cve', + name: i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerableResources.column.cve', + { + defaultMessage: 'CVE', + } + ), + render: (cve: string) => ( + onCellClick({ 'vulnerability.id': cve, 'package.fixed_version': '*' })} + className="eui-textTruncate" + > + {cve} + + ), + }, + { + field: 'cvss', + name: i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerableResources.column.version', + { + defaultMessage: 'CVSS', + } + ), + render: (cvss: { score: number; version: string }) => ( + onCellClick({ 'vulnerability.score.base': cvss.score })}> + + + ), + }, + { + field: 'packageFixVersion', + truncateText: true, + name: i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topPatchableVulnerabilities.column.fixedVersion', + { + defaultMessage: 'Fix Version', + } + ), + render: (packageFixVersion: string) => ( + + onCellClick({ 'vulnerability.package.fixed_version': packageFixVersion }) + } + className="eui-textTruncate" + color="text" + > + {packageFixVersion} + + ), + }, + { + field: 'vulnerabilityCount', + name: ( + + + {i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerableResources.column.vulnerabilityCount', + { + defaultMessage: 'Vulnerabilities', + } + )} + + ), + align: 'right', + }, + ], + [onCellClick, euiTheme.size.xs] + ); + + const topVulnerabilitiesColumns: Array> = useMemo( + () => [ + { + field: 'cve', + name: i18n.translate('xpack.csp.cvnmDasbhboardTable.section.topVulnerability.column.cve', { + defaultMessage: 'CVE', + }), + render: (cve: string) => ( + onCellClick({ 'vulnerability.id': cve })} + className="eui-textTruncate" + > + {cve} + + ), + }, + { + field: 'cvss', + name: i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerability.column.version', + { + defaultMessage: 'CVSS', + } + ), + render: (cvss: { score: number; version: string }) => ( + onCellClick({ 'vulnerability.score.base': cvss.score })}> + + + ), + }, + { + field: 'severity', + name: i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerability.column.severity', + { + defaultMessage: 'Severity', + } + ), + render: (severity: VulnSeverity) => ( + onCellClick({ 'vulnerability.severity': severity })} color="text"> + + + ), + }, + { + field: 'packageName', + truncateText: true, + name: i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerability.column.packageName', + { + defaultMessage: 'Package Name', + } + ), + render: (packageName: string) => ( + onCellClick({ 'vulnerability.package.name': packageName })} + className="eui-textTruncate" + color="text" + > + {packageName} + + ), + }, + { + field: 'packageVersion', + truncateText: true, + name: i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerability.column.packageVersion', + { + defaultMessage: 'Package Version', + } + ), + render: (packageVersion: string) => ( + onCellClick({ 'vulnerability.package.version': packageVersion })} + className="eui-textTruncate" + color="text" + > + {packageVersion} + + ), + }, + { + field: 'packageFixVersion', + truncateText: true, + name: i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerability.column.fixedVersion', + { + defaultMessage: 'Fix Version', + } + ), + render: (packageFixVersion: string) => ( + + onCellClick({ 'vulnerability.package.fixed_version': packageFixVersion }) + } + className="eui-textTruncate" + color="text" + > + {packageFixVersion} + + ), + }, + { + field: 'vulnerabilityCount', + name: ( + + + {i18n.translate( + 'xpack.csp.cvnmDasbhboardTable.section.topVulnerability.column.vulnerabilities', + { + defaultMessage: 'Vulnerabilities', + } + )} + + ), + align: 'right', + }, + ], + [onCellClick, euiTheme.size.xs] + ); + + return ( + <> + + {getCnvmStats.data?.topVulnerableResources && + getCnvmStats.data?.topVulnerableResources?.length > 0 && ( + + + items={getCnvmStats.data?.topVulnerableResources} + columns={topVulnerableResourceColumns} + tableType={DASHBOARD_TABLE_TYPES.TOP_VULNERABLE_RESOURCES} + onViewVulnerabilitiesClick={onViewVulnerabilitiesByResourceClick} + /> + + )} + + {getCnvmStats.data?.topPatchableVulnerabilities && + getCnvmStats.data?.topPatchableVulnerabilities?.length > 0 && ( + + items={getCnvmStats.data?.topPatchableVulnerabilities} + columns={topPatchableVulnerabilitiesColumns} + tableType={DASHBOARD_TABLE_TYPES.TOP_PATCH_VULNERABILITIES} + onViewVulnerabilitiesClick={onViewVulnerabilitiesClick} + /> + )} + + + + {getCnvmStats.data?.topVulnerabilities && + getCnvmStats.data?.topVulnerabilities?.length > 0 && ( + + items={getCnvmStats.data?.topVulnerabilities} + columns={topVulnerabilitiesColumns} + tableType={DASHBOARD_TABLE_TYPES.TOP_VULNERABILITIES} + onViewVulnerabilitiesClick={onViewVulnerabilitiesClick} + /> + )} + + ); +}; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_patchable_vulnerabilities.ts b/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_patchable_vulnerabilities.ts new file mode 100644 index 0000000000000..9863b865c7542 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_patchable_vulnerabilities.ts @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { QueryDslQueryContainer, SearchRequest } from '@elastic/elasticsearch/lib/api/types'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { AggFieldBucket, PatchableVulnerabilityStat } from '../../../common/types'; +import { LATEST_VULNERABILITIES_INDEX_DEFAULT_NS } from '../../../common/constants'; + +interface VulnerabilityBucket { + key: string | undefined; + doc_count?: number; + packageFixVersion: AggFieldBucket; + score: { + value: number; + }; + version: AggFieldBucket; +} + +export interface PatchableVulnerabilitiesQueryResult { + patchable_vulnerabilities: { + buckets: VulnerabilityBucket[]; + }; +} + +const getPatchableVulnerabilitiesQuery = (query: QueryDslQueryContainer): SearchRequest => ({ + size: 0, + query, + index: LATEST_VULNERABILITIES_INDEX_DEFAULT_NS, + aggs: { + patchable_vulnerabilities: { + terms: { + field: 'vulnerability.id', + order: { + _count: 'desc', + }, + size: 10, + }, + + aggs: { + score: { + max: { + field: 'vulnerability.score.base', + }, + }, + version: { + terms: { + field: 'vulnerability.score.version', + size: 1, + }, + }, + packageFixVersion: { + terms: { + field: 'package.fixed_version', + size: 1, + }, + }, + }, + }, + }, +}); + +export const getTopPatchableVulnerabilities = async ( + esClient: ElasticsearchClient, + query: QueryDslQueryContainer +): Promise => { + const queryResult = await esClient.search( + getPatchableVulnerabilitiesQuery({ + ...query, + bool: { + ...query.bool, + filter: [ + ...(query.bool?.filter as QueryDslQueryContainer[]), + { + exists: { + field: 'package.fixed_version', + }, + }, + ], + }, + }) + ); + if (!queryResult?.aggregations?.patchable_vulnerabilities) return []; + + return queryResult.aggregations.patchable_vulnerabilities.buckets.map( + (vulnerability: VulnerabilityBucket) => { + return { + cve: vulnerability.key, + cvss: { + score: vulnerability.score?.value, + version: vulnerability.version?.buckets?.[0]?.key ?? '', + }, + packageFixVersion: vulnerability.packageFixVersion?.buckets?.[0]?.key ?? '', + vulnerabilityCount: vulnerability.doc_count, + }; + } + ); +}; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerabilities.ts b/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerabilities.ts new file mode 100644 index 0000000000000..9c0e515ffeb0e --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerabilities.ts @@ -0,0 +1,152 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { QueryDslQueryContainer, SearchRequest } from '@elastic/elasticsearch/lib/api/types'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { VulnerabilityStat } from '../../../common/types'; +import { LATEST_VULNERABILITIES_INDEX_DEFAULT_NS } from '../../../common/constants'; + +interface VulnerabilityBucket { + key: string | undefined; + doc_count?: number; + cve: { + doc_count_error_upper_bound: number; + sum_other_doc_count: number; + buckets: Array<{ + key?: string; + doc_count?: string; + }>; + }; + score: { + value: number; + }; + cveVersion: { + doc_count_error_upper_bound: number; + sum_other_doc_count: number; + buckets: Array<{ + key?: string; + doc_count?: string; + }>; + }; + packageName: { + doc_count_error_upper_bound: number; + sum_other_doc_count: number; + buckets: Array<{ + key?: string; + doc_count?: string; + }>; + }; + packageVersion: { + doc_count_error_upper_bound: number; + sum_other_doc_count: number; + buckets: Array<{ + key?: string; + doc_count?: string; + }>; + }; + severity: { + doc_count_error_upper_bound: number; + sum_other_doc_count: number; + buckets: Array<{ + key?: string; + doc_count?: string; + }>; + }; + packageFixVersion: { + doc_count_error_upper_bound: number; + sum_other_doc_count: number; + buckets: Array<{ + key?: string; + doc_count?: string; + }>; + }; +} + +export interface VulnerabilitiesQueryResult { + vulnerabilities: { + buckets: VulnerabilityBucket[]; + }; +} + +const getVulnerabilitiesQuery = (query: QueryDslQueryContainer): SearchRequest => ({ + size: 0, + query, + index: LATEST_VULNERABILITIES_INDEX_DEFAULT_NS, + aggs: { + vulnerabilities: { + terms: { + field: 'vulnerability.id', + order: { + _count: 'desc', + }, + size: 10, + }, + aggs: { + score: { + max: { + field: 'vulnerability.score.base', + }, + }, + cveVersion: { + terms: { + field: 'vulnerability.score.version', + }, + }, + severity: { + terms: { + field: 'vulnerability.severity', + size: 1, + }, + }, + packageFixVersion: { + terms: { + field: 'vulnerability.package.fixed_version', + size: 1, + }, + }, + packageName: { + terms: { + field: 'vulnerability.package.name', + size: 1, + }, + }, + packageVersion: { + terms: { + field: 'vulnerability.package.version', + size: 1, + }, + }, + }, + }, + }, +}); + +export const getTopVulnerabilities = async ( + esClient: ElasticsearchClient, + query: QueryDslQueryContainer +): Promise => { + const queryResult = await esClient.search( + getVulnerabilitiesQuery(query) + ); + + if (!queryResult?.aggregations?.vulnerabilities) return []; + + return queryResult.aggregations.vulnerabilities.buckets.map( + (vulnerability: VulnerabilityBucket) => ({ + cve: vulnerability.key, + packageFixVersion: vulnerability.packageFixVersion?.buckets?.[0]?.key ?? '', + packageName: vulnerability.packageName?.buckets?.[0]?.key ?? '', + packageVersion: vulnerability.packageVersion?.buckets?.[0]?.key ?? '', + severity: vulnerability.severity?.buckets?.[0]?.key ?? '', + vulnerabilityCount: vulnerability.doc_count, + cvss: { + score: vulnerability.score?.value, + version: vulnerability.cveVersion?.buckets?.[0]?.key ?? '', + }, + }) + ); +}; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerable_resources.ts b/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerable_resources.ts new file mode 100644 index 0000000000000..1753e3499fee3 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerable_resources.ts @@ -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 { QueryDslQueryContainer, SearchRequest } from '@elastic/elasticsearch/lib/api/types'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { AggFieldBucket, VulnerableResourceStat } from '../../../common/types'; +import { LATEST_VULNERABILITIES_INDEX_DEFAULT_NS } from '../../../common/constants'; + +interface ResourceBucket { + key: string | undefined; + doc_count?: number; + resource_name: AggFieldBucket; + top_region: AggFieldBucket; +} + +export interface VulnerableResourcesQueryResult { + vulnerable_resources: { + buckets: ResourceBucket[]; + }; +} + +const getVulnerabilitiesResourcesQuery = (query: QueryDslQueryContainer): SearchRequest => ({ + size: 0, + query, + index: LATEST_VULNERABILITIES_INDEX_DEFAULT_NS, + aggs: { + vulnerable_resources: { + terms: { + field: 'resource.id', + order: { + _count: 'desc', + }, + size: 10, + }, + aggs: { + resource_name: { + terms: { + field: 'resource.name', + size: 1, + }, + }, + top_region: { + terms: { + field: 'cloud.region', + size: 1, + }, + }, + }, + }, + }, +}); + +export const getTopVulnerableResources = async ( + esClient: ElasticsearchClient, + query: QueryDslQueryContainer +): Promise => { + const queryResult = await esClient.search( + getVulnerabilitiesResourcesQuery(query) + ); + if (!queryResult?.aggregations?.vulnerable_resources) return []; + + return queryResult.aggregations.vulnerable_resources.buckets.map((resource: ResourceBucket) => ({ + resource: { + id: resource.key, + name: resource.resource_name?.buckets?.[0]?.key ?? '', + }, + vulnerabilityCount: resource.doc_count, + cloudRegion: resource.top_region?.buckets?.[0]?.key ?? '', + })); +}; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts b/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts index bc92d6c1c326b..ccaa8e6e724ba 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts @@ -11,7 +11,9 @@ import { VULNERABILITIES_DASHBOARD_ROUTE_PATH } from '../../../common/constants' import { getSafeVulnerabilitiesQueryFilter } from '../../../common/utils/get_safe_vulnerabilities_query_filter'; import { CspRouter } from '../../types'; import { getVulnerabilitiesStatistics } from './get_vulnerabilities_statistics'; - +import { getTopVulnerableResources } from './get_top_vulnerable_resources'; +import { getTopPatchableVulnerabilities } from './get_top_patchable_vulnerabilities'; +import { getTopVulnerabilities } from './get_top_vulnerabilities'; export interface KeyDocCount { key: TKey; doc_count: number; @@ -34,10 +36,23 @@ export const defineGetVulnerabilitiesDashboardRoute = (router: CspRouter): void const query = getSafeVulnerabilitiesQueryFilter(); - const [cnvmStatistics] = await Promise.all([getVulnerabilitiesStatistics(esClient, query)]); + const [ + cnvmStatistics, + topVulnerableResources, + topPatchableVulnerabilities, + topVulnerabilities, + ] = await Promise.all([ + getVulnerabilitiesStatistics(esClient, query), + getTopVulnerableResources(esClient, query), + getTopPatchableVulnerabilities(esClient, query), + getTopVulnerabilities(esClient, query), + ]); const body: CnvmDashboardData = { cnvmStatistics, + topVulnerableResources, + topPatchableVulnerabilities, + topVulnerabilities, }; return response.ok({ From 0b96f1db14bf5243ce439e5b3a7c0a08fc585b94 Mon Sep 17 00:00:00 2001 From: Kevin Qualters <56408403+kqualters-elastic@users.noreply.github.com> Date: Fri, 16 Jun 2023 11:58:21 -0400 Subject: [PATCH 52/59] [Security Solution] [Investigation Guides] Use markdown toolbar disable ability, along with new icon (#159718) ## Summary To be merged after https://github.com/elastic/eui/pull/6840 is included in an Eui release and said release is merged to kibana. Makes use of the new isDisabled prop exposed to EuiMarkdownToolbar components, and disables the button with appropriate hover text if license level is not appropriate. ![image](https://github.com/elastic/kibana/assets/56408403/57c8d0ec-14a8-43c9-938e-e7de1c81eeac) ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) --- .../components/markdown_editor/editor.tsx | 10 +++++- .../markdown_editor/plugins/index.ts | 19 ++++++++--- .../markdown_editor/plugins/insight/index.tsx | 33 ++++++++++--------- .../plugins/insight/translations.ts | 8 +++++ 4 files changed, 50 insertions(+), 20 deletions(-) diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/editor.tsx b/x-pack/plugins/security_solution/public/common/components/markdown_editor/editor.tsx index fd560e9990e39..79802dae16049 100644 --- a/x-pack/plugins/security_solution/public/common/components/markdown_editor/editor.tsx +++ b/x-pack/plugins/security_solution/public/common/components/markdown_editor/editor.tsx @@ -11,12 +11,14 @@ import React, { memo, useEffect, useImperativeHandle, + useMemo, useRef, useState, useCallback, } from 'react'; import { EuiMarkdownEditor } from '@elastic/eui'; import type { ContextShape } from '@elastic/eui/src/components/markdown_editor/markdown_context'; +import { useLicense } from '../../hooks/use_license'; import { uiPlugins, parsingPlugins, processingPlugins } from './plugins'; @@ -52,6 +54,12 @@ const MarkdownEditorComponent = forwardRef { + return uiPlugins({ licenseIsPlatinum }); + }, [licenseIsPlatinum]); + // @ts-expect-error update types useImperativeHandle(ref, () => { if (!editorRef.current) { @@ -73,7 +81,7 @@ const MarkdownEditorComponent = forwardRef { + const currentPlugins = nonStatefulUiPlugins.map((plugin) => plugin.name); + const insightPluginWithLicense = insightMarkdownPlugin.plugin({ licenseIsPlatinum }); + if (currentPlugins.includes(insightPluginWithLicense.name) === false) { + nonStatefulUiPlugins.push(timelineMarkdownPlugin.plugin); + nonStatefulUiPlugins.push(osqueryMarkdownPlugin.plugin); + nonStatefulUiPlugins.push(insightPluginWithLicense); + } + return nonStatefulUiPlugins; +}; parsingPlugins.push(insightMarkdownPlugin.parser); parsingPlugins.push(timelineMarkdownPlugin.parser); diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.tsx b/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.tsx index b86c4e08bda0e..0284fb7a8a5ac 100644 --- a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.tsx @@ -534,19 +534,22 @@ const exampleInsight = `${insightPrefix}{ ] }}`; -export const plugin = { - name: 'insights', - button: { - label: 'Insights', - iconType: 'aggregate', - }, - helpText: ( -
- - {exampleInsight} - - -
- ), - editor: InsightEditor, +export const plugin = ({ licenseIsPlatinum }: { licenseIsPlatinum: boolean }) => { + return { + name: 'insights', + button: { + label: licenseIsPlatinum ? i18n.INVESTIGATE : i18n.INIGHT_UPSELL, + iconType: 'timelineWithArrow', + isDisabled: !licenseIsPlatinum, + }, + helpText: ( +
+ + {exampleInsight} + + +
+ ), + editor: InsightEditor, + }; }; diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/translations.ts b/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/translations.ts index e827226fc865e..72494dce3608c 100644 --- a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/translations.ts +++ b/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/translations.ts @@ -11,6 +11,14 @@ export const LABEL = i18n.translate('xpack.securitySolution.markdown.insight.lab defaultMessage: 'Label', }); +export const INIGHT_UPSELL = i18n.translate('xpack.securitySolution.markdown.insight.upsell', { + defaultMessage: 'Upgrade to platinum to make use of insights in investigation guides', +}); + +export const INVESTIGATE = i18n.translate('xpack.securitySolution.markdown.insight.title', { + defaultMessage: 'Investigate', +}); + export const LABEL_TEXT = i18n.translate('xpack.securitySolution.markdown.insight.labelText', { defaultMessage: 'Label on the query button.', }); From a8ef2c8ea0f991721af113c4894e04222747dfa0 Mon Sep 17 00:00:00 2001 From: Dmitrii Shevchenko Date: Fri, 16 Jun 2023 18:28:56 +0200 Subject: [PATCH 53/59] [Security Solution] Rule installation/upgrade error handling fixes (#159823) **Related to: https://github.com/elastic/kibana/pull/158450** ## Summary Various fixes to the rule installation and upgrade workflows: - Properly reset rule selection and loading state when API calls fail - Improve copy and message formatting --- .../logic/prebuilt_rules/translations.ts | 40 +++++++------------ .../use_perform_rule_install.ts | 14 +++---- .../use_perform_rule_upgrade.ts | 14 +++---- .../add_prebuilt_rules_table_context.tsx | 30 ++++++++------ .../upgrade_prebuilt_rules_table_context.tsx | 37 ++++++++++------- 5 files changed, 68 insertions(+), 67 deletions(-) diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/translations.ts index c2d7b5a671f01..2e6e0c622301e 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/translations.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/translations.ts @@ -7,66 +7,54 @@ import { i18n } from '@kbn/i18n'; -export const FAILED_ALL_RULES_INSTALL = i18n.translate( - 'xpack.securitySolution.detectionEngine.prebuiltRules.toast.failedAllRulesInstall', +export const RULE_INSTALLATION_FAILED = i18n.translate( + 'xpack.securitySolution.detectionEngine.prebuiltRules.toast.ruleInstallationFailed', { - defaultMessage: 'Failed to install Elastic prebuilt rules', - } -); - -export const FAILED_SPECIFIC_RULES_INSTALL = i18n.translate( - 'xpack.securitySolution.detectionEngine.prebuiltRules.toast.failedSepecifcRulesInstall', - { - defaultMessage: 'Failed to install selected Elastic prebuilt rules', + defaultMessage: 'Rule installation failed', } ); export const INSTALL_RULE_SUCCESS = (succeeded: number) => i18n.translate('xpack.securitySolution.detectionEngine.prebuiltRules.toast.installRuleSuccess', { - defaultMessage: '{succeeded, plural, one {# rule} other {# rules}} installed successfully. ', + defaultMessage: '{succeeded, plural, one {# rule} other {# rules}} installed successfully.', values: { succeeded }, }); export const INSTALL_RULE_SKIPPED = (skipped: number) => i18n.translate('xpack.securitySolution.detectionEngine.prebuiltRules.toast.installRuleSkipped', { - defaultMessage: '{skipped, plural, one {# rule} other {# rules}} skipped installation. ', + defaultMessage: + '{skipped, plural, one {# rule was} other {# rules were}} skipped during installation.', values: { skipped }, }); export const INSTALL_RULE_FAILED = (failed: number) => i18n.translate('xpack.securitySolution.detectionEngine.prebuiltRules.toast.installRuleFailed', { - defaultMessage: '{failed, plural, one {# rule} other {# rules}} failed installation. ', + defaultMessage: '{failed, plural, one {# rule has} other {# rules have}} failed to install.', values: { failed }, }); -export const FAILED_ALL_RULES_UPGRADE = i18n.translate( - 'xpack.securitySolution.detectionEngine.prebuiltRules.toast.failedAllRulesUpgrade', - { - defaultMessage: 'Failed to upgrade Elastic prebuilt rules', - } -); - -export const FAILED_SPECIFIC_RULES_UPGRADE = i18n.translate( - 'xpack.securitySolution.detectionEngine.prebuiltRules.toast.failedSpecificRulesUpgrade', +export const RULE_UPGRADE_FAILED = i18n.translate( + 'xpack.securitySolution.detectionEngine.prebuiltRules.toast.ruleUpgradeFailed', { - defaultMessage: 'Failed to upgrade selected Elastic prebuilt rules', + defaultMessage: 'Rule upgrade failed', } ); export const UPGRADE_RULE_SUCCESS = (succeeded: number) => i18n.translate('xpack.securitySolution.detectionEngine.prebuiltRules.toast.upgradeRuleSuccess', { - defaultMessage: '{succeeded, plural, one {# rule} other {# rules}} update successfully. ', + defaultMessage: '{succeeded, plural, one {# rule} other {# rules}} updated successfully.', values: { succeeded }, }); export const UPGRADE_RULE_SKIPPED = (skipped: number) => i18n.translate('xpack.securitySolution.detectionEngine.prebuiltRules.toast.upgradeRuleSkipped', { - defaultMessage: '{skipped, plural, one {# rule} other {# rules}} skipped update. ', + defaultMessage: + '{skipped, plural, one {# rule was} other {# rules were}} skipped during update.', values: { skipped }, }); export const UPGRADE_RULE_FAILED = (failed: number) => i18n.translate('xpack.securitySolution.detectionEngine.prebuiltRules.toast.upgradeRuleFailed', { - defaultMessage: '{failed, plural, one {# rule} other {# rules}} failed update. ', + defaultMessage: '{failed, plural, one {# rule has} other {# rules have}} failed to update.', values: { failed }, }); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_install.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_install.ts index b3c05bc12037d..26e565ce9ff6d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_install.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_install.ts @@ -15,7 +15,7 @@ export const usePerformInstallAllRules = () => { return usePerformAllRulesInstallMutation({ onError: (err) => { - addError(err, { title: i18n.FAILED_ALL_RULES_INSTALL }); + addError(err, { title: i18n.RULE_INSTALLATION_FAILED }); }, onSuccess: (result) => { addSuccess(getSuccessToastMessage(result)); @@ -28,7 +28,7 @@ export const usePerformInstallSpecificRules = () => { return usePerformSpecificRulesInstallMutation({ onError: (err) => { - addError(err, { title: i18n.FAILED_SPECIFIC_RULES_INSTALL }); + addError(err, { title: i18n.RULE_INSTALLATION_FAILED }); }, onSuccess: (result) => { addSuccess(getSuccessToastMessage(result)); @@ -44,18 +44,18 @@ const getSuccessToastMessage = (result: { failed: number; }; }) => { - let toastMessage: string = ''; + const toastMessages: string[] = []; const { summary: { succeeded, skipped, failed }, } = result; if (succeeded > 0) { - toastMessage += i18n.INSTALL_RULE_SUCCESS(succeeded); + toastMessages.push(i18n.INSTALL_RULE_SUCCESS(succeeded)); } if (skipped > 0) { - toastMessage += i18n.INSTALL_RULE_SKIPPED(skipped); + toastMessages.push(i18n.INSTALL_RULE_SKIPPED(skipped)); } if (failed > 0) { - toastMessage += i18n.INSTALL_RULE_FAILED(failed); + toastMessages.push(i18n.INSTALL_RULE_FAILED(failed)); } - return toastMessage; + return toastMessages.join(' '); }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_upgrade.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_upgrade.ts index 6703d738beb3a..aa9e38217a19e 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_upgrade.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_upgrade.ts @@ -15,7 +15,7 @@ export const usePerformUpgradeAllRules = () => { return usePerformAllRulesUpgradeMutation({ onError: (err) => { - addError(err, { title: i18n.FAILED_ALL_RULES_UPGRADE }); + addError(err, { title: i18n.RULE_UPGRADE_FAILED }); }, onSuccess: (result) => { addSuccess(getSuccessToastMessage(result)); @@ -28,7 +28,7 @@ export const usePerformUpgradeSpecificRules = () => { return usePerformSpecificRulesUpgradeMutation({ onError: (err) => { - addError(err, { title: i18n.FAILED_SPECIFIC_RULES_UPGRADE }); + addError(err, { title: i18n.RULE_UPGRADE_FAILED }); }, onSuccess: (result) => { addSuccess(getSuccessToastMessage(result)); @@ -44,18 +44,18 @@ const getSuccessToastMessage = (result: { failed: number; }; }) => { - let toastMessage: string = ''; + const toastMessage: string[] = []; const { summary: { succeeded, skipped, failed }, } = result; if (succeeded > 0) { - toastMessage += i18n.UPGRADE_RULE_SUCCESS(succeeded); + toastMessage.push(i18n.UPGRADE_RULE_SUCCESS(succeeded)); } if (skipped > 0) { - toastMessage += i18n.UPGRADE_RULE_SKIPPED(skipped); + toastMessage.push(i18n.UPGRADE_RULE_SKIPPED(skipped)); } if (failed > 0) { - toastMessage += i18n.UPGRADE_RULE_FAILED(failed); + toastMessage.push(i18n.UPGRADE_RULE_FAILED(failed)); } - return toastMessage; + return toastMessage.join(' '); }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_context.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_context.tsx index b3aceacc4b1b9..baa2da7eda5f0 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_context.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_context.tsx @@ -99,13 +99,11 @@ export const AddPrebuiltRulesTableContextProvider = ({ invariant(rule, `Rule with id ${ruleId} not found`); setLoadingRules((prev) => [...prev, ruleId]); - await installSpecificRulesRequest([ - { - rule_id: ruleId, - version: rule.version, - }, - ]); - setLoadingRules((prev) => prev.filter((id) => id !== ruleId)); + try { + await installSpecificRulesRequest([{ rule_id: ruleId, version: rule.version }]); + } finally { + setLoadingRules((prev) => prev.filter((id) => id !== ruleId)); + } }, [installSpecificRulesRequest, rules] ); @@ -116,17 +114,23 @@ export const AddPrebuiltRulesTableContextProvider = ({ version: rule.version, })); setLoadingRules((prev) => [...prev, ...rulesToUpgrade.map((r) => r.rule_id)]); - await installSpecificRulesRequest(rulesToUpgrade); - setLoadingRules((prev) => prev.filter((id) => !rulesToUpgrade.some((r) => r.rule_id === id))); - setSelectedRules([]); + try { + await installSpecificRulesRequest(rulesToUpgrade); + } finally { + setLoadingRules((prev) => prev.filter((id) => !rulesToUpgrade.some((r) => r.rule_id === id))); + setSelectedRules([]); + } }, [installSpecificRulesRequest, selectedRules]); const installAllRules = useCallback(async () => { // Unselect all rules so that the table doesn't show the "bulk actions" bar setLoadingRules((prev) => [...prev, ...rules.map((r) => r.rule_id)]); - await installAllRulesRequest(); - setLoadingRules((prev) => prev.filter((id) => !rules.some((r) => r.rule_id === id))); - setSelectedRules([]); + try { + await installAllRulesRequest(); + } finally { + setLoadingRules([]); + setSelectedRules([]); + } }, [installAllRulesRequest, rules]); const actions = useMemo( diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx index 319b9b47e4c54..c33185cabf128 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx @@ -103,14 +103,17 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ invariant(rule, `Rule with id ${ruleId} not found`); setLoadingRules((prev) => [...prev, ruleId]); - await upgradeSpecificRulesRequest([ - { - rule_id: ruleId, - version: rule.diff.fields.version?.target_version ?? rule.rule.version, - revision: rule.revision, - }, - ]); - setLoadingRules((prev) => prev.filter((id) => id !== ruleId)); + try { + await upgradeSpecificRulesRequest([ + { + rule_id: ruleId, + version: rule.diff.fields.version?.target_version ?? rule.rule.version, + revision: rule.revision, + }, + ]); + } finally { + setLoadingRules((prev) => prev.filter((id) => id !== ruleId)); + } }, [rules, upgradeSpecificRulesRequest] ); @@ -122,17 +125,23 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ revision: rule.revision, })); setLoadingRules((prev) => [...prev, ...rulesToUpgrade.map((r) => r.rule_id)]); - await upgradeSpecificRulesRequest(rulesToUpgrade); - setLoadingRules((prev) => prev.filter((id) => !rulesToUpgrade.some((r) => r.rule_id === id))); - setSelectedRules([]); + try { + await upgradeSpecificRulesRequest(rulesToUpgrade); + } finally { + setLoadingRules((prev) => prev.filter((id) => !rulesToUpgrade.some((r) => r.rule_id === id))); + setSelectedRules([]); + } }, [selectedRules, upgradeSpecificRulesRequest]); const upgradeAllRules = useCallback(async () => { // Unselect all rules so that the table doesn't show the "bulk actions" bar setLoadingRules((prev) => [...prev, ...rules.map((r) => r.rule_id)]); - await upgradeAllRulesRequest(); - setLoadingRules((prev) => prev.filter((id) => !rules.some((r) => r.rule_id === id))); - setSelectedRules([]); + try { + await upgradeAllRulesRequest(); + } finally { + setLoadingRules([]); + setSelectedRules([]); + } }, [rules, upgradeAllRulesRequest]); const actions = useMemo( From 7ba25f7110a6c67e397946df731ceeb728757b39 Mon Sep 17 00:00:00 2001 From: Zacqary Adam Xeper Date: Fri, 16 Jun 2023 14:11:01 -0500 Subject: [PATCH 54/59] [RAM] Remove bulk snoozing of rules in Select All mode (#159749) ## Summary Closes #159748 Screenshot 2023-06-14 at 4 11 05 PM Screenshot 2023-06-14 at 4 11 00 PM --- .../rule_quick_edit_buttons.test.tsx | 38 +----- .../components/rule_quick_edit_buttons.tsx | 108 +++++++++--------- .../rules_list/bulk_actions.ts | 20 ++-- 3 files changed, 69 insertions(+), 97 deletions(-) diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/rule_quick_edit_buttons.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/rule_quick_edit_buttons.test.tsx index 4967f23f658a4..f03ddfcf97096 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/rule_quick_edit_buttons.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/rule_quick_edit_buttons.test.tsx @@ -77,7 +77,7 @@ describe('rule_quick_edit_buttons', () => { expect(wrapper.find('[data-test-subj="bulkDisable"]').exists()).toBeTruthy(); }); - it('disables the disable/enable/delete bulk actions if in select all mode', async () => { + it('removes the snooze bulk actions if in select all mode', async () => { const mockRule: RuleTableItem = { id: '1', enabled: true, @@ -99,14 +99,10 @@ describe('rule_quick_edit_buttons', () => { expect(wrapper.find('[data-test-subj="bulkEnable"]').first().prop('isDisabled')).toBeFalsy(); expect(wrapper.find('[data-test-subj="bulkDelete"]').first().prop('isDisabled')).toBeFalsy(); expect(wrapper.find('[data-test-subj="updateAPIKeys"]').first().prop('isDisabled')).toBeFalsy(); - expect(wrapper.find('[data-test-subj="bulkSnooze"]').first().prop('isDisabled')).toBeFalsy(); - expect(wrapper.find('[data-test-subj="bulkUnsnooze"]').first().prop('isDisabled')).toBeFalsy(); - expect( - wrapper.find('[data-test-subj="bulkSnoozeSchedule"]').first().prop('isDisabled') - ).toBeFalsy(); - expect( - wrapper.find('[data-test-subj="bulkRemoveSnoozeSchedule"]').first().prop('isDisabled') - ).toBeFalsy(); + expect(wrapper.find('[data-test-subj="bulkSnooze"]').exists()).toBeFalsy(); + expect(wrapper.find('[data-test-subj="bulkUnsnooze"]').exists()).toBeFalsy(); + expect(wrapper.find('[data-test-subj="bulkSnoozeSchedule"]').exists()).toBeFalsy(); + expect(wrapper.find('[data-test-subj="bulkRemoveSnoozeSchedule"]').exists()).toBeFalsy(); }); it('properly sets rules or filters to delete when not selecting all', async () => { @@ -132,28 +128,4 @@ describe('rule_quick_edit_buttons', () => { wrapper.find('[data-test-subj="bulkSnooze"]').first().simulate('click'); expect(updateRulesToBulkEdit).toHaveBeenCalledTimes(1); }); - - it('properly sets rules or filters to delete when selecting all', async () => { - const mockRule: RuleTableItem = { - id: '1', - enabled: true, - enabledInLicense: true, - } as RuleTableItem; - - const wrapper = mountWithIntl( - null} - selectedItems={[mockRule]} - onPerformingAction={() => {}} - onActionPerformed={() => {}} - onEnable={async () => {}} - onDisable={async () => {}} - updateRulesToBulkEdit={updateRulesToBulkEdit} - /> - ); - - wrapper.find('[data-test-subj="bulkSnooze"]').first().simulate('click'); - expect(updateRulesToBulkEdit).toHaveBeenCalledTimes(1); - }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/rule_quick_edit_buttons.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/rule_quick_edit_buttons.tsx index cf517d8266e8e..fa7fe6bae44d5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/rule_quick_edit_buttons.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/rule_quick_edit_buttons.tsx @@ -236,58 +236,62 @@ export const RuleQuickEditButtons: React.FunctionComponent = ({ gutterSize="none" data-test-subj="ruleQuickEditButton" > - - - - - - - - - - - - - - - - - - - - + {!isAllSelected && ( + <> + + + + + + + + + + + + + + + + + + + + + + )} { await refreshAlertsList(); await testSubjects.click(`checkboxSelectRow-${rule1.id}`); - await testSubjects.click('selectAllRulesButton'); await testSubjects.click(`checkboxSelectRow-${rule2.id}`); await testSubjects.click('showBulkActionButton'); await testSubjects.click('bulkSnooze'); @@ -62,13 +61,13 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await retry.try(async () => { const toastTitle = await pageObjects.common.closeToast(); - expect(toastTitle).to.eql('Updated snooze settings for 1 rule.'); + expect(toastTitle).to.eql('Updated snooze settings for 2 rules.'); }); await pageObjects.triggersActionsUI.searchAlerts(rule1.name); await testSubjects.existOrFail('rulesListNotifyBadge-snoozed'); await pageObjects.triggersActionsUI.searchAlerts(rule2.name); - await testSubjects.missingOrFail('rulesListNotifyBadge-snoozed'); + await testSubjects.existOrFail('rulesListNotifyBadge-snoozed'); }); it('should allow rules to be unsnoozed', async () => { @@ -93,7 +92,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await refreshAlertsList(); await testSubjects.click(`checkboxSelectRow-${rule1.id}`); - await testSubjects.click('selectAllRulesButton'); await testSubjects.click(`checkboxSelectRow-${rule2.id}`); await testSubjects.click('showBulkActionButton'); await testSubjects.click('bulkUnsnooze'); @@ -102,13 +100,13 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await retry.try(async () => { const toastTitle = await pageObjects.common.closeToast(); - expect(toastTitle).to.eql('Updated snooze settings for 1 rule.'); + expect(toastTitle).to.eql('Updated snooze settings for 2 rules.'); }); await pageObjects.triggersActionsUI.searchAlerts(rule1.name); await testSubjects.missingOrFail('rulesListNotifyBadge-snoozed'); await pageObjects.triggersActionsUI.searchAlerts(rule2.name); - await testSubjects.existOrFail('rulesListNotifyBadge-snoozed'); + await testSubjects.missingOrFail('rulesListNotifyBadge-snoozed'); }); it('should allow rules to be scheduled', async () => { @@ -125,7 +123,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await refreshAlertsList(); await testSubjects.click(`checkboxSelectRow-${rule1.id}`); - await testSubjects.click('selectAllRulesButton'); await testSubjects.click(`checkboxSelectRow-${rule2.id}`); await testSubjects.click('showBulkActionButton'); await testSubjects.click('bulkSnoozeSchedule'); @@ -134,13 +131,13 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await retry.try(async () => { const toastTitle = await pageObjects.common.closeToast(); - expect(toastTitle).to.eql('Updated snooze settings for 1 rule.'); + expect(toastTitle).to.eql('Updated snooze settings for 2 rules.'); }); await pageObjects.triggersActionsUI.searchAlerts(rule1.name); await testSubjects.existOrFail('rulesListNotifyBadge-scheduled'); await pageObjects.triggersActionsUI.searchAlerts(rule2.name); - await testSubjects.missingOrFail('rulesListNotifyBadge-scheduled'); + await testSubjects.existOrFail('rulesListNotifyBadge-scheduled'); }); it('should allow rules to be unscheduled', async () => { @@ -165,7 +162,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await refreshAlertsList(); await testSubjects.click(`checkboxSelectRow-${rule1.id}`); - await testSubjects.click('selectAllRulesButton'); await testSubjects.click(`checkboxSelectRow-${rule2.id}`); await testSubjects.click('showBulkActionButton'); await testSubjects.click('bulkRemoveSnoozeSchedule'); @@ -174,13 +170,13 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await retry.try(async () => { const toastTitle = await pageObjects.common.closeToast(); - expect(toastTitle).to.eql('Updated snooze settings for 1 rule.'); + expect(toastTitle).to.eql('Updated snooze settings for 2 rules.'); }); await pageObjects.triggersActionsUI.searchAlerts(rule1.name); await testSubjects.missingOrFail('rulesListNotifyBadge-scheduled'); await pageObjects.triggersActionsUI.searchAlerts(rule2.name); - await testSubjects.existOrFail('rulesListNotifyBadge-scheduled'); + await testSubjects.missingOrFail('rulesListNotifyBadge-scheduled'); }); it('can bulk update API key', async () => { From c47ae0da04d2c80ed2a49a3d091951c813614678 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sat, 17 Jun 2023 00:59:59 -0400 Subject: [PATCH 55/59] [api-docs] 2023-06-17 Daily api_docs build (#159878) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/371 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.devdocs.json | 15 +++ api_docs/cases.mdx | 4 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_chat.mdx | 2 +- api_docs/cloud_chat_provider.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 4 +- api_docs/data_query.mdx | 4 +- api_docs/data_search.devdocs.json | 123 +++--------------- api_docs/data_search.mdx | 4 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/ess_security.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mocks.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.devdocs.json | 64 ++++----- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- ...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 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- ...kbn_core_user_settings_server_internal.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_generate_csv_types.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- .../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_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.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_rison.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_project_switcher.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 +- ...ared_ux_avatar_user_profile_components.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- ...hared_ux_button_exit_full_screen_mocks.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_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_url_state.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_yarn_lock_validator.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/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 8 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/reporting_export_types.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/serverless_security.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_field_list.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.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/visualization_ui_components.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 541 files changed, 613 insertions(+), 679 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 3d02dae1fb9ca..2be3c663ce606 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2023-06-16 +date: 2023-06-17 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 0706c589bd3bf..4b5813fdbe9c0 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index db0c186a86bf1..3571b37f770c8 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index c1a7e5775763f..e503253b34bcb 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2023-06-16 +date: 2023-06-17 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 a60b90af8e078..0aa40571d5833 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 8aedb40c4febc..8b912e29bf7a3 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 30459acef70f0..4d5e33b4132d3 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index 89db9c87a1cb6..be0c6a293b656 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index b23e5d566e8d7..c91875987257e 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.devdocs.json b/api_docs/cases.devdocs.json index d8038f8cf266b..989ee06213efd 100644 --- a/api_docs/cases.devdocs.json +++ b/api_docs/cases.devdocs.json @@ -2379,6 +2379,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "cases", + "id": "def-common.LENS_ATTACHMENT_TYPE", + "type": "string", + "tags": [], + "label": "LENS_ATTACHMENT_TYPE", + "description": [], + "signature": [ + "\".lens\"" + ], + "path": "x-pack/plugins/cases/common/constants/visualizations.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "cases", "id": "def-common.OBSERVABILITY_OWNER", diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index abe95c7bbf931..7627e88990e82 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.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 | |-------------------|-----------|------------------------|-----------------| -| 79 | 0 | 64 | 26 | +| 80 | 0 | 65 | 26 | ## Client diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 7e544f65a21d7..ab8a567171661 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2023-06-16 +date: 2023-06-17 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 08046d1bfbc06..78766c449d6b6 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index d785b2b21031d..59e9ff82588ae 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_chat_provider.mdx b/api_docs/cloud_chat_provider.mdx index 5b57e3b028634..6ce1930b3e382 100644 --- a/api_docs/cloud_chat_provider.mdx +++ b/api_docs/cloud_chat_provider.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChatProvider title: "cloudChatProvider" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChatProvider plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChatProvider'] --- import cloudChatProviderObj from './cloud_chat_provider.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index b63d149f0f45f..3227779754f75 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2023-06-16 +date: 2023-06-17 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 fc7ea33ed4be3..0c1bdb8533c6d 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index 7be1d161bf6f5..0d3310c357701 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 30853189357b8..c7c224abaa3cf 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2023-06-16 +date: 2023-06-17 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 e14194d25997f..7b2db2f8ba149 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2023-06-16 +date: 2023-06-17 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 58d90d728e734..a3290a6d791bc 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 5706f08beffbe..d5939c3d01c53 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2023-06-16 +date: 2023-06-17 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 99d1c7926dcd9..af41b4898eaa2 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2023-06-16 +date: 2023-06-17 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 8eaee27226621..4dcc799517e81 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2023-06-16 +date: 2023-06-17 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 4ee493f68dcfd..0a2f0fbbcfa60 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2023-06-16 +date: 2023-06-17 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 fb606c540d245..b951c8dfe9b95 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3302 | 119 | 2578 | 27 | +| 3303 | 119 | 2579 | 27 | ## Client diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index c8ec35cd1664e..a77cd9bb9fbd1 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3302 | 119 | 2578 | 27 | +| 3303 | 119 | 2579 | 27 | ## Client diff --git a/api_docs/data_search.devdocs.json b/api_docs/data_search.devdocs.json index eea3d7ffbdf1f..ade5572ce56ec 100644 --- a/api_docs/data_search.devdocs.json +++ b/api_docs/data_search.devdocs.json @@ -345,7 +345,7 @@ }, ">>; get: (sessionId: string) => Promise<", "SearchSessionSavedObject", - ">; delete: (sessionId: string) => Promise; find: (options: Omit<", + ">; delete: (sessionId: string) => Promise; find: (opts: Omit<", { "pluginId": "@kbn/core-saved-objects-api-server", "scope": "common", @@ -361,39 +361,7 @@ "section": "def-common.SearchSessionsFindResponse", "text": "SearchSessionsFindResponse" }, - ">; extend: (sessionId: string, expires: string) => Promise<", - { - "pluginId": "@kbn/core-saved-objects-api-server", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", - "section": "def-common.SavedObjectsFindResponse", - "text": "SavedObjectsFindResponse" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSessionSavedObjectAttributes", - "text": "SearchSessionSavedObjectAttributes" - }, - ", unknown>>; rename: (sessionId: string, newName: string) => Promise<", - { - "pluginId": "@kbn/core-saved-objects-api-server", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", - "section": "def-common.SavedObjectsUpdateResponse", - "text": "SavedObjectsUpdateResponse" - }, - ">>; }" + ">; extend: (sessionId: string, expires: string) => Promise; rename: (sessionId: string, newName: string) => Promise; }" ], "path": "src/plugins/data/public/search/types.ts", "deprecated": false, @@ -813,7 +781,7 @@ }, ">>; get: (sessionId: string) => Promise<", "SearchSessionSavedObject", - ">; delete: (sessionId: string) => Promise; find: (options: Omit<", + ">; delete: (sessionId: string) => Promise; find: (opts: Omit<", { "pluginId": "@kbn/core-saved-objects-api-server", "scope": "common", @@ -829,39 +797,7 @@ "section": "def-common.SearchSessionsFindResponse", "text": "SearchSessionsFindResponse" }, - ">; extend: (sessionId: string, expires: string) => Promise<", - { - "pluginId": "@kbn/core-saved-objects-api-server", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", - "section": "def-common.SavedObjectsFindResponse", - "text": "SavedObjectsFindResponse" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSessionSavedObjectAttributes", - "text": "SearchSessionSavedObjectAttributes" - }, - ", unknown>>; rename: (sessionId: string, newName: string) => Promise<", - { - "pluginId": "@kbn/core-saved-objects-api-server", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", - "section": "def-common.SavedObjectsUpdateResponse", - "text": "SavedObjectsUpdateResponse" - }, - ">>; }" + ">; extend: (sessionId: string, expires: string) => Promise; rename: (sessionId: string, newName: string) => Promise; }" ], "path": "src/plugins/data/public/search/types.ts", "deprecated": false, @@ -1393,7 +1329,7 @@ }, ">>; get: (sessionId: string) => Promise<", "SearchSessionSavedObject", - ">; delete: (sessionId: string) => Promise; find: (options: Omit<", + ">; delete: (sessionId: string) => Promise; find: (opts: Omit<", { "pluginId": "@kbn/core-saved-objects-api-server", "scope": "common", @@ -1409,39 +1345,7 @@ "section": "def-common.SearchSessionsFindResponse", "text": "SearchSessionsFindResponse" }, - ">; extend: (sessionId: string, expires: string) => Promise<", - { - "pluginId": "@kbn/core-saved-objects-api-server", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", - "section": "def-common.SavedObjectsFindResponse", - "text": "SavedObjectsFindResponse" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.SearchSessionSavedObjectAttributes", - "text": "SearchSessionSavedObjectAttributes" - }, - ", unknown>>; rename: (sessionId: string, newName: string) => Promise<", - { - "pluginId": "@kbn/core-saved-objects-api-server", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", - "section": "def-common.SavedObjectsUpdateResponse", - "text": "SavedObjectsUpdateResponse" - }, - ">>; }" + ">; extend: (sessionId: string, expires: string) => Promise; rename: (sessionId: string, newName: string) => Promise; }" ], "path": "src/plugins/data/public/search/session/sessions_client.ts", "deprecated": false, @@ -4022,6 +3926,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-server.INITIAL_SEARCH_SESSION_REST_VERSION", + "type": "string", + "tags": [], + "label": "INITIAL_SEARCH_SESSION_REST_VERSION", + "description": [], + "signature": [ + "\"1\"" + ], + "path": "src/plugins/data/server/search/routes/session.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-server.SearchRequestHandlerContext", diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 68f64302fd622..2b5116a690385 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3302 | 119 | 2578 | 27 | +| 3303 | 119 | 2579 | 27 | ## Client diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index e9c80867db201..3a81f33279988 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2023-06-16 +date: 2023-06-17 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 72bbc68e802b8..737421b79b85e 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2023-06-16 +date: 2023-06-17 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 8651fe2860eb2..11f1f7031fc79 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2023-06-16 +date: 2023-06-17 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 84a8d589c29a3..a572fce1ec62a 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2023-06-16 +date: 2023-06-17 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 b7d1d7e1b21a9..3782e01842936 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 3cf5c85f6b681..7b78b62130dfd 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 2b6e8cfde928e..f0dce102ec40d 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 6a4977eeaefae..9ea24d3e4ba4e 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index e69e7bcb97ca5..3aa18900829a4 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2023-06-16 +date: 2023-06-17 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 6ead8e4277f38..c82a94f078c45 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2023-06-16 +date: 2023-06-17 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 ccf0c2be52776..6d7a50409ec8c 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 91000b2fdb712..dadcf55bf0b94 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 86fab78e45b11..48694926af3a9 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 98176b5c8aec7..023bb4e5103b9 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2023-06-16 +date: 2023-06-17 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 0c454cb723d5d..ea772138ca736 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2023-06-16 +date: 2023-06-17 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 0e7189422acba..e021dbe2ff780 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 82ba1307873b1..5a6f0d849d15e 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/ess_security.mdx b/api_docs/ess_security.mdx index 8df7655ee4480..1dc8b20eb7436 100644 --- a/api_docs/ess_security.mdx +++ b/api_docs/ess_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/essSecurity title: "essSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the essSecurity plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'essSecurity'] --- import essSecurityObj from './ess_security.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index a56de69ffc28f..525a8569f89ae 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index be7c55231d264..2cd82c6bb146d 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2023-06-16 +date: 2023-06-17 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 3483b6e081487..d0c1f540d0594 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2023-06-16 +date: 2023-06-17 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 a36fbba0bcdc6..9331333315152 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2023-06-16 +date: 2023-06-17 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 7176c58b0bae8..7122553dd703c 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2023-06-16 +date: 2023-06-17 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 52ece1dfa168d..a0ae1fae377c0 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2023-06-16 +date: 2023-06-17 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 7493b99a43eaa..404a0a54f9632 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2023-06-16 +date: 2023-06-17 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 86e67b2d9166d..329836ecd8f21 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2023-06-16 +date: 2023-06-17 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 7386106aa3f27..465c418e3bf6c 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2023-06-16 +date: 2023-06-17 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 2347f04522636..5c34517a164a2 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2023-06-16 +date: 2023-06-17 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 991530357e6d7..5ab8c9018d2af 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2023-06-16 +date: 2023-06-17 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 94d9e387f0cb9..ba3e4c13b05b9 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2023-06-16 +date: 2023-06-17 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 ae2aa1ce132e9..832cb61a7183f 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2023-06-16 +date: 2023-06-17 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 7ec3b9e96e277..fb2da9d4a7220 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2023-06-16 +date: 2023-06-17 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 68a830fa3fe37..97036d2629bb5 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2023-06-16 +date: 2023-06-17 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 2a57e80567067..6fa849cabcb96 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2023-06-16 +date: 2023-06-17 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 362021d9905e8..928a7e5bd6938 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2023-06-16 +date: 2023-06-17 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 1ff41afe310c0..9a92cca2fade2 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2023-06-16 +date: 2023-06-17 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 208678088ad48..1aa5a7ae47b95 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index bf473fa754483..560c301267e11 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2023-06-16 +date: 2023-06-17 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 4f02546adbd83..d63a7b23b9e1f 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2023-06-16 +date: 2023-06-17 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 625d0ac94546e..09024e8cdc16e 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2023-06-16 +date: 2023-06-17 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 244e0480c4f1a..df5dd7c89bf18 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2023-06-16 +date: 2023-06-17 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 a7a2d4c5d8ddf..e36d24789ca30 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2023-06-16 +date: 2023-06-17 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 d309d871d74eb..00c8e3a83d139 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2023-06-16 +date: 2023-06-17 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 0929862402179..9bb11694fb578 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2023-06-16 +date: 2023-06-17 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 4b77acc434df4..efcd6edf8d5d2 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index e7d05b1d21909..c3124309e7cf3 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 17fda1db8087b..e069cb87ade1d 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index f412b69ce557a..30a58e83a59e1 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 927fc6f82bae1..357ba0f633985 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 483eacb491b91..1cb6f59674679 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 239d55a41971f..6d824502c37d4 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index c65a65c9e3b5c..5fce4b41e8612 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index fd564678e6ef8..cea46fe2ba731 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 3e2bb44f29b2f..7b9ed96206b72 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index fddaf9d4ebff4..33ca830b2b675 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index bb1bdd3f5900d..78dd0dfea265c 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2023-06-16 +date: 2023-06-17 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 47ff78bebd411..6f0c447a3a874 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index e296c3d91d1a4..9147b6f0b5e12 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index fdef95eba1104..b1e5a334e8b42 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index de080bd9e09e0..eea6f0ccb6f00 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 90ddc6287c8e5..df0950c94aa8a 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 2493028fd6902..1373b33031e46 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index b023684ebcb47..cb612b2c8a91c 100644 --- a/api_docs/kbn_analytics_shippers_gainsight.mdx +++ b/api_docs/kbn_analytics_shippers_gainsight.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight title: "@kbn/analytics-shippers-gainsight" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-gainsight plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 4241c7d6921f8..e225967fea0c8 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 0e89c0b18e9f6..afc8286f93507 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2023-06-16 +date: 2023-06-17 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 7caf22a9e80ea..f13931d059028 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 1f21b3182319f..6d0e211ece145 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 26724c1e65945..fff69b2b1d170 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index f8f74436e38d2..be69afcce45d1 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 80ba6c62c8360..5efa190b351f2 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2023-06-16 +date: 2023-06-17 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 7a3c96d367336..c06fac53c67a2 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2023-06-16 +date: 2023-06-17 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 c2c865b5b1ae3..c91293db83671 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index fd5de76135e67..fe7c1b855a8b0 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2023-06-16 +date: 2023-06-17 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 886f34c9dde95..2d9941a9f134c 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2023-06-16 +date: 2023-06-17 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 8fe4a0b900710..8ca4ab2d14f64 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2023-06-16 +date: 2023-06-17 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 4aa24eb482226..01ff31c654264 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index ac96ce28ca541..58ebf7a333a02 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index 43050899e6ade..405fc124af9ce 100644 --- a/api_docs/kbn_code_editor_mocks.mdx +++ b/api_docs/kbn_code_editor_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mocks title: "@kbn/code-editor-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mocks plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index b8c1e48d8507b..fa40507d27cbb 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2023-06-16 +date: 2023-06-17 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 f91c2cc258cdf..c82a1b558f6bb 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2023-06-16 +date: 2023-06-17 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 b63bea91d0a93..18e566f2672e2 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 1319e2bb5ebc3..57cefc04761cc 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2023-06-16 +date: 2023-06-17 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 e7b023276d201..6ea06c810fe6a 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index c431a21fb18a7..1eb89df60c376 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2023-06-16 +date: 2023-06-17 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 8094ae7c9bd74..98dffbbffdd77 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 2554c8c4bab95..1ae13c733b774 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 4bd585a596f68..357a66c8dbd21 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 c1d409bbd5963..c220bce1fdd13 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 cd0f7b3d16be7..2d91b778d53f2 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 85bdcd0822bac..1767aa4ea9cde 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 50d3401458f70..2f9dc37b1bca3 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2023-06-16 +date: 2023-06-17 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 98cc98648d6a7..3f6ab85ede6d3 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 ba23fdd5fc4dd..62f937448ee6b 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 63693630887a4..615e89cd55c9a 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 776a3df6e4eb2..3577837c9288a 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 58359cb058eec..a880b215920b7 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 f5e9379da5040..0288629a241b3 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2023-06-16 +date: 2023-06-17 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 686679b05fa04..7f622af14981d 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 2e0c9e1690d19..86d52a9d15285 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 574bf025183ba..ae5d462e8a327 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 e5a8364b2fd14..ee7aa15227d0c 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 c61b9a764373c..6832707d791bd 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2023-06-16 +date: 2023-06-17 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 62034b01238c4..cdb66c326dd5c 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 2dbcca45249d8..a5af1801817c3 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 8ce6aea9f04e6..96d8feb70d786 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 ad3c6b0886440..11839cc522753 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2023-06-16 +date: 2023-06-17 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 536da9acfa468..0cabc85cd53b0 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2023-06-16 +date: 2023-06-17 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 0a412b101100f..eb588414ad2fa 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 1d7a0e4833674..113267ff9974a 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 3423e73c7019d..8bbc5567aca64 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 bed279259c9c6..ee28abe9c16f4 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 a181234ab27e6..860d8999e7bec 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 799a6a5fd8ac0..887d616823e46 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 5b07000e25ad3..40aba66dd195b 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 70a5875228353..99c85c0a62c27 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2023-06-16 +date: 2023-06-17 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 7749592f9cf56..9cd32868e7eeb 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2023-06-16 +date: 2023-06-17 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 c6a19e3f4a114..7bf4a7bd2a5ce 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 514aacaf42b97..fafe7e6482a48 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 4e90b5e982a3b..b6fc84ae21f8c 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 9ded06447f08d..f009857e8a290 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 878db4363253f..1907a7cac0584 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 b5fdc6c1311a0..5589fc4ee46e2 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2023-06-16 +date: 2023-06-17 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 3e0196f4e5254..0426000cd2bcd 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2023-06-16 +date: 2023-06-17 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 cb57efa69e1f4..b50fd834c2288 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 4fbd824d31690..a8d483aa5b29a 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 4c11c5bcf87f6..4368ce52bfc2b 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 3503f4d4ed5d7..6e8b0c72d1eaf 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 c9ea796097ef9..3a72198883caf 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2023-06-16 +date: 2023-06-17 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 a9dec40cde64e..aca7e213bc29c 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 80e46aa5c1821..0d1f672909550 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 17a3ada354ec9..f85a6f711b8bb 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 3f2c28d5272f9..3174ccd2a2471 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2023-06-16 +date: 2023-06-17 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 2bc2d3445f6d4..7a51307920414 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 df2ed09482a38..6ad65d8b33ca3 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 2e33050bb92be..81978efa1414e 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 fa7465e2612c7..89301d2fca639 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 c19415fe64a73..6e113181b9b35 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 abc84df00df7d..50644b6f58b25 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 3cb22a32469a6..e9fbb2daf2848 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 0ec6e59dd5513..a9f3230691948 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2023-06-16 +date: 2023-06-17 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 c038872884ddd..6435e1a04bc19 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2023-06-16 +date: 2023-06-17 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 ae283f636687c..df35254f7374a 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 a9528d68a47e6..91cbadf28f94e 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 beb08da3cbc56..5d8dc9683297d 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 6eee4cb7ce6b1..c4c5381541bd7 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index d2156303a1f1e..60a2fb418746e 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 f08c5d3f095eb..63c8acb066c6b 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 e0bd5596154bf..1c1982170f3b2 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 2928587448624..45f51eaf484ab 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2023-06-16 +date: 2023-06-17 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 fa10ee724b89f..2f7a5fabf96fd 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 949ddbc25d5eb..2d4a0d4d5c794 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2023-06-16 +date: 2023-06-17 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 66134a66459b6..2aa8dfa9bd474 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2023-06-16 +date: 2023-06-17 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 f0b3c1e838b61..95ad1a6178a0e 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 563232125e2af..159041edc0234 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index fc07ad6fe8dbe..8a41010e2727e 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index d96f47c6761b4..65e6df3da1985 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 d64690ffd62eb..c64fa574d6eb7 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -3487,14 +3487,6 @@ "plugin": "bfetch", "path": "src/plugins/bfetch/server/plugin.ts" }, - { - "plugin": "data", - "path": "src/plugins/data/server/search/routes/session.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/server/search/routes/session.ts" - }, { "plugin": "data", "path": "src/plugins/data/server/query/routes.ts" @@ -6533,22 +6525,6 @@ "plugin": "bfetch", "path": "src/plugins/bfetch/server/plugin.ts" }, - { - "plugin": "data", - "path": "src/plugins/data/server/search/routes/session.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/server/search/routes/session.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/server/search/routes/session.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/server/search/routes/session.ts" - }, { "plugin": "data", "path": "src/plugins/data/server/query/routes.ts" @@ -8887,10 +8863,6 @@ "plugin": "bfetch", "path": "src/plugins/bfetch/server/plugin.ts" }, - { - "plugin": "data", - "path": "src/plugins/data/server/search/routes/session.ts" - }, { "plugin": "data", "path": "src/plugins/data/server/query/routes.ts" @@ -10067,10 +10039,6 @@ "plugin": "bfetch", "path": "src/plugins/bfetch/server/plugin.ts" }, - { - "plugin": "data", - "path": "src/plugins/data/server/search/routes/session.ts" - }, { "plugin": "data", "path": "src/plugins/data/server/query/routes.ts" @@ -14166,6 +14134,14 @@ "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/internal/has_data_views.ts" }, + { + "plugin": "data", + "path": "src/plugins/data/server/search/routes/session.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/search/routes/session.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/json_schema.ts" @@ -14654,6 +14630,10 @@ "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/internal/fields_for.ts" }, + { + "plugin": "data", + "path": "src/plugins/data/server/search/routes/session.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/annotations.ts" @@ -14814,6 +14794,22 @@ "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/internal/fields_for.ts" }, + { + "plugin": "data", + "path": "src/plugins/data/server/search/routes/session.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/search/routes/session.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/search/routes/session.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/search/routes/session.ts" + }, { "plugin": "data", "path": "src/plugins/data/server/search/routes/search.ts" @@ -15374,6 +15370,10 @@ "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/public/delete_data_view.ts" }, + { + "plugin": "data", + "path": "src/plugins/data/server/search/routes/session.ts" + }, { "plugin": "data", "path": "src/plugins/data/server/search/routes/search.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 9e3387ae1b866..97cf5c21daa55 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index d254d271c0717..ad7a7f74d484b 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 f41eb6d5c8770..2a3756ddecef0 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 1e52083fff343..377ba95dc345b 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 67476503485a6..863f23b164dd0 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 bfbaf3c240efd..c992300f104e4 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2023-06-16 +date: 2023-06-17 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 17a7ca15eb530..9c1cfc9bc3091 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 05da25617624d..e7d0be101f4ca 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 87e5ec1bb6b8a..7b00c884596cd 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 890a7d8177e02..98dc033787eb8 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 555f3a0e8bbfa..aea4bcd1d7d43 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 9ef6ee0542522..a907684b8216f 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 e8d838e80e712..563d5d2862084 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 91385f0b221ee..044a57d25d64d 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2023-06-16 +date: 2023-06-17 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 95fac0656d440..8c1e724108efd 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 a409f931834b1..04c3f295a4573 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 7f7d25e9c0888..93e7d44b88c82 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 80692c45f8329..c3df94f4dee36 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2023-06-16 +date: 2023-06-17 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 329cc7af9c562..717dafe32dde8 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 1d8b773edad76..03f64552fda34 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 f3a2d5654aa94..be361f8b3ee65 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 612b803b2f007..099331b1c2d4a 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 400ff855cf017..b32802bbc900a 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2023-06-16 +date: 2023-06-17 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 25816db97fc16..a9a947df7b0fb 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 007d390007f79..872986bdc14be 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 456c212dfd89d..3ee8d7f2b9338 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 9d956ee92abe5..353ebe5da3712 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2023-06-16 +date: 2023-06-17 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 97ea4eafba4f9..24fda81a0262c 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 1a5df8ad10007..60825fb0239a3 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 1bc37c8da75b9..f9b46937c3786 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 f311d1ffc0f91..1624ec6c0737b 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 884322e4ad923..a87a06010e8a8 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 54cffc4f4d35a..089bc08f61565 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 5dea2e2eaa078..2e95a1d9f97c6 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 6d218d9f1ee5a..3768eeb61cabe 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 3d1d2964e62d2..b020d9005e53c 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 64f5eec669305..698be0df38784 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 2da1714f3c652..2d11b1a8b0501 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2023-06-16 +date: 2023-06-17 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 e3b611b1439c5..5151910a20ecf 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 5eda9b48d4f67..c36e67521d156 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2023-06-16 +date: 2023-06-17 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 87a53f900dd1b..a4020362bce6b 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 38529bbefe47d..059038acf90f3 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 527eff6ee9d82..e922fb96f4b69 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 5f0651c5a5aeb..783e5ec93f97b 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 7b8dd30fcab07..8bb6f71ea8129 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 1ffb6d9adfe6a..ab2702e3e6045 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 d9bb9350422b0..acb0732a3478e 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2023-06-16 +date: 2023-06-17 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 d776d06e894c4..39cefb3b6d3de 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 ea3637fa726ae..df14f90226bd2 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 8184a3d814690..8505aa0e1a328 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 e64be798cb170..5c84c98fe81c1 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 e273dffaab0f2..887cc5e65f28f 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 3381c21c6dcc8..629e60516caae 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 6f7d59e0605f7..9586fdc4bdc1f 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2023-06-16 +date: 2023-06-17 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 fdffc6be2a413..58ccf4db8759c 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 7b636268d1691..a9a2a55fc9f6a 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 7d0a2c7b1f55c..b83947090de49 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 e8b20692728df..d7e99d638fad1 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 54cec8fc9730e..ce1354e089b8e 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2023-06-16 +date: 2023-06-17 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 ef506e50631ba..93b59ba06bde8 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 cc5b249f27d94..b8b3db553c233 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 006f208bd3d07..41f5a445d32c2 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index ea0e8e7f2eee3..e876183d05adb 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index d9dabd05667a1..77a48f32ad497 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index e90f34ca606de..8bc1dafd7bde3 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2023-06-16 +date: 2023-06-17 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 417f2d132d265..f3c755b8dd53a 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 de49d96b9b35b..0fefe1689ac44 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 08a4978e386c0..254348225ba74 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2023-06-16 +date: 2023-06-17 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 ccec04e7117ec..12c9dce1a2e6d 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 05065d647c140..e99d140a09fd2 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index c42560c6e0b8d..868e2e806fafc 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2023-06-16 +date: 2023-06-17 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 e96c826ff529e..0f1e78c46002e 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 fe97ea2ad21c3..39f02ae8de99e 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 37e53f693e41f..a2569aa0c38c0 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 36293887ed045..1d2306d5a8c3d 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 d45aee34d9d28..3da40d6c3b21a 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 62dcd8bbb3f64..c10acd4c5254f 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 d3fceca488bf5..edd5f77ce05ac 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 972516d8bc430..282c3fbd185d8 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2023-06-16 +date: 2023-06-17 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 c8c7fa0968180..40c0c1d2628ee 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 650f82a793259..2cc0155fd860f 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 7557c28befcb3..d6355aa136a7e 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 097735204d0b2..c460df6a791bb 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2023-06-16 +date: 2023-06-17 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 0c56236f21c39..023bfc9b30e8a 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 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 90fdc301ecbb2..98a40056c99e6 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index f0d6eae13ae41..b9d80c2d4dd18 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index d4fef6c676b63..126b252b0e5e5 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 4714588b6fbbf..82133d2497c24 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 787256e182cb5..e2c532f0f4e6a 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2023-06-16 +date: 2023-06-17 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 2a40b4732b0a5..b5eeb596d0073 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 8b9aa9d893455..61cffafe9d8dd 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index da82bcd091275..f6dbc29062e9d 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2023-06-16 +date: 2023-06-17 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 8c6464faf8086..6354b0c7cef7f 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2023-06-16 +date: 2023-06-17 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 1efddbc268726..19e30e204edf4 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 265d85b6c821e..90171a55a23a2 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2023-06-16 +date: 2023-06-17 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 44a9bdc90adfc..3759c56b2d2bd 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2023-06-16 +date: 2023-06-17 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 f972e8bb4aaa8..b937443dcad4d 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2023-06-16 +date: 2023-06-17 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 1f58316d5a9e6..31acc7b8265a1 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 4fc3a8bc9ebbe..13e7be4a94d48 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2023-06-16 +date: 2023-06-17 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 a2ac04726a9c6..678349695477c 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2023-06-16 +date: 2023-06-17 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 1a3414a6a14b3..d239357d76428 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2023-06-16 +date: 2023-06-17 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 386fffbe07987..c7030e0353074 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2023-06-16 +date: 2023-06-17 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 4070d924f8691..bd6e1c021505a 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2023-06-16 +date: 2023-06-17 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 38b24f47526f4..ff05bf211c01a 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2023-06-16 +date: 2023-06-17 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 7200b53685a77..381170b6cc212 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2023-06-16 +date: 2023-06-17 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 5932353b1e226..66accd984d88c 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index c5de418e60071..d15384ff35f33 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2023-06-16 +date: 2023-06-17 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 cbbee79da6cf3..01a122567c36a 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 f789b0e6000da..47ad5dd1085da 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2023-06-16 +date: 2023-06-17 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 d348bae2b1255..02636806ac7d4 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index cfa5297bbb38a..3acf49a5a85f4 100644 --- a/api_docs/kbn_ecs.mdx +++ b/api_docs/kbn_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs title: "@kbn/ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 3e5b749a27938..89cfdcf4aa49d 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index dcc3b70674eca..08800f68e3058 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 8be4d53350e4c..c15a57f98eaa1 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2023-06-16 +date: 2023-06-17 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 c5e341fa36064..58c8affba5457 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2023-06-16 +date: 2023-06-17 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 b56d60b4c4427..fbb7fe9d1926b 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2023-06-16 +date: 2023-06-17 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 fdf124e2dccdf..1244352e5e182 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2023-06-16 +date: 2023-06-17 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 154d1c2270ea5..dc49b4830ae60 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2023-06-16 +date: 2023-06-17 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 390c78ab0b042..f3a8f78fe6ce9 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index bf3b688be59d2..e694f58097c27 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2023-06-16 +date: 2023-06-17 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 612ae6cd90096..06aca51e3b524 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index fb1f1f306c01a..761f2479acd9f 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2023-06-16 +date: 2023-06-17 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 f40a6f283c936..c09ba7ea02883 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index dad68d86ea5bd..dc32f09e07021 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 8666a5b5a7d56..2a69402ff8a14 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx index 2aa4a52881542..65d1b7bac4541 100644 --- a/api_docs/kbn_generate_csv_types.mdx +++ b/api_docs/kbn_generate_csv_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types title: "@kbn/generate-csv-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv-types plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types'] --- import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 1509e96a7b8bc..38e634cac2534 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2023-06-16 +date: 2023-06-17 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 8a0754549af52..04e7da533f1ea 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2023-06-16 +date: 2023-06-17 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 c4743e274d0fc..175f10f8c44b6 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 ff708b0974fe9..de9026d08695f 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2023-06-16 +date: 2023-06-17 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 c169285d5c1fa..de1329e72d877 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2023-06-16 +date: 2023-06-17 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 9e46b306dd510..7e7366e564ad6 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2023-06-16 +date: 2023-06-17 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 e57827a7558b0..a44adb064a19b 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2023-06-16 +date: 2023-06-17 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 a784ed25b318a..528c20a6f13f6 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2023-06-16 +date: 2023-06-17 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 634c9b75b87f3..346131def2652 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 0b749c9498ccd..6e7bdf554cbf0 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2023-06-16 +date: 2023-06-17 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 c67119f52062a..e66ca8b447d10 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index b2acad719b539..6119d9776feee 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 763fda24eaf20..5b10f296dea13 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2023-06-16 +date: 2023-06-17 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 03e57eca0b7b4..96e18c22d50e6 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2023-06-16 +date: 2023-06-17 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 ec47a8182eddb..bf29310506d29 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index a3b46272f46da..7ff204b851b06 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index a79138affb03d..2086975dfc32d 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index bc94635277531..6eaf609092a2c 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2023-06-16 +date: 2023-06-17 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 11d3018d3fb16..f7eab3b0d76ca 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 00c96fb6b242e..d86c6f4287fb3 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 0787ebe396223..dc0b2b9c114a4 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2023-06-16 +date: 2023-06-17 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 452b64f9c79b1..1c60c273bbff3 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 9bec391183afe..7ef16742a3c75 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 531ac990cf073..2675a65c5c924 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2023-06-16 +date: 2023-06-17 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_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 27ef8f5433d2b..390935004350d 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 a5c56460da3f5..c137d1f29eab9 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2023-06-16 +date: 2023-06-17 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 79f26a0b2d9fa..0e5cd31346ab1 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2023-06-16 +date: 2023-06-17 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 4bcc3877a974b..2b3140b2ee258 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 536f5f4f6f5d4..db9ee702f4559 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 6d13515bfa48a..75b3669d396fa 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2023-06-16 +date: 2023-06-17 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 a019a967aee99..10a905c821901 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index 7f6596338f0a2..1432d00eec023 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index f30be2833bb56..0bedfe84e8bf5 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2023-06-16 +date: 2023-06-17 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 e374f05f683e4..aa12cd3beeff4 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2023-06-16 +date: 2023-06-17 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 6d7bddeef5550..6b2f66cb79a78 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index 8e8552451bb57..89ecc5d4768db 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 85e22e8086b77..b9b14bbcf9138 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 fa3f8d32ef4e1..97bc4906a8cd5 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 15513250b51e5..bdf228c3f58cc 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 4f581cb71babb..6f835066fe92b 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index e2731f87ed57c..97fda990a014b 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index efd107131d599..58dd0199ccad2 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 5f5510c05f5da..e43488c79b56e 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 3260455ade589..6c02d9e2465a7 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 4e55d47b91c28..b93fe84efc03c 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index b0ba1334651b3..b8ae5f5264cf4 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2023-06-16 +date: 2023-06-17 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 f3ac10d8f6448..0f54531691d83 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2023-06-16 +date: 2023-06-17 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 ce5b674e8bdd3..ef003e3fc4535 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 7aff681cefe6d..4bea7e3aabf09 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 722286e59224a..aee3fee9629c4 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2023-06-16 +date: 2023-06-17 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 c1e2b0987a2ea..5361f3f53db64 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index ac025b263cf3e..f621347468a26 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2023-06-16 +date: 2023-06-17 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 8f14cbed928bb..6a3382384d6c0 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 8e199c416b004..274b42cf3195a 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2023-06-16 +date: 2023-06-17 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 7462d4dd1e5c7..16945bc8aa704 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2023-06-16 +date: 2023-06-17 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 dd45ddcff9f89..fc06b2e6207e3 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2023-06-16 +date: 2023-06-17 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 595153f98f343..d6f83ca5d6552 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2023-06-16 +date: 2023-06-17 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 653a18d7e7767..2d5d293c4f520 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 2031090eece6d..17ea34f9a43b0 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index b3f342da9ec4a..b63d2c58f81b4 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 a9a36a1dc1820..fa6fa0b062f2f 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 68f29c4e66fab..f7544eaec5bcf 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2023-06-16 +date: 2023-06-17 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 d12d64653be05..99de405d4d4d9 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 3e89a266d430f..f3c4f493cee04 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2023-06-16 +date: 2023-06-17 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 3cd84edbb41bd..7c51aeabc5674 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index d1ea7d3802c66..8f9f9024a9cb4 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 9d7e989441fe6..fda7a3ffc07da 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index f2f05a916f6fb..a3ae98cb90a32 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index bf51132398b1b..5157ef670be79 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 08249f73cb352..5b0f0a4455df3 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 48de65eefa4f4..f5338458fddd9 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2023-06-16 +date: 2023-06-17 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 41dca3d9f0416..ff3979bd60451 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2023-06-16 +date: 2023-06-17 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 5c3f4a0401518..247aca94847f6 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2023-06-16 +date: 2023-06-17 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 12be71179a0ee..abeea3f06f97d 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 850b6769502fe..077cfb2c85c53 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2023-06-16 +date: 2023-06-17 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 8f8a91e9f1558..2490ae43d9e9d 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2023-06-16 +date: 2023-06-17 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 68c874a75da60..9f60df6a5d6d0 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2023-06-16 +date: 2023-06-17 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 e6a1d50f54f7b..8c89db82d7eda 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 b7bc650fc2aef..e22d635747d8b 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2023-06-16 +date: 2023-06-17 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 39162db19c6ec..fcf4f034c8300 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2023-06-16 +date: 2023-06-17 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 94cace6335474..d77d221730288 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2023-06-16 +date: 2023-06-17 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 8ac3c94067d5b..add12771dd5c1 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2023-06-16 +date: 2023-06-17 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 21f91ff3f907b..aacd216f87a2e 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 5694ac9f7a811..c33d5dcc684ba 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 061e2560161dd..440065d4279a8 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2023-06-16 +date: 2023-06-17 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 763b8b1cb4340..186fe7742f5cf 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2023-06-16 +date: 2023-06-17 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 c7c81c6ce6439..01c6aa4740ed7 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index 12e405648cc4f..dd2288d5a8680 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 24f9e4bfad065..0e46e23de84a1 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index f1035d86fc50f..87ae14bb28443 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 99a48c5210568..34f5594c4bd90 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2023-06-16 +date: 2023-06-17 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 b0c924613b03f..e60585f50900a 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2023-06-16 +date: 2023-06-17 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 7dcd9f1516c27..6c79a56ce2a3d 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 a8389531d16e0..a0f15ab62ec7e 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index d6a7d68f32d5b..e3949a76a0d99 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2023-06-16 +date: 2023-06-17 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 934a442cbccc4..e91ccbbf96865 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2023-06-16 +date: 2023-06-17 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 a78eae571b460..e54731b880f0b 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 973e0da67b3dc..7b9dbedd82d7c 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 3c653639f1af0..d365745fee114 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2023-06-16 +date: 2023-06-17 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 3c931bf8ac780..fd5f5c71ef10e 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2023-06-16 +date: 2023-06-17 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 b54a46beb4527..27701ce2caa29 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2023-06-16 +date: 2023-06-17 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 46b79684f3991..68171f229f964 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2023-06-16 +date: 2023-06-17 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 0192192b187b3..4e2c73ad3f832 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2023-06-16 +date: 2023-06-17 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 f8a7d669dbe44..956973d609933 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 8ee3ed240c179..ffeacc0611a55 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2023-06-16 +date: 2023-06-17 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 b6b73425379ae..a02f1b9f3e95d 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 787bb886bf851..076d6d0a8190e 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2023-06-16 +date: 2023-06-17 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 14984d90e12da..2678c82a930f7 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 7889e70bf479f..5f75aaea3b5aa 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2023-06-16 +date: 2023-06-17 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 c242f9b15ba13..fbad8a4a8c42b 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 8f214f9c2552f..5de5835763a77 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2023-06-16 +date: 2023-06-17 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 84185fdacaca0..17714d5da946e 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 330dbeedd0815..6b774ad6a79bd 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2023-06-16 +date: 2023-06-17 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 5b43391e5813b..68716e55fb02e 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2023-06-16 +date: 2023-06-17 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 d7f509d02b32c..0abddebffef9a 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 1baec1f11ae30..59ebbf5eb2cce 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 5981372f35407..94e0083485566 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2023-06-16 +date: 2023-06-17 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 36aac9188eeee..96b859a577a8d 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2023-06-16 +date: 2023-06-17 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 a990a6b052d19..e85594769094f 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 cc20cd67a7888..5179e55d92513 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2023-06-16 +date: 2023-06-17 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 baca65b128616..8bb64d964f4ad 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2023-06-16 +date: 2023-06-17 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 6a284a6c4a2af..8f6eb12511a8c 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2023-06-16 +date: 2023-06-17 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 df3e70145e1a3..63f4c374fe1ea 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2023-06-16 +date: 2023-06-17 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 21861b3153d66..d0054e919b430 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 524e35bd37090..9ef4b05efd8ff 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 3579bd3291f64..5aaeba5eef0db 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2023-06-16 +date: 2023-06-17 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 d0b91c2cb18a9..0663c5a200999 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 6770f3d760f6a..9d00d8bc52c2e 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2023-06-16 +date: 2023-06-17 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 08e9eaf18ed21..1369fd2a5f51c 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2023-06-16 +date: 2023-06-17 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 a25fda90ec3d0..a5b874a086240 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index a89dabb6d1e18..2c07ef26957be 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2023-06-16 +date: 2023-06-17 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 54fcfc8eb9a34..8258614646fe5 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 0a635c27b5ab4..6225d27484fc3 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2023-06-16 +date: 2023-06-17 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 d09cc04d1d171..6b0f3d157c2d4 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index be04dda89d3a1..0c927ffc136b8 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 424807bda1fad..1fddafa438105 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 2f1457de948d3..6b568cf00ea0c 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2023-06-16 +date: 2023-06-17 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 c651ac63d7e68..921f4d482acd6 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2023-06-16 +date: 2023-06-17 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 153fac4f47318..38ea2d2a611dc 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2023-06-16 +date: 2023-06-17 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 48bddeb0859d7..a10234c35a8a5 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2023-06-16 +date: 2023-06-17 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 8b90f5c4ee120..559772ba2f7cc 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index b1be1bc7dd730..0cbe8a9b56250 100644 --- a/api_docs/kbn_url_state.mdx +++ b/api_docs/kbn_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state title: "@kbn/url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/url-state plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 0ebccd83459f0..053b26b41accd 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2023-06-16 +date: 2023-06-17 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 c75063a2fd540..df901ab921640 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2023-06-16 +date: 2023-06-17 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 aec46e40654d0..d8924d3910f02 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2023-06-16 +date: 2023-06-17 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 99cff8162f432..b304aa8189cb7 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 7fc6493922ba0..641fdad172efb 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index a1b64b5400f0c..e03606199dd35 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2023-06-16 +date: 2023-06-17 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 934abfaba326e..59911205d9174 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2023-06-16 +date: 2023-06-17 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 5fd9c1c6224bf..97fdfcc81b12d 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2023-06-16 +date: 2023-06-17 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 eafc945dcabdd..32fb4ab58fe34 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2023-06-16 +date: 2023-06-17 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 8b82f29160178..2f8a56b2630f3 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2023-06-16 +date: 2023-06-17 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 c3fa6040392b4..01d5480828f50 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2023-06-16 +date: 2023-06-17 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 96e14e1efc74b..075ecacfe620c 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2023-06-16 +date: 2023-06-17 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 0e2cbb74b72b7..e5a43163b4ee4 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 663091e907db3..89f43a3479643 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 8e51b0553fa7b..9ed629f892546 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2023-06-16 +date: 2023-06-17 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 d0230e88b8589..0d793f3ca5bcb 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2023-06-16 +date: 2023-06-17 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 e69143af922f8..f955d8f615a19 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index b06feb6a4b34d..e66aca2a21e94 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 3d362e0d211c8..ad2ee997846fb 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2023-06-16 +date: 2023-06-17 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 cac0b37c59673..ddefc06aaf9b2 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2023-06-16 +date: 2023-06-17 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 d8f35c98d538d..e126c53525d79 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2023-06-16 +date: 2023-06-17 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 b9a8cdd4dc2f4..f216753719f95 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 33aea72e68d2b..7104a591ae1b7 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 05cc930c1e5d7..87efc7b899d3e 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 01586572e352f..2f2b8162920f5 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2023-06-16 +date: 2023-06-17 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 959db437852e0..63ecd02d1367c 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2023-06-16 +date: 2023-06-17 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 756a9c8c1c764..7860c5a8e92a2 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 01957b46d02cf..3fe8e0732fdf5 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 70793 | 537 | 60630 | 1383 | +| 70795 | 537 | 60632 | 1383 | ## Plugin Directory @@ -36,7 +36,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 9 | 0 | 9 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Considering using bfetch capabilities when fetching large amounts of data. This services supports batching HTTP requests and streaming responses back. | 91 | 1 | 75 | 2 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Canvas application to Kibana | 9 | 0 | 8 | 3 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 79 | 0 | 64 | 26 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 80 | 0 | 65 | 26 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 271 | 16 | 256 | 10 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 52 | 0 | 11 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | Chat available on Elastic Cloud deployments for quicker assistance. | 3 | 0 | 2 | 0 | @@ -56,7 +56,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 274 | 0 | 255 | 1 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 99 | 0 | 97 | 9 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 54 | 0 | 51 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3302 | 119 | 2578 | 27 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3303 | 119 | 2579 | 27 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin provides the ability to create data views via a modal flyout inside Kibana apps | 16 | 0 | 7 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Reusable data view field editor across Kibana | 72 | 0 | 33 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data view management app | 2 | 0 | 2 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index af274f9e8bcaf..128ccd4c999b9 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 89342dde3491f..c6d36cd806847 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 12894edd48f11..b862bba672b27 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2023-06-16 +date: 2023-06-17 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 7baae2787c864..23cc5caa114e0 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/reporting_export_types.mdx b/api_docs/reporting_export_types.mdx index faca1d35de068..f78a755d2c788 100644 --- a/api_docs/reporting_export_types.mdx +++ b/api_docs/reporting_export_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reportingExportTypes title: "reportingExportTypes" image: https://source.unsplash.com/400x175/?github description: API docs for the reportingExportTypes plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reportingExportTypes'] --- import reportingExportTypesObj from './reporting_export_types.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index d6880d693140e..5c3206d7df358 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2023-06-16 +date: 2023-06-17 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 e3d422b49570f..6b8c57ebb4e5f 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2023-06-16 +date: 2023-06-17 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 71b939c0df64e..d0204ba86f019 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2023-06-16 +date: 2023-06-17 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 f3485fd154132..2e703a2e7e817 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2023-06-16 +date: 2023-06-17 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 05c1742c46a84..a7372b60d55ef 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2023-06-16 +date: 2023-06-17 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 9d42755df200d..eab91cd338cf1 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2023-06-16 +date: 2023-06-17 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 6d9bb92a141e8..9bbbe1a31b22d 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2023-06-16 +date: 2023-06-17 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 f82b18ee42dc4..1052c4a6e6a4a 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2023-06-16 +date: 2023-06-17 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 227d7e827efb2..e5a63e5d353c6 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2023-06-16 +date: 2023-06-17 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 75468bb14aeeb..6d598ec7dc977 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2023-06-16 +date: 2023-06-17 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 12b4d947258ce..678da5e75ba6f 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 8892000f95d85..f41fd31942402 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index b5d516935041a..3a47866e9d1cb 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 7d3b899f9b79e..c88a89011eb8d 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2023-06-16 +date: 2023-06-17 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 852d675c37048..582738d1aea01 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2023-06-16 +date: 2023-06-17 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 4e6096e5cd800..5ccc2b6cdb05a 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/serverless_security.mdx b/api_docs/serverless_security.mdx index dccb1887beaf5..cb6f4cc14b517 100644 --- a/api_docs/serverless_security.mdx +++ b/api_docs/serverless_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSecurity title: "serverlessSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSecurity plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSecurity'] --- import serverlessSecurityObj from './serverless_security.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 4aae28b6f7bdc..6de94ccfb3c42 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2023-06-16 +date: 2023-06-17 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 b48acd52ae7fc..36afee9bad699 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 03b0b31168281..83703e2a59767 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2023-06-16 +date: 2023-06-17 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 b0c9bdb5b0647..00f92ed9c0b59 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2023-06-16 +date: 2023-06-17 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 3aa84a78b91dd..736ad779e3700 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2023-06-16 +date: 2023-06-17 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 c1ca28bc94fc2..ace74417e579a 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 36999d7c13258..77969b961e12f 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 3ba32c60cb354..9d7c41532063a 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2023-06-16 +date: 2023-06-17 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 a778bb1d95b05..3f40e1710afa8 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index c336e71f5877a..541a45dd7b51e 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 7506d05e99bfa..5a782d606ceeb 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index e74e0be56231f..9aa169dc61f26 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index dfdd26bb7a4eb..4bd484f48595c 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 6ee92f5a513ef..538d077737705 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2023-06-16 +date: 2023-06-17 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 56ef88da3a200..d84cdfb0be839 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2023-06-16 +date: 2023-06-17 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 6207d7fc78c93..097e8ac63acd6 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index be718bb58463a..772dbd6b28c46 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2023-06-16 +date: 2023-06-17 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 e6a42bb7964b3..1883c5accb3c7 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_field_list.mdx b/api_docs/unified_field_list.mdx index 76b529e3a4096..f7cfd5907c9ae 100644 --- a/api_docs/unified_field_list.mdx +++ b/api_docs/unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedFieldList title: "unifiedFieldList" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedFieldList plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 2b7b6d472c430..02a4c50c7d825 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2023-06-16 +date: 2023-06-17 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 b9af776ac190e..1f49e37f4d266 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2023-06-16 +date: 2023-06-17 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 4e89eacae5d1e..6c2cbf0a33129 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 6ee693ac3e412..bfeb6b9a2b150 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2023-06-16 +date: 2023-06-17 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 dff68a27077ac..9065d143eb30f 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2023-06-16 +date: 2023-06-17 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 517d4c4b8d019..11ba00a0cad4f 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2023-06-16 +date: 2023-06-17 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 af406d91a5a19..663cfad197f05 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2023-06-16 +date: 2023-06-17 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 9981d8c3f3db6..2e43cdd554417 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2023-06-16 +date: 2023-06-17 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 bbc4452cc82c0..b99d5c00706d8 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2023-06-16 +date: 2023-06-17 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 1085c6a4c4a5f..dbd49a3204213 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2023-06-16 +date: 2023-06-17 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 e5320c124db57..88fabe2c24650 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2023-06-16 +date: 2023-06-17 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 859e47fec0439..418ee1805bbe8 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2023-06-16 +date: 2023-06-17 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 1001199df6a3a..20fe64c2994f1 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2023-06-16 +date: 2023-06-17 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 c3c24cd67c0a3..3cedc0bf6b420 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2023-06-16 +date: 2023-06-17 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 06bfd2b5380e2..fb85fd55e09d8 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2023-06-16 +date: 2023-06-17 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 9c91ae64f5217..6f8864800d777 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualization_ui_components.mdx b/api_docs/visualization_ui_components.mdx index 3007cc6fd89c6..d906855f79998 100644 --- a/api_docs/visualization_ui_components.mdx +++ b/api_docs/visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizationUiComponents title: "visualizationUiComponents" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizationUiComponents plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizationUiComponents'] --- import visualizationUiComponentsObj from './visualization_ui_components.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 18b16e947c202..9ef3ba3223b9f 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2023-06-16 +date: 2023-06-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From da187b2675d85f21686b3071d7063515850c6ba2 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sun, 18 Jun 2023 00:53:18 -0400 Subject: [PATCH 56/59] [api-docs] 2023-06-18 Daily api_docs build (#159880) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/372 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_chat.mdx | 2 +- api_docs/cloud_chat_provider.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/ess_security.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_common.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mocks.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_content_management_content_editor.mdx | 2 +- api_docs/kbn_content_management_tabbed_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- api_docs/kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- api_docs/kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- api_docs/kbn_core_application_browser_internal.mdx | 2 +- api_docs/kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- api_docs/kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- api_docs/kbn_core_custom_branding_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- api_docs/kbn_core_deprecations_browser_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- api_docs/kbn_core_deprecations_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_mocks.mdx | 2 +- api_docs/kbn_core_environment_server_internal.mdx | 2 +- api_docs/kbn_core_environment_server_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_browser.mdx | 2 +- api_docs/kbn_core_execution_context_browser_internal.mdx | 2 +- api_docs/kbn_core_execution_context_browser_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_common.mdx | 2 +- api_docs/kbn_core_execution_context_server.mdx | 2 +- api_docs/kbn_core_execution_context_server_internal.mdx | 2 +- api_docs/kbn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- api_docs/kbn_core_http_context_server_mocks.mdx | 2 +- api_docs/kbn_core_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- api_docs/kbn_core_http_resources_server_internal.mdx | 2 +- api_docs/kbn_core_http_resources_server_mocks.mdx | 2 +- api_docs/kbn_core_http_router_server_internal.mdx | 2 +- api_docs/kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_integrations_browser_internal.mdx | 2 +- api_docs/kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- api_docs/kbn_core_notifications_browser_internal.mdx | 2 +- api_docs/kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- api_docs/kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- api_docs/kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_api_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- .../kbn_core_saved_objects_import_export_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- api_docs/kbn_core_saved_objects_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- api_docs/kbn_core_test_helpers_deprecations_getters.mdx | 2 +- api_docs/kbn_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- api_docs/kbn_core_test_helpers_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 +- api_docs/kbn_core_ui_settings_browser_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- api_docs/kbn_core_ui_settings_server_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- api_docs/kbn_core_user_settings_server_internal.mdx | 2 +- api_docs/kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_generate_csv_types.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_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_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.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_rison.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- api_docs/kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_alerting_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- api_docs/kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- api_docs/kbn_shared_ux_avatar_user_profile_components.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen_mocks.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_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_url_state.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_yarn_lock_validator.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/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/reporting_export_types.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/serverless_security.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_field_list.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.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/visualization_ui_components.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 538 files changed, 538 insertions(+), 538 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 2be3c663ce606..b3f879d6aead1 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2023-06-17 +date: 2023-06-18 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 4b5813fdbe9c0..6180fa461e493 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 3571b37f770c8..edf1006706d56 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index e503253b34bcb..ed2d74b94f3f1 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2023-06-17 +date: 2023-06-18 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 0aa40571d5833..8fb4f42ec84fc 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 8b912e29bf7a3..2ce0f2682b506 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 4d5e33b4132d3..f6b7431232106 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index be0c6a293b656..5a1db554cac82 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index c91875987257e..168507a4fd23f 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2023-06-17 +date: 2023-06-18 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 7627e88990e82..5c5dd62aaa8fa 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2023-06-17 +date: 2023-06-18 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 ab8a567171661..4dbf9eee69329 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2023-06-17 +date: 2023-06-18 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 78766c449d6b6..9a459b9a8ba74 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index 59e9ff82588ae..d98069e2155f2 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_chat_provider.mdx b/api_docs/cloud_chat_provider.mdx index 6ce1930b3e382..4ae410b5f4350 100644 --- a/api_docs/cloud_chat_provider.mdx +++ b/api_docs/cloud_chat_provider.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChatProvider title: "cloudChatProvider" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChatProvider plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChatProvider'] --- import cloudChatProviderObj from './cloud_chat_provider.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 3227779754f75..0e913807f84e6 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2023-06-17 +date: 2023-06-18 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 0c1bdb8533c6d..9b93bcb1f3244 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index 0d3310c357701..1e96b2920dd8d 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index c7c224abaa3cf..66b551c716aba 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2023-06-17 +date: 2023-06-18 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 7b2db2f8ba149..29f13a3c7f33c 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2023-06-17 +date: 2023-06-18 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 a3290a6d791bc..41dcac082bddd 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index d5939c3d01c53..965af7f110474 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2023-06-17 +date: 2023-06-18 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 af41b4898eaa2..5c15b8542dba5 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2023-06-17 +date: 2023-06-18 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 4dcc799517e81..35b13623d383a 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2023-06-17 +date: 2023-06-18 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 0a2f0fbbcfa60..009e0db18907f 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2023-06-17 +date: 2023-06-18 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 b951c8dfe9b95..faf14a9f883e3 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index a77cd9bb9fbd1..d58aebf552cf6 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2023-06-17 +date: 2023-06-18 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 2b5116a690385..f665a83108e80 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 3a81f33279988..c0a901e1c47e2 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2023-06-17 +date: 2023-06-18 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 737421b79b85e..990ff356dc7c0 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2023-06-17 +date: 2023-06-18 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 11f1f7031fc79..f73c37962a879 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2023-06-17 +date: 2023-06-18 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 a572fce1ec62a..40f17ef3fade3 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2023-06-17 +date: 2023-06-18 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 3782e01842936..84e9e6e8e651c 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 7b78b62130dfd..b968375c2e90a 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index f0dce102ec40d..80fb145837651 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 9ea24d3e4ba4e..5652f23d9db6c 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 3aa18900829a4..3197dde040cf9 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2023-06-17 +date: 2023-06-18 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 c82a94f078c45..1a0795a2f0c57 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2023-06-17 +date: 2023-06-18 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 6d7a50409ec8c..d2ed1109a6365 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index dadcf55bf0b94..b9b296bd4d6a3 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 48694926af3a9..2a5bd71b05d52 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 023bb4e5103b9..950f34e5fd817 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2023-06-17 +date: 2023-06-18 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 ea772138ca736..f615b1c0302ec 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2023-06-17 +date: 2023-06-18 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 e021dbe2ff780..d2c07a947127d 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 5a6f0d849d15e..97f95d38e4e3c 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/ess_security.mdx b/api_docs/ess_security.mdx index 1dc8b20eb7436..e9b5146dcbea0 100644 --- a/api_docs/ess_security.mdx +++ b/api_docs/ess_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/essSecurity title: "essSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the essSecurity plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'essSecurity'] --- import essSecurityObj from './ess_security.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 525a8569f89ae..797a1fb15d324 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 2cd82c6bb146d..ab2a335b782fe 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2023-06-17 +date: 2023-06-18 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 d0c1f540d0594..5c126f9ed7c2d 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2023-06-17 +date: 2023-06-18 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 9331333315152..fd02ef1076512 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2023-06-17 +date: 2023-06-18 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 7122553dd703c..a6111f526424e 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2023-06-17 +date: 2023-06-18 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 a0ae1fae377c0..8769516a35442 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2023-06-17 +date: 2023-06-18 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 404a0a54f9632..ee6605c06e793 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2023-06-17 +date: 2023-06-18 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 329836ecd8f21..48445286ff5a4 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2023-06-17 +date: 2023-06-18 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 465c418e3bf6c..8eecf3d634fea 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2023-06-17 +date: 2023-06-18 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 5c34517a164a2..983c17e6dd9dc 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2023-06-17 +date: 2023-06-18 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 5ab8c9018d2af..0527baf46f2fe 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2023-06-17 +date: 2023-06-18 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 ba3e4c13b05b9..bdc4a5c9aa292 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2023-06-17 +date: 2023-06-18 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 832cb61a7183f..a9c0a1ec659fb 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2023-06-17 +date: 2023-06-18 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 fb2da9d4a7220..0295c791c0209 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2023-06-17 +date: 2023-06-18 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 97036d2629bb5..e8463624cef36 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2023-06-17 +date: 2023-06-18 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 6fa849cabcb96..231efdf6483fc 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2023-06-17 +date: 2023-06-18 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 928a7e5bd6938..53242093855c5 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2023-06-17 +date: 2023-06-18 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 9a92cca2fade2..b995527704722 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2023-06-17 +date: 2023-06-18 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 1aa5a7ae47b95..fce6e5faef654 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 560c301267e11..8e8a501899889 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2023-06-17 +date: 2023-06-18 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 d63a7b23b9e1f..b7ad66f8de6bc 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2023-06-17 +date: 2023-06-18 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 09024e8cdc16e..af866a6d401b1 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2023-06-17 +date: 2023-06-18 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 df5dd7c89bf18..33577ea004e77 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2023-06-17 +date: 2023-06-18 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 e36d24789ca30..f08fdbf5b192a 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2023-06-17 +date: 2023-06-18 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 00c8e3a83d139..3fa955ff987d6 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2023-06-17 +date: 2023-06-18 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 9bb11694fb578..0084e853c41c5 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2023-06-17 +date: 2023-06-18 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 efcd6edf8d5d2..2dad48ab43381 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index c3124309e7cf3..1d941fd3655c4 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index e069cb87ade1d..ba3294ca2346b 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 30a58e83a59e1..dc20b34565680 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 357ba0f633985..ea159f6c212ee 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 1cb6f59674679..cc0579734ad51 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 6d824502c37d4..641e7546d5439 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 5fce4b41e8612..aa8434ae1b5f4 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index cea46fe2ba731..9e5a7953ee1ef 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 7b9ed96206b72..faa94b0caf123 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 33ca830b2b675..0c1b91bb79901 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 78dd0dfea265c..46a1942a107b5 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2023-06-17 +date: 2023-06-18 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 6f0c447a3a874..3f582eb2c663a 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 9147b6f0b5e12..71154eac6063c 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index b1e5a334e8b42..dda4476370e39 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index eea6f0ccb6f00..a57379447db50 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index df0950c94aa8a..4b95471f96cf1 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 1373b33031e46..3fe7cf12ddbf4 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index cb612b2c8a91c..a6e1d80d7afb9 100644 --- a/api_docs/kbn_analytics_shippers_gainsight.mdx +++ b/api_docs/kbn_analytics_shippers_gainsight.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight title: "@kbn/analytics-shippers-gainsight" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-gainsight plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index e225967fea0c8..469a5b6bbe817 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index afc8286f93507..ffbfcdd015be2 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2023-06-17 +date: 2023-06-18 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 f13931d059028..f33da3b2ad489 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 6d0e211ece145..cc13612d2b008 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index fff69b2b1d170..4696b9800be4a 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index be69afcce45d1..bc18d2bd582b4 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 5efa190b351f2..b203e24148a2b 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2023-06-17 +date: 2023-06-18 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 c06fac53c67a2..28c2edbd0e1bf 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2023-06-17 +date: 2023-06-18 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 c91293db83671..bcdc200d05183 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index fe7c1b855a8b0..614f07929b9ab 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2023-06-17 +date: 2023-06-18 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 2d9941a9f134c..6b3b149609acd 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2023-06-17 +date: 2023-06-18 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 8ca4ab2d14f64..c8129a5be5271 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2023-06-17 +date: 2023-06-18 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 01ff31c654264..596ee0d13926b 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 58ebf7a333a02..3bff25c865d68 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index 405fc124af9ce..f27b45d58fd81 100644 --- a/api_docs/kbn_code_editor_mocks.mdx +++ b/api_docs/kbn_code_editor_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mocks title: "@kbn/code-editor-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index fa40507d27cbb..274aed2a6ad1d 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2023-06-17 +date: 2023-06-18 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 c82a1b558f6bb..77cf24e9113f8 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2023-06-17 +date: 2023-06-18 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 18e566f2672e2..e68aea476cd02 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 57cefc04761cc..247487fd41a54 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2023-06-17 +date: 2023-06-18 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 6ea06c810fe6a..b3dc073a5899c 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 1eb89df60c376..18c5fbf1bf610 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2023-06-17 +date: 2023-06-18 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 98dffbbffdd77..c7c3eda29b5aa 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 1ae13c733b774..892a9c67794b8 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 357a66c8dbd21..97799b8cb05be 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 c220bce1fdd13..ba8c5b3dfaed0 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 2d91b778d53f2..91ca28030653b 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 1767aa4ea9cde..d9986070c1019 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 2f9dc37b1bca3..38c60f55371de 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2023-06-17 +date: 2023-06-18 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 3f6ab85ede6d3..f0dd3229ab4a2 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 62f937448ee6b..d68251b1ce6a5 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 615e89cd55c9a..cf5a25b2554cc 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 3577837c9288a..5a65fd1f924c8 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 a880b215920b7..66c0b946c4539 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 0288629a241b3..9100f3bb55c26 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2023-06-17 +date: 2023-06-18 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 7f622af14981d..b124143e0e009 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 86d52a9d15285..6a10d74324a18 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 ae5d462e8a327..727c18c3fcea6 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 ee7aa15227d0c..5d80af31b682f 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 6832707d791bd..6283019e1cc4b 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2023-06-17 +date: 2023-06-18 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 cdb66c326dd5c..f0e4bdee7d792 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 a5af1801817c3..ff082295b9d28 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 96d8feb70d786..b6b84378d9d48 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 11839cc522753..1149973a02aea 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2023-06-17 +date: 2023-06-18 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 0cabc85cd53b0..6bc8dc9c90775 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2023-06-17 +date: 2023-06-18 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 eb588414ad2fa..7bd8b1d3bcd4c 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 113267ff9974a..c49c9e0fdea3b 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 8bbc5567aca64..d892809368e57 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 ee28abe9c16f4..2c80101bd124e 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 860d8999e7bec..3bcbadb52a25d 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 887d616823e46..71b4bd3c4fb15 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 40aba66dd195b..2ff3214db22c8 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 99c85c0a62c27..43658bfca4089 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2023-06-17 +date: 2023-06-18 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 9cd32868e7eeb..2d427dc5aaec3 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2023-06-17 +date: 2023-06-18 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 7bf4a7bd2a5ce..bf4ee620f7403 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 fafe7e6482a48..8fda0ed8893ac 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 b6fc84ae21f8c..a27b914cac9b5 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 f009857e8a290..b57447bec7bfc 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 1907a7cac0584..08af0d740ebc6 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 5589fc4ee46e2..6f56ddd827e6c 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2023-06-17 +date: 2023-06-18 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 0426000cd2bcd..3e5c8ef70dde9 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2023-06-17 +date: 2023-06-18 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 b50fd834c2288..76b5e7a6a3435 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 a8d483aa5b29a..4f9ea0aa943b0 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 4368ce52bfc2b..de5a0e1c3c831 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 6e8b0c72d1eaf..d722dbe32379a 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 3a72198883caf..ef2708b3317f9 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2023-06-17 +date: 2023-06-18 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 aca7e213bc29c..b6df12e25a3b8 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 0d1f672909550..c75f1ba15b2d7 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 f85a6f711b8bb..655049b755d78 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 3174ccd2a2471..97fb980458ec7 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2023-06-17 +date: 2023-06-18 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 7a51307920414..4f2e73c93413b 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 6ad65d8b33ca3..02be0e96e6436 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 81978efa1414e..fd1aeecd14848 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 89301d2fca639..c3e918e62e550 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 6e113181b9b35..97c308bfe4b73 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 50644b6f58b25..3f7e847d8e9de 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 e9fbb2daf2848..7d5fdbfe7d2f0 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 a9f3230691948..479f8c9388e1f 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2023-06-17 +date: 2023-06-18 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 6435e1a04bc19..585738c4f799c 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2023-06-17 +date: 2023-06-18 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 df35254f7374a..6212ffec5798d 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 91cbadf28f94e..da3294d40fbf8 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 5d8dc9683297d..a24e712701a82 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 c4c5381541bd7..b01a96eb322aa 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 60a2fb418746e..d4addba9eafc5 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 63c8acb066c6b..0711fcea0dd37 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 1c1982170f3b2..eb505ebc2befc 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 45f51eaf484ab..0c7c800229b69 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2023-06-17 +date: 2023-06-18 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 2f7a5fabf96fd..241db5bf78f23 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 2d4a0d4d5c794..3d6ce3a9bfbeb 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2023-06-17 +date: 2023-06-18 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 2aa8dfa9bd474..9f67c6a24eeb1 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2023-06-17 +date: 2023-06-18 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 95ad1a6178a0e..37f128c77b04b 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 159041edc0234..19a4b8580dd54 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 8a41010e2727e..ebfc0a25347a4 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 65e6df3da1985..5b481bb7928a4 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 97cf5c21daa55..8b57ab85e0740 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index ad7a7f74d484b..58e3bb4e78b13 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 2a3756ddecef0..541a2e9e8c7a1 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 377ba95dc345b..74b81395c078f 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 863f23b164dd0..bb263b7842c02 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 c992300f104e4..8fdb161a084b0 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2023-06-17 +date: 2023-06-18 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 9c1cfc9bc3091..8a8cbbdc502f0 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 e7d0be101f4ca..b428d185d1a63 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 7b00c884596cd..8a74d32d08c51 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 98dc033787eb8..e84d4fac31740 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 aea4bcd1d7d43..d3e9b6e06c56d 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 a907684b8216f..902e9cb71b655 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 563d5d2862084..00557c0218ee7 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 044a57d25d64d..8a38b260d781b 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2023-06-17 +date: 2023-06-18 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 8c1e724108efd..9b468e7784f01 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 04c3f295a4573..922300847278c 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 93e7d44b88c82..63cf06589ea37 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 c3df94f4dee36..20695fad0575b 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2023-06-17 +date: 2023-06-18 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 717dafe32dde8..6e577f54b5ed0 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 03f64552fda34..0fb4871e99532 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 be361f8b3ee65..66c6e4df211ac 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 099331b1c2d4a..061e2b02ee1e3 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 b32802bbc900a..29255a0938c6b 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2023-06-17 +date: 2023-06-18 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 a9a947df7b0fb..4c52b1cc1ce42 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 872986bdc14be..e6f43511d23cc 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 3ee8d7f2b9338..6dcb2bd7398ba 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 353ebe5da3712..3c1518caf4b52 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2023-06-17 +date: 2023-06-18 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 24fda81a0262c..4057757502dab 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 60825fb0239a3..1e92a0c2d9739 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 f9b46937c3786..894e823af91ac 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 1624ec6c0737b..0de23a23b6817 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 a87a06010e8a8..8c48e10cd4027 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 089bc08f61565..1f5cbf1e66aaf 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 2e95a1d9f97c6..a7f0931d3c710 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 3768eeb61cabe..b758ca7a5f3ab 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 b020d9005e53c..582efeb3c384c 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 698be0df38784..cb20f7f230c85 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 2d11b1a8b0501..738619666efd5 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2023-06-17 +date: 2023-06-18 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 5151910a20ecf..1d2830c9f7ba4 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 c36e67521d156..63736164e1301 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2023-06-17 +date: 2023-06-18 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 a4020362bce6b..ac1e8a07a80c7 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 059038acf90f3..e3a563c86d34b 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 e922fb96f4b69..3f014de280498 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 783e5ec93f97b..b1f3c31b6a4de 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 8bb6f71ea8129..99e9414b8552f 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 ab2702e3e6045..7a758c60f929a 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 acb0732a3478e..3c694c339b072 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2023-06-17 +date: 2023-06-18 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 39cefb3b6d3de..a3af3d43f665d 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 df14f90226bd2..5f932128587a9 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 8505aa0e1a328..8ff13b8273741 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 5c84c98fe81c1..7645ba0e3c6b9 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 887cc5e65f28f..8f0e544793a15 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 629e60516caae..3397f4dbeb1a5 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 9586fdc4bdc1f..dddec5702fe0d 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2023-06-17 +date: 2023-06-18 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 58ccf4db8759c..3f17bcf58f18d 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 a9a2a55fc9f6a..2f460e8fe0ffd 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 b83947090de49..dfd6f14ba74c6 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 d7e99d638fad1..10dabf084046d 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 ce1354e089b8e..a6f744bd337f9 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2023-06-17 +date: 2023-06-18 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 93b59ba06bde8..7f34d5917e975 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 b8b3db553c233..4dff8eeec16fc 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 41f5a445d32c2..367b40f437c0a 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index e876183d05adb..d25a1b854f67f 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index 77a48f32ad497..805fb078a60b3 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 8bc1dafd7bde3..921f05712fadf 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2023-06-17 +date: 2023-06-18 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 f3c755b8dd53a..f7b99df2cb7cd 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 0fefe1689ac44..2c2720c3ec608 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 254348225ba74..d6ed7b7bd230e 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2023-06-17 +date: 2023-06-18 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 12c9dce1a2e6d..99aefa3333996 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 e99d140a09fd2..b58169927fdfc 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 868e2e806fafc..c79a2c8701e15 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2023-06-17 +date: 2023-06-18 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 0f1e78c46002e..b9186e69489a2 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 39f02ae8de99e..0b45d70a82626 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 a2569aa0c38c0..a7a33fc086236 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 1d2306d5a8c3d..887fcd2ddd85f 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 3da40d6c3b21a..cc00618fe2b9f 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 c10acd4c5254f..8effc9fd64a15 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 edd5f77ce05ac..ed05e442d3c80 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 282c3fbd185d8..f9e7a36b1d5bb 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2023-06-17 +date: 2023-06-18 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 40c0c1d2628ee..82719d0ad41ef 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 2cc0155fd860f..1c2ff7afbc1a9 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 d6355aa136a7e..3bc4e9f72cb2a 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 c460df6a791bb..cacf32bf3a406 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2023-06-17 +date: 2023-06-18 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 023bfc9b30e8a..c0d94629c30fe 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 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 98a40056c99e6..076b4d4df2dd8 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index b9d80c2d4dd18..4e86c8519c5ea 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index 126b252b0e5e5..70fbbcf59d19d 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 82133d2497c24..7089e69e08546 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 e2c532f0f4e6a..4c7cbcd1bc2d3 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2023-06-17 +date: 2023-06-18 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 b5eeb596d0073..f9950d09bda47 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 61cffafe9d8dd..506b8086abb7e 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index f6dbc29062e9d..a3f96d77f272a 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2023-06-17 +date: 2023-06-18 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 6354b0c7cef7f..829dac954e890 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2023-06-17 +date: 2023-06-18 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 19e30e204edf4..b0a6b667bc716 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 90171a55a23a2..511b2c2fa3a0d 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2023-06-17 +date: 2023-06-18 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 3759c56b2d2bd..3680d125714d5 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2023-06-17 +date: 2023-06-18 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 b937443dcad4d..93beabbcc2920 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2023-06-17 +date: 2023-06-18 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 31acc7b8265a1..b48b0d37d1d5c 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 13e7be4a94d48..7e85d7380deae 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2023-06-17 +date: 2023-06-18 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 678349695477c..e0ed4ac2a5667 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2023-06-17 +date: 2023-06-18 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 d239357d76428..95a42d78f46f5 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2023-06-17 +date: 2023-06-18 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 c7030e0353074..379d6effa715b 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2023-06-17 +date: 2023-06-18 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 bd6e1c021505a..536bbfb0dc0f3 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2023-06-17 +date: 2023-06-18 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 ff05bf211c01a..0c07f784240e5 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2023-06-17 +date: 2023-06-18 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 381170b6cc212..fcfd1d36d8e33 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2023-06-17 +date: 2023-06-18 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 66accd984d88c..50dfc740dbdad 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index d15384ff35f33..9a4a21797b7b4 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2023-06-17 +date: 2023-06-18 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 01a122567c36a..9607716979b16 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 47ad5dd1085da..6b889e6c688fe 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2023-06-17 +date: 2023-06-18 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 02636806ac7d4..ac7b8e5075458 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index 3acf49a5a85f4..436d9b85ffe82 100644 --- a/api_docs/kbn_ecs.mdx +++ b/api_docs/kbn_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs title: "@kbn/ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 89cfdcf4aa49d..f83353ebee4eb 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 08800f68e3058..250fc152c0183 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index c15a57f98eaa1..107d28b1fd7da 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2023-06-17 +date: 2023-06-18 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 58c8affba5457..e10059dfc04cc 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2023-06-17 +date: 2023-06-18 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 fbb7fe9d1926b..188a1d64797ef 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2023-06-17 +date: 2023-06-18 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 1244352e5e182..04bea936c693a 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2023-06-17 +date: 2023-06-18 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 dc49b4830ae60..184cb0b8f6203 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2023-06-17 +date: 2023-06-18 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 f3a8f78fe6ce9..bddc6adb2a134 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index e694f58097c27..962954d5466c1 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2023-06-17 +date: 2023-06-18 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 06aca51e3b524..fb0971cad8aeb 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 761f2479acd9f..6d929bafbf9ff 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2023-06-17 +date: 2023-06-18 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 c09ba7ea02883..e4633a966cd27 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index dc32f09e07021..f75c6bc100acc 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 2a69402ff8a14..a1a82a8d1cf32 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx index 65d1b7bac4541..337f35787e537 100644 --- a/api_docs/kbn_generate_csv_types.mdx +++ b/api_docs/kbn_generate_csv_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types title: "@kbn/generate-csv-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv-types plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types'] --- import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 38e634cac2534..8d55f17cff74d 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2023-06-17 +date: 2023-06-18 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 04e7da533f1ea..39c04ba8915dc 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2023-06-17 +date: 2023-06-18 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 175f10f8c44b6..73f05e549542f 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 de9026d08695f..cd6fe94aa2aca 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2023-06-17 +date: 2023-06-18 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 de1329e72d877..decc3006c1ba2 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2023-06-17 +date: 2023-06-18 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 7e7366e564ad6..a1e207b19bf12 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2023-06-17 +date: 2023-06-18 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 a44adb064a19b..be9a740c5d1f7 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2023-06-17 +date: 2023-06-18 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 528c20a6f13f6..76150d6ee282d 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2023-06-17 +date: 2023-06-18 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 346131def2652..6b340c0bbe4f9 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 6e7bdf554cbf0..898e108f68ab8 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2023-06-17 +date: 2023-06-18 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 e66ca8b447d10..5f71dd77c0248 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 6119d9776feee..191d2e6e927ca 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 5b10f296dea13..64f84b86ab1e1 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2023-06-17 +date: 2023-06-18 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 96e18c22d50e6..aa4b5671186a4 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2023-06-17 +date: 2023-06-18 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 bf29310506d29..25ef15552a7c4 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 7ff204b851b06..82d5d2eefa58a 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index 2086975dfc32d..b1f4e7a27dce4 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 6eaf609092a2c..cf2ffea985508 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2023-06-17 +date: 2023-06-18 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 f7eab3b0d76ca..66e61349b09cc 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index d86c6f4287fb3..705782d55ab70 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index dc0b2b9c114a4..5fd1be331f72c 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2023-06-17 +date: 2023-06-18 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 1c60c273bbff3..f63549ed9ad5f 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 7ef16742a3c75..3852c39bb900a 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 2675a65c5c924..5c5be223db7f9 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2023-06-17 +date: 2023-06-18 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_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 390935004350d..92ab9f47e8911 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 c137d1f29eab9..bd883f2c11c7c 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2023-06-17 +date: 2023-06-18 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 0e5cd31346ab1..318d752189184 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2023-06-17 +date: 2023-06-18 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 2b3140b2ee258..d32e5ed97048f 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 db9ee702f4559..18a8f1456e597 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 75b3669d396fa..4886bbf282200 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2023-06-17 +date: 2023-06-18 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 10a905c821901..ed4ac04f5e560 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index 1432d00eec023..b2a72bad2bc72 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 0bedfe84e8bf5..04b69bd820bb1 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2023-06-17 +date: 2023-06-18 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 aa12cd3beeff4..176848e5c2101 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2023-06-17 +date: 2023-06-18 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 6b2f66cb79a78..98b7e67ed2dc3 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index 89ecc5d4768db..a0e02830991b9 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 b9b14bbcf9138..06a9b7a9d3823 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 97bc4906a8cd5..a89f517d65e09 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 bdf228c3f58cc..18f4c7d400e1c 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 6f835066fe92b..d76c5eac8809b 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 97fda990a014b..5cbce7c9dc786 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 58dd0199ccad2..483f981977b6f 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index e43488c79b56e..ea73a9921ebb6 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 6c02d9e2465a7..7f284cfb84a3b 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index b93fe84efc03c..e732e149915ef 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index b8ae5f5264cf4..a66775b3773a8 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2023-06-17 +date: 2023-06-18 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 0f54531691d83..8a433384db75b 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2023-06-17 +date: 2023-06-18 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 ef003e3fc4535..bc6edee58871f 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 4bea7e3aabf09..dee187b335b80 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index aee3fee9629c4..b5dfb590440b2 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2023-06-17 +date: 2023-06-18 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 5361f3f53db64..47acf2929749c 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index f621347468a26..59def66e954b5 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2023-06-17 +date: 2023-06-18 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 6a3382384d6c0..5538b82fa65bc 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 274b42cf3195a..c693f71a3b857 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2023-06-17 +date: 2023-06-18 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 16945bc8aa704..8ed3ab773e799 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2023-06-17 +date: 2023-06-18 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 fc06b2e6207e3..f66d94372830c 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2023-06-17 +date: 2023-06-18 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 d6f83ca5d6552..20f90c6c68863 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2023-06-17 +date: 2023-06-18 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 2d5d293c4f520..465118eac9220 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 17ea34f9a43b0..3fad5f7d5cc33 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index b63d2c58f81b4..706dad396cdbc 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 fa6fa0b062f2f..c3666805bc23f 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index f7544eaec5bcf..7f9c6b862b366 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2023-06-17 +date: 2023-06-18 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 99de405d4d4d9..03ec9bb55e957 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index f3c4f493cee04..0c0ca1891c121 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2023-06-17 +date: 2023-06-18 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 7c51aeabc5674..69a779728acc8 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 8f9f9024a9cb4..f20a7c5c01a00 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index fda7a3ffc07da..f5e2dc8ffbc62 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index a3ae98cb90a32..acb0cc3204a98 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index 5157ef670be79..4846d5aabb7d2 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 5b0f0a4455df3..362a9efea4ade 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 f5338458fddd9..8d2049333ffd6 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2023-06-17 +date: 2023-06-18 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 ff3979bd60451..96e0390e3bb91 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2023-06-17 +date: 2023-06-18 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 247aca94847f6..9d34810e76297 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2023-06-17 +date: 2023-06-18 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 abeea3f06f97d..e64e312df6bad 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 077cfb2c85c53..eac0a51b8e77a 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2023-06-17 +date: 2023-06-18 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 2490ae43d9e9d..c7d15f778016a 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2023-06-17 +date: 2023-06-18 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 9f60df6a5d6d0..11294ffe073ac 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2023-06-17 +date: 2023-06-18 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 8c89db82d7eda..1aa9429f74769 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 e22d635747d8b..03211c947d2f3 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2023-06-17 +date: 2023-06-18 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 fcf4f034c8300..37bb3cc8b66ca 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2023-06-17 +date: 2023-06-18 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 d77d221730288..02c0c35fb52ed 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2023-06-17 +date: 2023-06-18 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 add12771dd5c1..c8d5f1fa85ac2 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2023-06-17 +date: 2023-06-18 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 aacd216f87a2e..288e2ba816c2e 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index c33d5dcc684ba..380b1feea17e2 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 440065d4279a8..5ecd389240e6c 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2023-06-17 +date: 2023-06-18 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 186fe7742f5cf..4fd2e31dfe3fd 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2023-06-17 +date: 2023-06-18 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 01c6aa4740ed7..156eb98a9e421 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index dd2288d5a8680..414e94781b131 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 0e46e23de84a1..c6e65bbacc935 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 87ae14bb28443..641bf41455cee 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 34f5594c4bd90..abdb2f68b0d8b 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2023-06-17 +date: 2023-06-18 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 e60585f50900a..733d73a9f7e09 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2023-06-17 +date: 2023-06-18 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 6c79a56ce2a3d..5c441120ad607 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 a0f15ab62ec7e..7fd3238d54ce6 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index e3949a76a0d99..32693648b38ee 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2023-06-17 +date: 2023-06-18 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 e91ccbbf96865..f21b8ede852b0 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2023-06-17 +date: 2023-06-18 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 e54731b880f0b..9af1b216b6038 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 7b9dbedd82d7c..af01b3d9f6aa4 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 d365745fee114..ab4f7dac7d412 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2023-06-17 +date: 2023-06-18 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 fd5f5c71ef10e..0705ea8f65f09 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2023-06-17 +date: 2023-06-18 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 27701ce2caa29..81a89d86bcbb8 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2023-06-17 +date: 2023-06-18 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 68171f229f964..d70af8c3ab26b 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2023-06-17 +date: 2023-06-18 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 4e2c73ad3f832..4af7b2f9b9b85 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2023-06-17 +date: 2023-06-18 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 956973d609933..a718cb537cf08 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 ffeacc0611a55..0cb30c044ef12 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2023-06-17 +date: 2023-06-18 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 a02f1b9f3e95d..1838572e70c0f 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 076d6d0a8190e..e388c6bb0aba8 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2023-06-17 +date: 2023-06-18 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 2678c82a930f7..a452445d4d65f 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 5f75aaea3b5aa..e2302e5e2053f 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2023-06-17 +date: 2023-06-18 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 fbad8a4a8c42b..6ae4cef9fe5fc 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 5de5835763a77..84f66ba3b420d 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2023-06-17 +date: 2023-06-18 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 17714d5da946e..1ec307945349b 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 6b774ad6a79bd..871737084edc3 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2023-06-17 +date: 2023-06-18 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 68716e55fb02e..36a96b33ff811 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2023-06-17 +date: 2023-06-18 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 0abddebffef9a..54b8909b7fd56 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 59ebbf5eb2cce..94fbda4c783ff 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 94e0083485566..76307e9922d37 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2023-06-17 +date: 2023-06-18 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 96b859a577a8d..fb6fdddc9099c 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2023-06-17 +date: 2023-06-18 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 e85594769094f..f69dd6534c4cd 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 5179e55d92513..171262f7a2b41 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2023-06-17 +date: 2023-06-18 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 8bb64d964f4ad..8e7493fb43450 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2023-06-17 +date: 2023-06-18 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 8f6eb12511a8c..457166b6c75d8 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2023-06-17 +date: 2023-06-18 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 63f4c374fe1ea..55874564f07e9 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2023-06-17 +date: 2023-06-18 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 d0054e919b430..adfd90be9596b 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 9ef4b05efd8ff..61eefd2656339 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 5aaeba5eef0db..94b7946f50cfd 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2023-06-17 +date: 2023-06-18 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 0663c5a200999..7826ce1076ce7 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 9d00d8bc52c2e..066e0bc895ac3 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2023-06-17 +date: 2023-06-18 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 1369fd2a5f51c..4b99173938dea 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2023-06-17 +date: 2023-06-18 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 a5b874a086240..e370eaefd1b71 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 2c07ef26957be..4018083aa2131 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2023-06-17 +date: 2023-06-18 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 8258614646fe5..c48b47a2e643e 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 6225d27484fc3..d9fd88cae4488 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2023-06-17 +date: 2023-06-18 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 6b0f3d157c2d4..c7bd05480bf59 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index 0c927ffc136b8..0d82404ef600a 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 1fddafa438105..4c20177075cc9 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 6b568cf00ea0c..b29c43cad4941 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2023-06-17 +date: 2023-06-18 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 921f4d482acd6..0b3669eb02fc5 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2023-06-17 +date: 2023-06-18 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 38ea2d2a611dc..6f0cf427aa9a9 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2023-06-17 +date: 2023-06-18 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 a10234c35a8a5..5d449af746ac9 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2023-06-17 +date: 2023-06-18 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 559772ba2f7cc..7bc6e8a0a2bdd 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index 0cbe8a9b56250..a3e8b9aadea1c 100644 --- a/api_docs/kbn_url_state.mdx +++ b/api_docs/kbn_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state title: "@kbn/url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/url-state plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 053b26b41accd..e8bf2c509e949 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2023-06-17 +date: 2023-06-18 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 df901ab921640..0f6e0f1d9d875 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2023-06-17 +date: 2023-06-18 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 d8924d3910f02..d5bceb537700e 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2023-06-17 +date: 2023-06-18 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 b304aa8189cb7..4eaaee18e6de7 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 641fdad172efb..11d68427534a8 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index e03606199dd35..d6006d1ca9058 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2023-06-17 +date: 2023-06-18 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 59911205d9174..1f7a8e6d9da27 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2023-06-17 +date: 2023-06-18 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 97fdfcc81b12d..e1db6966ab295 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2023-06-17 +date: 2023-06-18 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 32fb4ab58fe34..e26b7507b27f4 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2023-06-17 +date: 2023-06-18 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 2f8a56b2630f3..0c84c7451087a 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2023-06-17 +date: 2023-06-18 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 01d5480828f50..ccf8c64194c2a 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2023-06-17 +date: 2023-06-18 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 075ecacfe620c..1bdd152106029 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2023-06-17 +date: 2023-06-18 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 e5a43163b4ee4..4666dbe653b6c 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 89f43a3479643..40a8387c3cdcd 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 9ed629f892546..282b1cbd28d6c 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2023-06-17 +date: 2023-06-18 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 0d793f3ca5bcb..d5deb417e14ae 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2023-06-17 +date: 2023-06-18 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 f955d8f615a19..a912216543958 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index e66aca2a21e94..83b0d490821f7 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index ad2ee997846fb..a0539db24a67e 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2023-06-17 +date: 2023-06-18 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 ddefc06aaf9b2..f9cefd8106ea9 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2023-06-17 +date: 2023-06-18 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 e126c53525d79..56da7daf2b81c 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2023-06-17 +date: 2023-06-18 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 f216753719f95..696db1a6e5612 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 7104a591ae1b7..22b9a311b33d6 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 87efc7b899d3e..177c96e4c016d 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 2f2b8162920f5..1c3824de1aac9 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2023-06-17 +date: 2023-06-18 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 63ecd02d1367c..e1b57f33adfdb 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2023-06-17 +date: 2023-06-18 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 7860c5a8e92a2..2e0694e84e5b3 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 3fe8e0732fdf5..ac10d5778600d 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 128ccd4c999b9..3a4b86c2c4cf0 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index c6d36cd806847..1e6f29b35db04 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index b862bba672b27..abe0f35c50dcc 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2023-06-17 +date: 2023-06-18 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 23cc5caa114e0..b5031004eee8c 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/reporting_export_types.mdx b/api_docs/reporting_export_types.mdx index f78a755d2c788..b8c76fac03a33 100644 --- a/api_docs/reporting_export_types.mdx +++ b/api_docs/reporting_export_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reportingExportTypes title: "reportingExportTypes" image: https://source.unsplash.com/400x175/?github description: API docs for the reportingExportTypes plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reportingExportTypes'] --- import reportingExportTypesObj from './reporting_export_types.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 5c3206d7df358..d01239730c257 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2023-06-17 +date: 2023-06-18 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 6b8c57ebb4e5f..11f7da5d113b5 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2023-06-17 +date: 2023-06-18 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 d0204ba86f019..5f491efc6e057 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2023-06-17 +date: 2023-06-18 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 2e703a2e7e817..2f4cd3c60ac62 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2023-06-17 +date: 2023-06-18 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 a7372b60d55ef..3fbcc00155dab 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2023-06-17 +date: 2023-06-18 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 eab91cd338cf1..c8c3a65597411 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2023-06-17 +date: 2023-06-18 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 9bbbe1a31b22d..db99732691490 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2023-06-17 +date: 2023-06-18 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 1052c4a6e6a4a..32e1ba31b0d8b 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2023-06-17 +date: 2023-06-18 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 e5a63e5d353c6..615dfd6077015 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2023-06-17 +date: 2023-06-18 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 6d598ec7dc977..beb3cd889bdd6 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2023-06-17 +date: 2023-06-18 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 678da5e75ba6f..71964e58bbee6 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index f41fd31942402..f899c7c8fc3dd 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 3a47866e9d1cb..b4b55876e6087 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index c88a89011eb8d..1424238d18f49 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2023-06-17 +date: 2023-06-18 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 582738d1aea01..970ba7e7bf58a 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2023-06-17 +date: 2023-06-18 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 5ccc2b6cdb05a..f7585a5919400 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/serverless_security.mdx b/api_docs/serverless_security.mdx index cb6f4cc14b517..da37e8ecc44b3 100644 --- a/api_docs/serverless_security.mdx +++ b/api_docs/serverless_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSecurity title: "serverlessSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSecurity plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSecurity'] --- import serverlessSecurityObj from './serverless_security.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 6de94ccfb3c42..3b8fae9bc880a 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2023-06-17 +date: 2023-06-18 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 36afee9bad699..1fe0ec0756cbd 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 83703e2a59767..9cdc226779acc 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2023-06-17 +date: 2023-06-18 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 00f92ed9c0b59..28ed3506d9fc4 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2023-06-17 +date: 2023-06-18 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 736ad779e3700..c9fb6819a9435 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2023-06-17 +date: 2023-06-18 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 ace74417e579a..1dc6547ea2e85 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 77969b961e12f..31a6caa664a33 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 9d7c41532063a..cf1c97256f1a1 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2023-06-17 +date: 2023-06-18 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 3f40e1710afa8..6fd5b3a55f2d3 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 541a45dd7b51e..abb34f7a57828 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 5a782d606ceeb..18b104ebdd396 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 9aa169dc61f26..42e24ee6ece95 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 4bd484f48595c..768f748ca34bb 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 538d077737705..2ae560cc1ca60 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2023-06-17 +date: 2023-06-18 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 d84cdfb0be839..e80de865d4b17 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2023-06-17 +date: 2023-06-18 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 097e8ac63acd6..d0cdcbb31d684 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 772dbd6b28c46..858d3c38c5215 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2023-06-17 +date: 2023-06-18 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 1883c5accb3c7..8986386964362 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_field_list.mdx b/api_docs/unified_field_list.mdx index f7cfd5907c9ae..66982a46060d9 100644 --- a/api_docs/unified_field_list.mdx +++ b/api_docs/unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedFieldList title: "unifiedFieldList" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedFieldList plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 02a4c50c7d825..3be5c3a95c777 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2023-06-17 +date: 2023-06-18 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 1f49e37f4d266..469df1ff12f28 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2023-06-17 +date: 2023-06-18 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 6c2cbf0a33129..e839f7de2276f 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index bfeb6b9a2b150..83c28890d21db 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2023-06-17 +date: 2023-06-18 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 9065d143eb30f..fc0cc452d1179 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2023-06-17 +date: 2023-06-18 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 11ba00a0cad4f..3586c640cf2a9 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2023-06-17 +date: 2023-06-18 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 663cfad197f05..56d710ee281cf 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2023-06-17 +date: 2023-06-18 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 2e43cdd554417..ef6b832d3bc37 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2023-06-17 +date: 2023-06-18 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 b99d5c00706d8..538ebe9933440 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2023-06-17 +date: 2023-06-18 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 dbd49a3204213..76310b5e48e91 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2023-06-17 +date: 2023-06-18 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 88fabe2c24650..dc9b08ae880a2 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2023-06-17 +date: 2023-06-18 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 418ee1805bbe8..2e4d4df49717d 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2023-06-17 +date: 2023-06-18 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 20fe64c2994f1..02f07e4707d0a 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2023-06-17 +date: 2023-06-18 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 3cedc0bf6b420..191c6227e0884 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2023-06-17 +date: 2023-06-18 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 fb85fd55e09d8..4ff2136b80fd0 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2023-06-17 +date: 2023-06-18 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 6f8864800d777..80276e4a43418 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualization_ui_components.mdx b/api_docs/visualization_ui_components.mdx index d906855f79998..e66d26b61c0b9 100644 --- a/api_docs/visualization_ui_components.mdx +++ b/api_docs/visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizationUiComponents title: "visualizationUiComponents" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizationUiComponents plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizationUiComponents'] --- import visualizationUiComponentsObj from './visualization_ui_components.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 9ef3ba3223b9f..2a6ddb137a20a 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2023-06-17 +date: 2023-06-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 9ea864cc05520bb626b091455c52e8d53c99f646 Mon Sep 17 00:00:00 2001 From: Andrew Macri Date: Sun, 18 Jun 2023 02:34:23 -0600 Subject: [PATCH 57/59] [Security Solution] [Elastic AI Assistant] Data anonymization (#159857) ## [Security Solution] [Elastic AI Assistant] Data anonymization The PR introduces the _Data anonymization_ feature to the _Elastic AI Assistant_: ![data-anonymization](https://github.com/elastic/kibana/assets/4459398/fa5147bb-e306-48e5-9819-2018e1ceaba3) _Above: Data anonymization in the Elastic AI Assistant_ ![toggle_show_anonymized](https://github.com/elastic/kibana/assets/4459398/7b31a939-1960-41bb-9cf1-1431d14ecc1f) _Above: Viewing the anonymized `host.name`, `user.name`, and `user.domain` fields in a conversation_ Use this feature to: - Control which fields are sent from a context to the assistant - Toggle anonymization on or off for specific fields - Set defaults for the above ### How it works When data anonymization is enabled for a context (e.g. an alert or an event), only a subset of the fields in the alert or event will be sent by default. Some fields will also be anonymized by default. When a field is anonymized, UUIDs are sent to the assistant in lieu of actual values. When responses are received from the assistant, the UUIDs are automatically translated back to their original values. - Elastic Security ships with a recommended set of default fields configured for anonymization - Simply accept the defaults, or edit any message before it's sent - Customize the defaults at any time ### See what was actually sent The `Show anonymized` toggle reveals the anonymized data that was sent, per the animated gif below: ![toggle_show_anonymized](https://github.com/elastic/kibana/assets/4459398/7b31a939-1960-41bb-9cf1-1431d14ecc1f) _Above: The `Show anonymized` toggle reveals the anonymized data_ ### Use Bulk actions to quickly customize what's sent ![bluk-actions](https://github.com/elastic/kibana/assets/4459398/55317830-b123-4631-8bb6-bea5dc36483b) _Above: bulk actions_ Apply the following bulk actions to customize any context sent to the assistant: - Allow - Deny - Anonymize - Unonymize ### Use Bulk actions to quickly customize defaults ![bulk-actions-default](https://github.com/elastic/kibana/assets/4459398/baa002d8-e3da-4ad7-ad2e-7ec611515bcc) _Above: Customize defaults with bulk actions_ Apply the following bulk actions to customize defaults: - Allow by default - Deny by default - Anonymize by default - Unonymize by default ### Row actions ![row-actions](https://github.com/elastic/kibana/assets/4459398/76496c07-1acf-4f71-a00c-fbd3ee7b30cc) _Above: The row actions overflow menu_ The following row actions are available on every row: - Allow - Deny - Anonymize - Unonymize - Allow by default - Deny by default - Anonymize by default - Unonymize by default ### Restore the "factory defaults" The _Anonymization defaults_ setting, shown in the screenshot below, may be used to restore the Elastic-provided defaults for which fields are allowed and anonymized: ![restore-defaults](https://github.com/elastic/kibana/assets/4459398/91f6762d-72eb-4e91-b2b9-d6001cf9171f) _Above: restoring the Elastic defaults_ See epic (internal) for additional details. --- .../assistant/assistant_overlay/index.tsx | 2 +- .../assistant/context_pills/index.test.tsx | 72 +- .../impl/assistant/context_pills/index.tsx | 42 +- .../get_anonymized_value/index.test.ts | 45 ++ .../assistant/get_anonymized_value/index.ts | 26 + .../impl/assistant/index.tsx | 132 +++- .../impl/assistant/prompt/helpers.test.ts | 114 ++- .../impl/assistant/prompt/helpers.ts | 49 +- .../impl/assistant/prompt_context/types.ts | 32 +- .../assistant/prompt_editor/index.test.tsx | 28 +- .../impl/assistant/prompt_editor/index.tsx | 20 +- .../selected_prompt_contexts/index.test.tsx | 80 ++- .../selected_prompt_contexts/index.tsx | 130 ++-- .../impl/assistant/translations.ts | 16 +- .../assistant/use_assistant_overlay/index.tsx | 2 +- .../impl/assistant/use_conversation/index.tsx | 52 +- .../use_conversation/sample_conversations.tsx | 8 +- .../use_conversation/translations.ts | 10 +- .../impl/assistant_context/index.test.tsx | 6 + .../impl/assistant_context/index.tsx | 41 +- .../impl/assistant_context/types.tsx | 1 + .../impl/connectorland/translations.ts | 6 +- .../impl/content/prompts/system/index.tsx | 2 +- .../content/prompts/system/translations.ts | 2 +- .../content/prompts/welcome/translations.ts | 2 +- .../get_anonymized_data/index.test.ts | 54 ++ .../get_anonymized_data/index.ts | 66 ++ .../get_anonymized_values/index.test.tsx | 98 +++ .../get_anonymized_values/index.ts | 49 ++ .../get_csv_from_data/index.test.ts | 54 ++ .../get_csv_from_data/index.ts | 12 + .../index.test.ts | 74 ++ .../get_new_selected_prompt_context/index.ts | 36 + .../anonymization_settings/index.test.tsx | 159 ++++ .../settings/anonymization_settings/index.tsx | 147 ++++ .../anonymization_settings/translations.ts | 36 + .../index.test.tsx | 42 ++ .../anonymization_settings_modal/index.tsx | 26 + .../translations.ts | 29 + .../settings/settings_popover/index.test.tsx | 39 + .../settings/settings_popover/index.tsx | 89 +++ .../settings/settings_popover/translations.ts | 22 + .../transform_raw_data/index.test.tsx | 90 +++ .../transform_raw_data/index.tsx | 48 ++ .../impl/data_anonymization/types.ts | 44 ++ .../bulk_actions/index.test.tsx | 139 ++++ .../context_editor/bulk_actions/index.tsx | 112 +++ .../context_editor/get_columns/index.test.tsx | 318 ++++++++ .../context_editor/get_columns/index.tsx | 132 ++++ .../get_context_menu_panels/index.test.ts | 677 ++++++++++++++++++ .../get_context_menu_panels/index.ts | 223 ++++++ .../context_editor/get_rows/index.test.ts | 95 +++ .../context_editor/get_rows/index.ts | 55 ++ .../context_editor/index.test.tsx | 59 ++ .../context_editor/index.tsx | 125 ++++ .../context_editor/toolbar/index.test.tsx | 81 +++ .../context_editor/toolbar/index.tsx | 62 ++ .../context_editor/translations.ts | 146 ++++ .../context_editor/types.ts | 50 ++ .../get_stats/index.test.ts | 53 ++ .../get_stats/index.ts | 39 + .../helpers/index.test.ts | 304 ++++++++ .../helpers/index.ts | 135 ++++ .../data_anonymization_editor/index.test.tsx | 103 +++ .../impl/data_anonymization_editor/index.tsx | 102 +++ .../read_only_context_viewer/index.test.tsx | 26 + .../read_only_context_viewer/index.tsx | 27 + .../stats/allowed_stat/index.test.tsx | 36 + .../stats/allowed_stat/index.tsx | 37 + .../stats/allowed_stat/translations.ts | 25 + .../stats/anonymized_stat/helpers.test.ts | 53 ++ .../stats/anonymized_stat/helpers.ts | 22 + .../stats/anonymized_stat/index.test.tsx | 85 +++ .../stats/anonymized_stat/index.tsx | 81 +++ .../stats/anonymized_stat/translations.ts | 35 + .../stats/available_stat/index.test.tsx | 35 + .../stats/available_stat/index.tsx | 36 + .../stats/available_stat/translations.ts | 25 + .../stats/constants.ts | 8 + .../stats/index.test.tsx | 76 ++ .../data_anonymization_editor/stats/index.tsx | 57 ++ .../impl/mock/get_anonymized_value/index.ts | 15 + .../mock/test_providers/test_providers.tsx | 6 + .../mock/test_providers/test_providers.tsx | 6 + .../common/experimental_features.ts | 2 +- .../security_solution/public/app/app.tsx | 11 + .../public/app/translations.ts | 2 +- .../assistant/comment_actions/index.tsx | 71 +- .../assistant/comment_actions/translations.ts | 6 +- .../assistant/content/anonymization/index.ts | 58 ++ .../assistant/content/conversations/index.tsx | 8 +- .../content/prompts/system/translations.ts | 2 +- .../public/assistant/get_comments/index.tsx | 24 +- .../public/assistant/helpers.tsx | 5 + .../use_anonymization_store/index.tsx | 41 ++ .../common/mock/storybook_providers.tsx | 6 + .../public/common/mock/test_providers.tsx | 12 + .../right/components/header_title.test.tsx | 6 + .../side_panel/event_details/index.tsx | 7 +- 99 files changed, 5802 insertions(+), 294 deletions(-) create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_data/index.test.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_data/index.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_values/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_values/index.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_csv_from_data/index.test.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_csv_from_data/index.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/translations.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/translations.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/transform_raw_data/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/transform_raw_data/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/types.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts create mode 100644 x-pack/plugins/security_solution/public/assistant/content/anonymization/index.ts create mode 100644 x-pack/plugins/security_solution/public/assistant/use_anonymization_store/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx index ed8ae782946b4..91200fd57ceb7 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx @@ -24,7 +24,7 @@ const StyledEuiModal = styled(EuiModal)` `; /** - * Modal container for Security Assistant conversations, receiving the page contents as context, plus whatever + * Modal container for Elastic AI Assistant conversations, receiving the page contents as context, plus whatever * component currently has focus and any specific context it may provide through the SAssInterface. */ export const AssistantOverlay: React.FC = React.memo(() => { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx index 75e3d4e015d45..88f90c2c0fa6b 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx @@ -6,11 +6,11 @@ */ import React from 'react'; -import { fireEvent, render, screen } from '@testing-library/react'; +import { fireEvent, render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { TestProviders } from '../../mock/test_providers/test_providers'; -import type { PromptContext } from '../prompt_context/types'; +import type { PromptContext, SelectedPromptContext } from '../prompt_context/types'; import { ContextPills } from '.'; const mockPromptContexts: Record = { @@ -30,6 +30,12 @@ const mockPromptContexts: Record = { }, }; +const defaultProps = { + defaultAllow: [], + defaultAllowReplacement: [], + promptContexts: mockPromptContexts, +}; + describe('ContextPills', () => { beforeEach(() => jest.clearAllMocks()); @@ -37,9 +43,9 @@ describe('ContextPills', () => { render( ); @@ -49,35 +55,45 @@ describe('ContextPills', () => { }); }); - it('invokes setSelectedPromptContextIds() when the prompt is NOT already selected', () => { + it('invokes setSelectedPromptContexts() when the prompt is NOT already selected', async () => { const context = mockPromptContexts.context1; - const setSelectedPromptContextIds = jest.fn(); + const setSelectedPromptContexts = jest.fn(); render( ); userEvent.click(screen.getByTestId(`pillButton-${context.id}`)); - expect(setSelectedPromptContextIds).toBeCalled(); + await waitFor(() => { + expect(setSelectedPromptContexts).toBeCalled(); + }); }); - it('it does NOT invoke setSelectedPromptContextIds() when the prompt is already selected', () => { + it('it does NOT invoke setSelectedPromptContexts() when the prompt is already selected', async () => { const context = mockPromptContexts.context1; - const setSelectedPromptContextIds = jest.fn(); + const mockSelectedPromptContext: SelectedPromptContext = { + allow: [], + allowReplacement: [], + promptContextId: context.id, + rawData: 'test-raw-data', + }; + const setSelectedPromptContexts = jest.fn(); render( ); @@ -85,18 +101,28 @@ describe('ContextPills', () => { // NOTE: this test uses `fireEvent` instead of `userEvent` to bypass the disabled button: fireEvent.click(screen.getByTestId(`pillButton-${context.id}`)); - expect(setSelectedPromptContextIds).not.toBeCalled(); + await waitFor(() => { + expect(setSelectedPromptContexts).not.toBeCalled(); + }); }); it('disables selected context pills', () => { const context = mockPromptContexts.context1; + const mockSelectedPromptContext: SelectedPromptContext = { + allow: [], + allowReplacement: [], + promptContextId: context.id, + rawData: 'test-raw-data', + }; render( ); @@ -110,9 +136,9 @@ describe('ContextPills', () => { render( ); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx index a8522a75b5adb..be5374e37bd67 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx @@ -11,22 +11,29 @@ import React, { useCallback, useMemo } from 'react'; // eslint-disable-next-line @kbn/eslint/module_migration import styled from 'styled-components'; -import type { PromptContext } from '../prompt_context/types'; +import { getNewSelectedPromptContext } from '../../data_anonymization/get_new_selected_prompt_context'; +import type { PromptContext, SelectedPromptContext } from '../prompt_context/types'; const PillButton = styled(EuiButton)` margin-right: ${({ theme }) => theme.eui.euiSizeXS}; `; interface Props { + defaultAllow: string[]; + defaultAllowReplacement: string[]; promptContexts: Record; - selectedPromptContextIds: string[]; - setSelectedPromptContextIds: React.Dispatch>; + selectedPromptContexts: Record; + setSelectedPromptContexts: React.Dispatch< + React.SetStateAction> + >; } const ContextPillsComponent: React.FC = ({ + defaultAllow, + defaultAllowReplacement, promptContexts, - selectedPromptContextIds, - setSelectedPromptContextIds, + selectedPromptContexts, + setSelectedPromptContexts, }) => { const sortedPromptContexts = useMemo( () => sortBy('description', Object.values(promptContexts)), @@ -34,12 +41,27 @@ const ContextPillsComponent: React.FC = ({ ); const selectPromptContext = useCallback( - (id: string) => { - if (!selectedPromptContextIds.includes(id)) { - setSelectedPromptContextIds((prev) => [...prev, id]); + async (id: string) => { + if (selectedPromptContexts[id] == null && promptContexts[id] != null) { + const newSelectedPromptContext = await getNewSelectedPromptContext({ + defaultAllow, + defaultAllowReplacement, + promptContext: promptContexts[id], + }); + + setSelectedPromptContexts((prev) => ({ + ...prev, + [id]: newSelectedPromptContext, + })); } }, - [selectedPromptContextIds, setSelectedPromptContextIds] + [ + defaultAllow, + defaultAllowReplacement, + promptContexts, + selectedPromptContexts, + setSelectedPromptContexts, + ] ); return ( @@ -49,7 +71,7 @@ const ContextPillsComponent: React.FC = ({ selectPromptContext(id)} diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts new file mode 100644 index 0000000000000..a3235c2c4012b --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { invert } from 'lodash/fp'; + +import { getAnonymizedValue } from '.'; + +jest.mock('uuid', () => ({ + v4: () => 'test-uuid', +})); + +describe('getAnonymizedValue', () => { + beforeEach(() => jest.clearAllMocks()); + + it('returns a new UUID when currentReplacements is not provided', () => { + const currentReplacements = undefined; + const rawValue = 'test'; + + const result = getAnonymizedValue({ currentReplacements, rawValue }); + + expect(result).toBe('test-uuid'); + }); + + it('returns an existing anonymized value when currentReplacements contains an entry for it', () => { + const rawValue = 'test'; + const currentReplacements = { anonymized: 'test' }; + const rawValueToReplacement = invert(currentReplacements); + + const result = getAnonymizedValue({ currentReplacements, rawValue }); + expect(result).toBe(rawValueToReplacement[rawValue]); + }); + + it('returns a new UUID with currentReplacements if no existing match', () => { + const rawValue = 'test'; + const currentReplacements = { anonymized: 'other' }; + + const result = getAnonymizedValue({ currentReplacements, rawValue }); + + expect(result).toBe('test-uuid'); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts new file mode 100644 index 0000000000000..455e9700882fb --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.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 { invert } from 'lodash/fp'; +import { v4 } from 'uuid'; + +export const getAnonymizedValue = ({ + currentReplacements, + rawValue, +}: { + currentReplacements: Record | undefined; + rawValue: string; +}): string => { + if (currentReplacements != null) { + const rawValueToReplacement: Record = invert(currentReplacements); + const existingReplacement: string | undefined = rawValueToReplacement[rawValue]; + + return existingReplacement != null ? existingReplacement : v4(); + } + + return v4(); +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx index 4c6d237e6cdfa..6ff45eadcaaa3 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx @@ -15,6 +15,8 @@ import { EuiCommentList, EuiToolTip, EuiSplitPanel, + EuiSwitchEvent, + EuiSwitch, EuiCallOut, EuiIcon, EuiTitle, @@ -32,8 +34,10 @@ import { getMessageFromRawResponse } from './helpers'; import { ConversationSettingsPopover } from './conversation_settings_popover/conversation_settings_popover'; import { useAssistantContext } from '../assistant_context'; import { ContextPills } from './context_pills'; +import { getNewSelectedPromptContext } from '../data_anonymization/get_new_selected_prompt_context'; +import { SettingsPopover } from '../data_anonymization/settings/settings_popover'; import { PromptTextArea } from './prompt_textarea'; -import type { PromptContext } from './prompt_context/types'; +import type { PromptContext, SelectedPromptContext } from './prompt_context/types'; import { useConversation } from './use_conversation'; import { CodeBlockDetails } from './use_conversation/helpers'; import { useSendMessages } from './use_send_messages'; @@ -85,14 +89,23 @@ const AssistantComponent: React.FC = ({ actionTypeRegistry, augmentMessageCodeBlocks, conversations, + defaultAllow, + defaultAllowReplacement, getComments, http, promptContexts, title, } = useAssistantContext(); - const [selectedPromptContextIds, setSelectedPromptContextIds] = useState([]); + const [selectedPromptContexts, setSelectedPromptContexts] = useState< + Record + >({}); + const selectedPromptContextsCount = useMemo( + () => Object.keys(selectedPromptContexts).length, + [selectedPromptContexts] + ); - const { appendMessage, clearConversation, createConversation } = useConversation(); + const { appendMessage, appendReplacements, clearConversation, createConversation } = + useConversation(); const { isLoading, sendMessages } = useSendMessages(); const [selectedConversationId, setSelectedConversationId] = useState(conversationId); @@ -132,6 +145,8 @@ const AssistantComponent: React.FC = ({ const [showMissingConnectorCallout, setShowMissingConnectorCallout] = useState(false); + const [showAnonymizedValues, setShowAnonymizedValues] = useState(false); + const [messageCodeBlocks, setMessageCodeBlocks] = useState( augmentMessageCodeBlocks(currentConversation) ); @@ -179,17 +194,24 @@ const AssistantComponent: React.FC = ({ bottomRef.current?.scrollIntoView({ behavior: 'auto' }); promptTextAreaRef?.current?.focus(); }, 0); - }, [currentConversation.messages.length, selectedPromptContextIds.length]); + }, [currentConversation.messages.length, selectedPromptContextsCount]); //// // Handles sending latest user prompt to API const handleSendMessage = useCallback( async (promptText) => { + const onNewReplacements = (newReplacements: Record) => + appendReplacements({ + conversationId: selectedConversationId, + replacements: newReplacements, + }); + const message = await getCombinedMessage({ isNewChat: currentConversation.messages.length === 0, - promptContexts, + currentReplacements: currentConversation.replacements, + onNewReplacements, promptText, - selectedPromptContextIds, + selectedPromptContexts, selectedSystemPrompt: currentConversation.apiConfig.defaultSystemPrompt, }); @@ -199,7 +221,7 @@ const AssistantComponent: React.FC = ({ }); // Reset prompt context selection and preview before sending: - setSelectedPromptContextIds([]); + setSelectedPromptContexts({}); setPromptTextPreview(''); const rawResponse = await sendMessages({ @@ -212,12 +234,13 @@ const AssistantComponent: React.FC = ({ }, [ appendMessage, + appendReplacements, currentConversation.apiConfig, currentConversation.messages.length, + currentConversation.replacements, http, - promptContexts, selectedConversationId, - selectedPromptContextIds, + selectedPromptContexts, sendMessages, ] ); @@ -237,7 +260,24 @@ const AssistantComponent: React.FC = ({ codeBlockContainers.forEach((e) => (e.style.minHeight = '75px')); //// - const comments = getComments({ currentConversation, lastCommentRef }); + const onToggleShowAnonymizedValues = useCallback( + (e: EuiSwitchEvent) => { + if (setShowAnonymizedValues != null) { + setShowAnonymizedValues(e.target.checked); + } + }, + [setShowAnonymizedValues] + ); + + const comments = useMemo( + () => + getComments({ + currentConversation, + lastCommentRef, + showAnonymizedValues, + }), + [currentConversation, getComments, showAnonymizedValues] + ); useEffect(() => { // Adding `conversationId !== selectedConversationId` to prevent auto-run still executing after changing selected conversation @@ -253,12 +293,24 @@ const AssistantComponent: React.FC = ({ if (promptContext != null) { setAutoPopulatedOnce(true); - // select this prompt context - if (!selectedPromptContextIds.includes(promptContext.id)) { - setSelectedPromptContextIds((prev) => [...prev, promptContext.id]); + if (!Object.keys(selectedPromptContexts).includes(promptContext.id)) { + const addNewSelectedPromptContext = async () => { + const newSelectedPromptContext = await getNewSelectedPromptContext({ + defaultAllow, + defaultAllowReplacement, + promptContext, + }); + + setSelectedPromptContexts((prev) => ({ + ...prev, + [promptContext.id]: newSelectedPromptContext, + })); + }; + + addNewSelectedPromptContext(); } - if (promptContext?.suggestedUserPrompt != null) { + if (promptContext.suggestedUserPrompt != null) { setSuggestedUserPrompt(promptContext.suggestedUserPrompt); } } @@ -269,8 +321,10 @@ const AssistantComponent: React.FC = ({ handleSendMessage, conversationId, selectedConversationId, - selectedPromptContextIds, + selectedPromptContexts, autoPopulatedOnce, + defaultAllow, + defaultAllowReplacement, ]); // Show missing connector callout if no connectors are configured @@ -319,6 +373,35 @@ const AssistantComponent: React.FC = ({ shouldDisableKeyboardShortcut={shouldDisableConversationSelectorHotkeys} isDisabled={isWelcomeSetup} /> + + <> + + + + + 0 && + showAnonymizedValues + } + compressed={true} + disabled={currentConversation.replacements == null} + label={i18n.SHOW_ANONYMIZED} + onChange={onToggleShowAnonymizedValues} + /> + + + + + + + + @@ -354,9 +437,11 @@ const AssistantComponent: React.FC = ({ {!isWelcomeSetup && ( <> {Object.keys(promptContexts).length > 0 && } @@ -375,21 +460,22 @@ const AssistantComponent: React.FC = ({ <> -
{(currentConversation.messages.length === 0 || - selectedPromptContextIds.length > 0) && ( + Object.keys(selectedPromptContexts).length > 0) && ( )} + +
)} @@ -426,7 +512,7 @@ const AssistantComponent: React.FC = ({ onClick={() => { setPromptTextPreview(''); clearConversation(selectedConversationId); - setSelectedPromptContextIds([]); + setSelectedPromptContexts({}); setSuggestedUserPrompt(''); }} /> diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts index ca878bd5e5875..5604b21ad2e0d 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts @@ -7,10 +7,21 @@ import type { Message } from '../../assistant_context/types'; import { getCombinedMessage, getSystemMessages } from './helpers'; +import { mockGetAnonymizedValue } from '../../mock/get_anonymized_value'; import { mockSystemPrompt } from '../../mock/system_prompt'; -import { mockAlertPromptContext, mockEventPromptContext } from '../../mock/prompt_context'; +import { mockAlertPromptContext } from '../../mock/prompt_context'; +import type { SelectedPromptContext } from '../prompt_context/types'; + +const mockSelectedAlertPromptContext: SelectedPromptContext = { + allow: [], + allowReplacement: [], + promptContextId: mockAlertPromptContext.id, + rawData: 'alert data', +}; describe('helpers', () => { + beforeEach(() => jest.clearAllMocks()); + describe('getSystemMessages', () => { it('should return an empty array if isNewChat is false', () => { const result = getSystemMessages({ @@ -51,17 +62,15 @@ describe('helpers', () => { }); describe('getCombinedMessage', () => { - const mockPromptContexts = { - [mockAlertPromptContext.id]: mockAlertPromptContext, - [mockEventPromptContext.id]: mockEventPromptContext, - }; - it('returns correct content for a new chat with a system prompt', async () => { const message: Message = await getCombinedMessage({ + currentReplacements: {}, isNewChat: true, - promptContexts: mockPromptContexts, + onNewReplacements: jest.fn(), promptText: 'User prompt text', - selectedPromptContextIds: [mockAlertPromptContext.id], + selectedPromptContexts: { + [mockSelectedAlertPromptContext.promptContextId]: mockSelectedAlertPromptContext, + }, selectedSystemPrompt: mockSystemPrompt, }); @@ -78,10 +87,13 @@ User prompt text`); it('returns correct content for a new chat WITHOUT a system prompt', async () => { const message: Message = await getCombinedMessage({ + currentReplacements: {}, isNewChat: true, - promptContexts: mockPromptContexts, + onNewReplacements: jest.fn(), promptText: 'User prompt text', - selectedPromptContextIds: [mockAlertPromptContext.id], + selectedPromptContexts: { + [mockSelectedAlertPromptContext.promptContextId]: mockSelectedAlertPromptContext, + }, selectedSystemPrompt: undefined, // <-- no system prompt }); @@ -97,10 +109,13 @@ User prompt text`); it('returns the correct content for an existing chat', async () => { const message: Message = await getCombinedMessage({ + currentReplacements: {}, isNewChat: false, - promptContexts: mockPromptContexts, + onNewReplacements: jest.fn(), promptText: 'User prompt text', - selectedPromptContextIds: [mockAlertPromptContext.id], + selectedPromptContexts: { + [mockSelectedAlertPromptContext.promptContextId]: mockSelectedAlertPromptContext, + }, selectedSystemPrompt: mockSystemPrompt, }); @@ -109,36 +124,89 @@ User prompt text`); alert data """ -CONTEXT: -""" -alert data -""" - User prompt text`); }); - test('getCombinedMessage returns the expected role', async () => { + it('returns the expected role', async () => { const message: Message = await getCombinedMessage({ + currentReplacements: {}, isNewChat: true, - promptContexts: mockPromptContexts, + onNewReplacements: jest.fn(), promptText: 'User prompt text', - selectedPromptContextIds: [mockAlertPromptContext.id], + selectedPromptContexts: { + [mockSelectedAlertPromptContext.promptContextId]: mockSelectedAlertPromptContext, + }, selectedSystemPrompt: mockSystemPrompt, }); expect(message.role).toBe('user'); }); - test('getCombinedMessage returns a valid timestamp', async () => { + it('returns a valid timestamp', async () => { const message: Message = await getCombinedMessage({ + currentReplacements: {}, isNewChat: true, - promptContexts: mockPromptContexts, + onNewReplacements: jest.fn(), promptText: 'User prompt text', - selectedPromptContextIds: [mockAlertPromptContext.id], + selectedPromptContexts: {}, selectedSystemPrompt: mockSystemPrompt, }); expect(Date.parse(message.timestamp)).not.toBeNaN(); }); + + describe('when there is data to anonymize', () => { + const onNewReplacements = jest.fn(); + + const mockPromptContextWithDataToAnonymize: SelectedPromptContext = { + allow: ['field1', 'field2'], + allowReplacement: ['field1', 'field2'], + promptContextId: 'test-prompt-context-id', + rawData: { + field1: ['foo', 'bar', 'baz'], + field2: ['foozle'], + }, + }; + + it('invokes `onNewReplacements` with the expected replacements', async () => { + await getCombinedMessage({ + currentReplacements: {}, + getAnonymizedValue: mockGetAnonymizedValue, + isNewChat: true, + onNewReplacements, + promptText: 'User prompt text', + selectedPromptContexts: { + [mockPromptContextWithDataToAnonymize.promptContextId]: + mockPromptContextWithDataToAnonymize, + }, + selectedSystemPrompt: mockSystemPrompt, + }); + + expect(onNewReplacements).toBeCalledWith({ + elzoof: 'foozle', + oof: 'foo', + rab: 'bar', + zab: 'baz', + }); + }); + + it('returns the expected content when `isNewChat` is false', async () => { + const isNewChat = false; // <-- not a new chat + + const message: Message = await getCombinedMessage({ + currentReplacements: {}, + getAnonymizedValue: mockGetAnonymizedValue, + isNewChat, + onNewReplacements: jest.fn(), + promptText: 'User prompt text', + selectedPromptContexts: {}, + selectedSystemPrompt: mockSystemPrompt, + }); + + expect(message.content).toEqual(` + +User prompt text`); + }); + }); }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts index 10dd5f62a2a89..cbf2259489505 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts @@ -7,7 +7,10 @@ import type { Message } from '../../assistant_context/types'; import { SYSTEM_PROMPT_CONTEXT_NON_I18N } from '../../content/prompts/system/translations'; -import type { PromptContext } from '../prompt_context/types'; + +import { transformRawData } from '../../data_anonymization/transform_raw_data'; +import { getAnonymizedValue as defaultGetAnonymizedValue } from '../get_anonymized_value'; +import type { SelectedPromptContext } from '../prompt_context/types'; import type { Prompt } from '../types'; export const getSystemMessages = ({ @@ -31,35 +34,45 @@ export const getSystemMessages = ({ }; export async function getCombinedMessage({ + currentReplacements, + getAnonymizedValue = defaultGetAnonymizedValue, isNewChat, - promptContexts, + onNewReplacements, promptText, - selectedPromptContextIds, + selectedPromptContexts, selectedSystemPrompt, }: { + currentReplacements: Record | undefined; + getAnonymizedValue?: ({ + currentReplacements, + rawValue, + }: { + currentReplacements: Record | undefined; + rawValue: string; + }) => string; isNewChat: boolean; - promptContexts: Record; + onNewReplacements: (newReplacements: Record) => void; promptText: string; - selectedPromptContextIds: string[]; + selectedPromptContexts: Record; selectedSystemPrompt: Prompt | undefined; }): Promise { - const selectedPromptContexts = selectedPromptContextIds.reduce((acc, id) => { - const promptContext = promptContexts[id]; - return promptContext != null ? [...acc, promptContext] : acc; - }, []); - - const promptContextsContent = await Promise.all( - selectedPromptContexts.map(async ({ getPromptContext }) => { - const promptContext = await getPromptContext(); + const promptContextsContent = Object.keys(selectedPromptContexts) + .sort() + .map((id) => { + const promptContext = transformRawData({ + currentReplacements, + getAnonymizedValue, + onNewReplacements, + selectedPromptContext: selectedPromptContexts[id], + }); return `${SYSTEM_PROMPT_CONTEXT_NON_I18N(promptContext)}`; - }) - ); + }); return { - content: `${isNewChat ? `${selectedSystemPrompt?.content ?? ''}` : `${promptContextsContent}`} - -${promptContextsContent} + content: `${ + isNewChat ? `${selectedSystemPrompt?.content ?? ''}\n\n` : '' + }${promptContextsContent} ${promptText}`, role: 'user', // we are combining the system and user messages into one message diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts index 9c9b807281665..4e821c5c44bfa 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts @@ -8,7 +8,7 @@ import type { ReactNode } from 'react'; /** - * helps the Elastic Assistant display the most relevant user prompts + * helps the Elastic AI Assistant display the most relevant user prompts */ export type PromptContextCategory = | 'alert' @@ -19,7 +19,7 @@ export type PromptContextCategory = | string; /** - * This interface is used to pass context to the Elastic Assistant, + * This interface is used to pass context to the Elastic AI Assistant, * for the purpose of building prompts. Examples of context include: * - a single alert * - multiple alerts @@ -33,39 +33,53 @@ export interface PromptContext { /** * The category of data, e.g. `alert | alerts | event | events | string` * - * `category` helps the Elastic Assistant display the most relevant user prompts + * `category` helps the Elastic AI Assistant display the most relevant user prompts */ category: PromptContextCategory; /** - * The Elastic Assistant will display this **short**, static description + * The Elastic AI Assistant will display this **short**, static description * in the context pill */ description: string; /** - * The Elastic Assistant will invoke this function to retrieve the context data, + * The Elastic AI Assistant will invoke this function to retrieve the context data, * which will be included in a prompt (e.g. the contents of an alert or an event) */ - getPromptContext: () => Promise; + getPromptContext: () => Promise | Promise>; /** * A unique identifier for this prompt context */ id: string; /** - * An optional user prompt that's filled in, but not sent, when the Elastic Assistant opens + * An optional user prompt that's filled in, but not sent, when the Elastic AI Assistant opens */ suggestedUserPrompt?: string; /** - * The Elastic Assistant will display this tooltip when the user hovers over the context pill + * The Elastic AI Assistant will display this tooltip when the user hovers over the context pill */ tooltip: ReactNode; } /** - * This interface is used to pass a default or base set of contexts to the Elastic Assistant when + * A prompt context that was added from the pills to the current conversation, but not yet sent + */ +export interface SelectedPromptContext { + /** fields allowed to be included in a conversation */ + allow: string[]; + /** fields that will be anonymized */ + allowReplacement: string[]; + /** unique id of the selected `PromptContext` */ + promptContextId: string; + /** this data is not anonymized */ + rawData: string | Record; +} + +/** + * This interface is used to pass a default or base set of contexts to the Elastic AI Assistant when * initializing it. This is used to provide 'category' options when users create Quick Prompts. * Also, useful for collating all of a solutions' prompts in one place. * diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/index.test.tsx index 8aa50c7f86224..b14e69160f9c3 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/index.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/index.test.tsx @@ -10,8 +10,23 @@ import { render, screen, waitFor } from '@testing-library/react'; import { mockAlertPromptContext, mockEventPromptContext } from '../../mock/prompt_context'; import { TestProviders } from '../../mock/test_providers/test_providers'; +import { SelectedPromptContext } from '../prompt_context/types'; import { PromptEditor, Props } from '.'; +const mockSelectedAlertPromptContext: SelectedPromptContext = { + allow: [], + allowReplacement: [], + promptContextId: mockAlertPromptContext.id, + rawData: 'alert data', +}; + +const mockSelectedEventPromptContext: SelectedPromptContext = { + allow: [], + allowReplacement: [], + promptContextId: mockEventPromptContext.id, + rawData: 'event data', +}; + const defaultProps: Props = { conversation: undefined, isNewConversation: true, @@ -20,8 +35,8 @@ const defaultProps: Props = { [mockEventPromptContext.id]: mockEventPromptContext, }, promptTextPreview: 'Preview text', - selectedPromptContextIds: [], - setSelectedPromptContextIds: jest.fn(), + selectedPromptContexts: {}, + setSelectedPromptContexts: jest.fn(), }; describe('PromptEditorComponent', () => { @@ -52,16 +67,19 @@ describe('PromptEditorComponent', () => { }); it('renders the selected prompt contexts', async () => { - const selectedPromptContextIds = [mockAlertPromptContext.id, mockEventPromptContext.id]; + const selectedPromptContexts = { + [mockAlertPromptContext.id]: mockSelectedAlertPromptContext, + [mockEventPromptContext.id]: mockSelectedEventPromptContext, + }; render( - + ); await waitFor(() => { - selectedPromptContextIds.forEach((id) => + Object.keys(selectedPromptContexts).forEach((id) => expect(screen.queryByTestId(`selectedPromptContext-${id}`)).toBeInTheDocument() ); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/index.tsx index 3de97f30593ca..a35259c0655a6 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/index.tsx @@ -11,7 +11,7 @@ import React, { useMemo } from 'react'; import styled from 'styled-components'; import { Conversation } from '../../..'; -import type { PromptContext } from '../prompt_context/types'; +import type { PromptContext, SelectedPromptContext } from '../prompt_context/types'; import { SystemPrompt } from './system_prompt'; import * as i18n from './translations'; @@ -22,8 +22,10 @@ export interface Props { isNewConversation: boolean; promptContexts: Record; promptTextPreview: string; - selectedPromptContextIds: string[]; - setSelectedPromptContextIds: React.Dispatch>; + selectedPromptContexts: Record; + setSelectedPromptContexts: React.Dispatch< + React.SetStateAction> + >; } const PreviewText = styled(EuiText)` @@ -35,8 +37,8 @@ const PromptEditorComponent: React.FC = ({ isNewConversation, promptContexts, promptTextPreview, - selectedPromptContextIds, - setSelectedPromptContextIds, + selectedPromptContexts, + setSelectedPromptContexts, }) => { const commentBody = useMemo( () => ( @@ -46,8 +48,8 @@ const PromptEditorComponent: React.FC = ({ @@ -60,8 +62,8 @@ const PromptEditorComponent: React.FC = ({ isNewConversation, promptContexts, promptTextPreview, - selectedPromptContextIds, - setSelectedPromptContextIds, + selectedPromptContexts, + setSelectedPromptContexts, ] ); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx index 4ab4b708a68c8..8b71d45d3bc21 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx @@ -11,6 +11,7 @@ import userEvent from '@testing-library/user-event'; import { mockAlertPromptContext, mockEventPromptContext } from '../../../mock/prompt_context'; import { TestProviders } from '../../../mock/test_providers/test_providers'; +import type { SelectedPromptContext } from '../../prompt_context/types'; import { Props, SelectedPromptContexts } from '.'; const defaultProps: Props = { @@ -19,8 +20,22 @@ const defaultProps: Props = { [mockAlertPromptContext.id]: mockAlertPromptContext, [mockEventPromptContext.id]: mockEventPromptContext, }, - selectedPromptContextIds: [], - setSelectedPromptContextIds: jest.fn(), + selectedPromptContexts: {}, + setSelectedPromptContexts: jest.fn(), +}; + +const mockSelectedAlertPromptContext: SelectedPromptContext = { + allow: [], + allowReplacement: [], + promptContextId: mockAlertPromptContext.id, + rawData: 'test-raw-data', +}; + +const mockSelectedEventPromptContext: SelectedPromptContext = { + allow: [], + allowReplacement: [], + promptContextId: mockEventPromptContext.id, + rawData: 'test-raw-data', }; describe('SelectedPromptContexts', () => { @@ -44,7 +59,9 @@ describe('SelectedPromptContexts', () => { ); @@ -60,7 +77,9 @@ describe('SelectedPromptContexts', () => { ); @@ -76,7 +95,10 @@ describe('SelectedPromptContexts', () => { ); @@ -87,57 +109,67 @@ describe('SelectedPromptContexts', () => { }); it('renders the selected prompt contexts', async () => { - const selectedPromptContextIds = [mockAlertPromptContext.id, mockEventPromptContext.id]; + const selectedPromptContexts = { + [mockAlertPromptContext.id]: mockSelectedAlertPromptContext, + [mockEventPromptContext.id]: mockSelectedEventPromptContext, + }; render( - + ); await waitFor(() => { - selectedPromptContextIds.forEach((id) => + Object.keys(selectedPromptContexts).forEach((id) => expect(screen.getByTestId(`selectedPromptContext-${id}`)).toBeInTheDocument() ); }); }); it('removes a prompt context when the remove button is clicked', async () => { - const setSelectedPromptContextIds = jest.fn(); + const setSelectedPromptContexts = jest.fn(); const promptContextId = mockAlertPromptContext.id; + const selectedPromptContexts = { + [mockAlertPromptContext.id]: mockSelectedAlertPromptContext, + [mockEventPromptContext.id]: mockSelectedEventPromptContext, + }; render( - + + + ); userEvent.click(screen.getByTestId(`removePromptContext-${promptContextId}`)); await waitFor(() => { - expect(setSelectedPromptContextIds).toHaveBeenCalled(); + expect(setSelectedPromptContexts).toHaveBeenCalled(); }); }); it('displays the correct accordion content', async () => { render( - + + + ); userEvent.click(screen.getByText(mockAlertPromptContext.description)); - const codeBlock = screen.getByTestId('promptCodeBlock'); + const codeBlock = screen.getByTestId('readOnlyContextViewer'); await waitFor(() => { - expect(codeBlock).toHaveTextContent('alert data'); + expect(codeBlock).toHaveTextContent('CONTEXT: """ test-raw-data """'); }); }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx index eca303284d1a8..b8aed6edf0212 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx @@ -8,114 +8,98 @@ import { EuiAccordion, EuiButtonIcon, - EuiCodeBlock, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiToolTip, } from '@elastic/eui'; -import { isEmpty } from 'lodash/fp'; -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { isEmpty, omit } from 'lodash/fp'; +import React, { useCallback } from 'react'; // eslint-disable-next-line @kbn/eslint/module_migration import styled from 'styled-components'; -import { SYSTEM_PROMPT_CONTEXT_NON_I18N } from '../../../content/prompts/system/translations'; -import type { PromptContext } from '../../prompt_context/types'; +import { DataAnonymizationEditor } from '../../../data_anonymization_editor'; +import type { PromptContext, SelectedPromptContext } from '../../prompt_context/types'; import * as i18n from './translations'; -const PromptContextContainer = styled.div` - max-width: 60vw; - overflow-x: auto; -`; - export interface Props { isNewConversation: boolean; promptContexts: Record; - selectedPromptContextIds: string[]; - setSelectedPromptContextIds: React.Dispatch>; + selectedPromptContexts: Record; + setSelectedPromptContexts: React.Dispatch< + React.SetStateAction> + >; } +export const EditorContainer = styled.div<{ + $accordionState: 'closed' | 'open'; +}>` + ${({ $accordionState }) => ($accordionState === 'closed' ? 'height: 0px;' : '')} + ${({ $accordionState }) => ($accordionState === 'closed' ? 'overflow: hidden;' : '')} + ${({ $accordionState }) => ($accordionState === 'closed' ? 'position: absolute;' : '')} +`; + const SelectedPromptContextsComponent: React.FC = ({ isNewConversation, promptContexts, - selectedPromptContextIds, - setSelectedPromptContextIds, + selectedPromptContexts, + setSelectedPromptContexts, }) => { - const selectedPromptContexts = useMemo( - () => selectedPromptContextIds.map((id) => promptContexts[id]), - [promptContexts, selectedPromptContextIds] - ); + const [accordionState, setAccordionState] = React.useState<'closed' | 'open'>('closed'); - const [accordionContent, setAccordionContent] = useState>({}); + const onToggle = useCallback( + () => setAccordionState((prev) => (prev === 'open' ? 'closed' : 'open')), + [] + ); const unselectPromptContext = useCallback( (unselectedId: string) => { - setSelectedPromptContextIds((prev) => prev.filter((id) => id !== unselectedId)); + setSelectedPromptContexts((prev) => omit(unselectedId, prev)); }, - [setSelectedPromptContextIds] + [setSelectedPromptContexts] ); - useEffect(() => { - const abortController = new AbortController(); - - const fetchAccordionContent = async () => { - const newAccordionContent = await Promise.all( - selectedPromptContexts.map(async ({ getPromptContext, id }) => ({ - [id]: await getPromptContext(), - })) - ); - - if (!abortController.signal.aborted) { - setAccordionContent(newAccordionContent.reduce((acc, curr) => ({ ...acc, ...curr }), {})); - } - }; - - fetchAccordionContent(); - - return () => { - abortController.abort(); - }; - }, [selectedPromptContexts]); - if (isEmpty(promptContexts)) { return null; } return ( - {selectedPromptContexts.map(({ description, id }) => ( - - {isNewConversation || selectedPromptContexts.length > 1 ? ( - - ) : null} - - unselectPromptContext(id)} + {Object.keys(selectedPromptContexts) + .sort() + .map((id) => ( + + {isNewConversation || Object.keys(selectedPromptContexts).length > 1 ? ( + + ) : null} + + unselectPromptContext(id)} + /> + + } + id={id} + onToggle={onToggle} + paddingSize="s" + > + + - - } - id={id} - paddingSize="s" - > - - - {id != null && accordionContent[id] != null - ? SYSTEM_PROMPT_CONTEXT_NON_I18N(accordionContent[id]) - : ''} - - - - - ))} + + + + ))} ); }; -SelectedPromptContextsComponent.displayName = 'SelectedPromptContextsComponent'; export const SelectedPromptContexts = React.memo(SelectedPromptContextsComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts index faf9a4d21c3c8..0b401eeb400a9 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts @@ -14,7 +14,7 @@ export const CLEAR_CHAT = i18n.translate('xpack.elasticAssistant.assistant.clear export const DEFAULT_ASSISTANT_TITLE = i18n.translate( 'xpack.elasticAssistant.assistant.defaultAssistantTitle', { - defaultMessage: 'Elastic Assistant', + defaultMessage: 'Elastic AI Assistant', } ); @@ -58,6 +58,20 @@ export const SETTINGS_PROMPT_HELP_TEXT_TITLE = i18n.translate( } ); +export const SHOW_ANONYMIZED = i18n.translate( + 'xpack.elasticAssistant.assistant.settings.showAnonymizedToggleLabel', + { + defaultMessage: 'Show anonymized', + } +); + +export const SHOW_ANONYMIZED_TOOLTIP = i18n.translate( + 'xpack.elasticAssistant.assistant.settings.showAnonymizedTooltip', + { + defaultMessage: 'Show the anonymized values sent to and from the assistant', + } +); + export const SUBMIT_MESSAGE = i18n.translate('xpack.elasticAssistant.assistant.submitMessage', { defaultMessage: 'Submit message', }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx index f804ec5178ca2..ba1992b5e50de 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx @@ -58,7 +58,7 @@ export const useAssistantOverlay = ( id: PromptContext['id'] | null, /** - * An optional user prompt that's filled in, but not sent, when the Elastic Assistant opens + * An optional user prompt that's filled in, but not sent, when the Elastic AI Assistant opens */ suggestedUserPrompt: PromptContext['suggestedUserPrompt'] | null, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx index 7fa03f713ee8d..08124d750d949 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx @@ -10,17 +10,17 @@ import { useCallback } from 'react'; import { useAssistantContext } from '../../assistant_context'; import { Conversation, Message } from '../../assistant_context/types'; import * as i18n from './translations'; -import { ELASTIC_SECURITY_ASSISTANT, ELASTIC_SECURITY_ASSISTANT_TITLE } from './translations'; +import { ELASTIC_AI_ASSISTANT, ELASTIC_AI_ASSISTANT_TITLE } from './translations'; export const DEFAULT_CONVERSATION_STATE: Conversation = { id: i18n.DEFAULT_CONVERSATION_TITLE, messages: [], apiConfig: {}, theme: { - title: ELASTIC_SECURITY_ASSISTANT_TITLE, + title: ELASTIC_AI_ASSISTANT_TITLE, titleIcon: 'logoSecurity', assistant: { - name: ELASTIC_SECURITY_ASSISTANT, + name: ELASTIC_AI_ASSISTANT, icon: 'logoSecurity', }, system: { @@ -35,6 +35,11 @@ interface AppendMessageProps { message: Message; } +interface AppendReplacementsProps { + conversationId: string; + replacements: Record; +} + interface CreateConversationProps { conversationId: string; messages?: Message[]; @@ -51,6 +56,10 @@ interface SetConversationProps { interface UseConversation { appendMessage: ({ conversationId: string, message: Message }: AppendMessageProps) => Message[]; + appendReplacements: ({ + conversationId, + replacements, + }: AppendReplacementsProps) => Record; clearConversation: (conversationId: string) => void; createConversation: ({ conversationId, @@ -93,9 +102,38 @@ export const useConversation = (): UseConversation => { [setConversations] ); - /** - * Clear the messages[] for a given conversationId - */ + const appendReplacements = useCallback( + ({ conversationId, replacements }: AppendReplacementsProps): Record => { + let allReplacements = replacements; + + setConversations((prev: Record) => { + const prevConversation: Conversation | undefined = prev[conversationId]; + + if (prevConversation != null) { + allReplacements = { + ...prevConversation.replacements, + ...replacements, + }; + + const newConversation = { + ...prevConversation, + replacements: allReplacements, + }; + + return { + ...prev, + [conversationId]: newConversation, + }; + } else { + return prev; + } + }); + + return allReplacements; + }, + [setConversations] + ); + const clearConversation = useCallback( (conversationId: string) => { setConversations((prev: Record) => { @@ -105,6 +143,7 @@ export const useConversation = (): UseConversation => { const newConversation = { ...prevConversation, messages: [], + replacements: undefined, }; return { @@ -210,6 +249,7 @@ export const useConversation = (): UseConversation => { return { appendMessage, + appendReplacements, clearConversation, createConversation, deleteConversation, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx index 3fc41160d5bbf..a49cd0e22a0f4 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx @@ -9,8 +9,8 @@ import { Conversation } from '../../assistant_context/types'; import * as i18n from '../../content/prompts/welcome/translations'; import { DEFAULT_CONVERSATION_TITLE, - ELASTIC_SECURITY_ASSISTANT, - ELASTIC_SECURITY_ASSISTANT_TITLE, + ELASTIC_AI_ASSISTANT, + ELASTIC_AI_ASSISTANT_TITLE, WELCOME_CONVERSATION_TITLE, } from './translations'; @@ -87,10 +87,10 @@ export const BASE_CONVERSATIONS: Record = { [WELCOME_CONVERSATION_TITLE]: { id: WELCOME_CONVERSATION_TITLE, theme: { - title: ELASTIC_SECURITY_ASSISTANT_TITLE, + title: ELASTIC_AI_ASSISTANT_TITLE, titleIcon: 'logoSecurity', assistant: { - name: ELASTIC_SECURITY_ASSISTANT, + name: ELASTIC_AI_ASSISTANT, icon: 'logoSecurity', }, system: { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts index 48271c8b50629..e26e910b9953d 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts @@ -20,15 +20,15 @@ export const DEFAULT_CONVERSATION_TITLE = i18n.translate( } ); -export const ELASTIC_SECURITY_ASSISTANT_TITLE = i18n.translate( - 'xpack.elasticAssistant.assistant.useConversation.elasticSecurityAssistantTitle', +export const ELASTIC_AI_ASSISTANT_TITLE = i18n.translate( + 'xpack.elasticAssistant.assistant.useConversation.elasticAiAssistantTitle', { - defaultMessage: 'Elastic Security Assistant', + defaultMessage: 'Elastic AI Assistant', } ); -export const ELASTIC_SECURITY_ASSISTANT = i18n.translate( - 'xpack.elasticAssistant.assistant.useConversation.elasticSecurityAssistantName', +export const ELASTIC_AI_ASSISTANT = i18n.translate( + 'xpack.elasticAssistant.assistant.useConversation.elasticAiAssistantName', { defaultMessage: 'Assistant', } diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.test.tsx index 564d57ddd39fa..c410ef029fd6c 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.test.tsx @@ -21,10 +21,16 @@ const ContextWrapper: React.FC = ({ children }) => ( {children} diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx index a460a60748386..a67aeb54f65a5 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx @@ -7,7 +7,7 @@ import { EuiCommentProps } from '@elastic/eui'; import type { HttpSetup } from '@kbn/core-http-browser'; -import { omit } from 'lodash/fp'; +import { omit, uniq } from 'lodash/fp'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { ActionTypeRegistryContract } from '@kbn/triggers-actions-ui-plugin/public'; @@ -45,6 +45,10 @@ type ShowAssistantOverlay = ({ interface AssistantProviderProps { actionTypeRegistry: ActionTypeRegistryContract; augmentMessageCodeBlocks: (currentConversation: Conversation) => CodeBlockDetails[][]; + baseAllow: string[]; + baseAllowReplacement: string[]; + defaultAllow: string[]; + defaultAllowReplacement: string[]; basePromptContexts?: PromptContextTemplate[]; baseQuickPrompts?: QuickPrompt[]; baseSystemPrompts?: Prompt[]; @@ -52,14 +56,18 @@ interface AssistantProviderProps { getComments: ({ currentConversation, lastCommentRef, + showAnonymizedValues, }: { currentConversation: Conversation; lastCommentRef: React.MutableRefObject; + showAnonymizedValues: boolean; }) => EuiCommentProps[]; http: HttpSetup; getInitialConversations: () => Record; nameSpace?: string; setConversations: React.Dispatch>>; + setDefaultAllow: React.Dispatch>; + setDefaultAllowReplacement: React.Dispatch>; title?: string; } @@ -68,6 +76,10 @@ interface UseAssistantContext { augmentMessageCodeBlocks: (currentConversation: Conversation) => CodeBlockDetails[][]; allQuickPrompts: QuickPrompt[]; allSystemPrompts: Prompt[]; + baseAllow: string[]; + baseAllowReplacement: string[]; + defaultAllow: string[]; + defaultAllowReplacement: string[]; basePromptContexts: PromptContextTemplate[]; baseQuickPrompts: QuickPrompt[]; baseSystemPrompts: Prompt[]; @@ -76,9 +88,12 @@ interface UseAssistantContext { getComments: ({ currentConversation, lastCommentRef, + showAnonymizedValues, }: { currentConversation: Conversation; lastCommentRef: React.MutableRefObject; + + showAnonymizedValues: boolean; }) => EuiCommentProps[]; http: HttpSetup; promptContexts: Record; @@ -87,6 +102,8 @@ interface UseAssistantContext { setAllQuickPrompts: React.Dispatch>; setAllSystemPrompts: React.Dispatch>; setConversations: React.Dispatch>>; + setDefaultAllow: React.Dispatch>; + setDefaultAllowReplacement: React.Dispatch>; setShowAssistantOverlay: (showAssistantOverlay: ShowAssistantOverlay) => void; showAssistantOverlay: ShowAssistantOverlay; title: string; @@ -98,6 +115,10 @@ const AssistantContext = React.createContext(un export const AssistantProvider: React.FC = ({ actionTypeRegistry, augmentMessageCodeBlocks, + baseAllow, + baseAllowReplacement, + defaultAllow, + defaultAllowReplacement, basePromptContexts = [], baseQuickPrompts = [], baseSystemPrompts = BASE_SYSTEM_PROMPTS, @@ -107,6 +128,8 @@ export const AssistantProvider: React.FC = ({ getInitialConversations, nameSpace = DEFAULT_ASSISTANT_NAMESPACE, setConversations, + setDefaultAllow, + setDefaultAllowReplacement, title = DEFAULT_ASSISTANT_TITLE, }) => { /** @@ -202,11 +225,15 @@ export const AssistantProvider: React.FC = ({ augmentMessageCodeBlocks, allQuickPrompts: localStorageQuickPrompts ?? [], allSystemPrompts: localStorageSystemPrompts ?? [], + baseAllow: uniq(baseAllow), + baseAllowReplacement: uniq(baseAllowReplacement), basePromptContexts, baseQuickPrompts, baseSystemPrompts, conversationIds, conversations, + defaultAllow: uniq(defaultAllow), + defaultAllowReplacement: uniq(defaultAllowReplacement), getComments, http, promptContexts, @@ -215,6 +242,8 @@ export const AssistantProvider: React.FC = ({ setAllQuickPrompts: setLocalStorageQuickPrompts, setAllSystemPrompts: setLocalStorageSystemPrompts, setConversations: onConversationsUpdated, + setDefaultAllow, + setDefaultAllowReplacement, setShowAssistantOverlay, showAssistantOverlay, title, @@ -223,19 +252,25 @@ export const AssistantProvider: React.FC = ({ [ actionTypeRegistry, augmentMessageCodeBlocks, + baseAllow, + baseAllowReplacement, basePromptContexts, baseQuickPrompts, baseSystemPrompts, conversationIds, conversations, + defaultAllow, + defaultAllowReplacement, getComments, http, localStorageQuickPrompts, localStorageSystemPrompts, - promptContexts, nameSpace, - registerPromptContext, onConversationsUpdated, + promptContexts, + registerPromptContext, + setDefaultAllow, + setDefaultAllowReplacement, setLocalStorageQuickPrompts, setLocalStorageSystemPrompts, showAssistantOverlay, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx index e237b8855f731..ce49b55e5ef84 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx @@ -51,6 +51,7 @@ export interface Conversation { }; id: string; messages: Message[]; + replacements?: Record; theme?: ConversationTheme; isDefault?: boolean; } diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/translations.ts index c9eb7797e362c..923cb916df4e6 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/translations.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/translations.ts @@ -11,7 +11,7 @@ export const LOAD_ACTIONS_ERROR_MESSAGE = i18n.translate( 'xpack.elasticAssistant.connectors.useLoadActionTypes.errorMessage', { defaultMessage: - 'Welcome to your Elastic Assistant! I am your 100% open-source portal into your Elastic Life. ', + 'Welcome to your Elastic AI Assistant! I am your 100% open-source portal into your Elastic Life. ', } ); @@ -19,7 +19,7 @@ export const LOAD_CONNECTORS_ERROR_MESSAGE = i18n.translate( 'xpack.elasticAssistant.connectors.useLoadConnectors.errorMessage', { defaultMessage: - 'Welcome to your Elastic Assistant! I am your 100% open-source portal into your Elastic Life. ', + 'Welcome to your Elastic AI Assistant! I am your 100% open-source portal into your Elastic Life. ', } ); @@ -27,7 +27,7 @@ export const WELCOME_SECURITY = i18n.translate( 'xpack.elasticAssistant.content.prompts.welcome.welcomeSecurityPrompt', { defaultMessage: - 'Welcome to your Elastic Assistant! I am your 100% open-source portal into Elastic Security. ', + 'Welcome to your Elastic AI Assistant! I am your 100% open-source portal into Elastic Security. ', } ); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/system/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/system/index.tsx index 3a11330446667..e2034cc62c33a 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/system/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/system/index.tsx @@ -14,7 +14,7 @@ import { } from './translations'; /** - * Base System Prompts for Elastic Assistant (if not overridden on initialization). + * Base System Prompts for Elastic AI Assistant (if not overridden on initialization). */ export const BASE_SYSTEM_PROMPTS: Prompt[] = [ { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/system/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/system/translations.ts index 9a1c02eaccfc2..1a8b09f0c2aa1 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/system/translations.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/system/translations.ts @@ -11,7 +11,7 @@ export const YOU_ARE_A_HELPFUL_EXPERT_ASSISTANT = i18n.translate( 'xpack.elasticAssistant.assistant.content.prompts.system.youAreAHelpfulExpertAssistant', { defaultMessage: - 'You are a helpful, expert assistant who only answers questions about Elastic Security.', + 'You are a helpful, expert assistant who answers questions about Elastic Security.', } ); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/welcome/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/welcome/translations.ts index 6a6b1253ca2b1..8c28f1a8fa3f3 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/welcome/translations.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/content/prompts/welcome/translations.ts @@ -11,7 +11,7 @@ export const WELCOME_GENERAL = i18n.translate( 'xpack.elasticAssistant.securityAssistant.content.prompts.welcome.welcomeGeneralPrompt', { defaultMessage: - 'Welcome to your Elastic Assistant! I am your 100% open-code portal into your Elastic life. In time, I will be able to answer questions and provide assistance across all your information in Elastic, and oh-so much more. Till then, I hope this early preview will open your mind to the possibilities of what we can create when we work together, in the open. Cheers!', + 'Welcome to your Elastic AI Assistant! I am your 100% open-code portal into your Elastic life. In time, I will be able to answer questions and provide assistance across all your information in Elastic, and oh-so much more. Till then, I hope this early preview will open your mind to the possibilities of what we can create when we work together, in the open. Cheers!', } ); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_data/index.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_data/index.test.ts new file mode 100644 index 0000000000000..abfb627376fc3 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_data/index.test.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getAnonymizedValues } from '../get_anonymized_values'; +import { mockGetAnonymizedValue } from '../../mock/get_anonymized_value'; +import { getAnonymizedData } from '.'; + +describe('getAnonymizedData', () => { + const rawData: Record = { + doNotReplace: ['this-will-not-be-replaced', 'neither-will-this'], + empty: [], + 'host.ip': ['127.0.0.1', '10.0.0.1'], + 'host.name': ['test-host'], + doNotInclude: ['this-will-not-be-included', 'neither-will-this'], + }; + + const commonArgs = { + allow: ['doNotReplace', 'empty', 'host.ip', 'host.name'], + allowReplacement: ['empty', 'host.ip', 'host.name'], + currentReplacements: {}, + rawData, + getAnonymizedValue: mockGetAnonymizedValue, + getAnonymizedValues, + }; + + it('returns the expected anonymized data', () => { + const result = getAnonymizedData({ + ...commonArgs, + }); + + expect(result.anonymizedData).toEqual({ + doNotReplace: ['this-will-not-be-replaced', 'neither-will-this'], + empty: [], + 'host.ip': ['1.0.0.721', '1.0.0.01'], + 'host.name': ['tsoh-tset'], + }); + }); + + it('returns the expected map of replaced value to original value', () => { + const result = getAnonymizedData({ + ...commonArgs, + }); + + expect(result.replacements).toEqual({ + '1.0.0.721': '127.0.0.1', + '1.0.0.01': '10.0.0.1', + 'tsoh-tset': 'test-host', + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_data/index.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_data/index.ts new file mode 100644 index 0000000000000..a0ecd88234313 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_data/index.ts @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SelectedPromptContext } from '../../assistant/prompt_context/types'; +import { isAllowed } from '../../data_anonymization_editor/helpers'; +import type { AnonymizedData, GetAnonymizedValues } from '../types'; + +export const getAnonymizedData = ({ + allow, + allowReplacement, + currentReplacements, + getAnonymizedValue, + getAnonymizedValues, + rawData, +}: { + allow: SelectedPromptContext['allow']; + allowReplacement: SelectedPromptContext['allowReplacement']; + currentReplacements: Record | undefined; + getAnonymizedValue: ({ + currentReplacements, + rawValue, + }: { + currentReplacements: Record | undefined; + rawValue: string; + }) => string; + getAnonymizedValues: GetAnonymizedValues; + rawData: Record; +}): AnonymizedData => + Object.keys(rawData).reduce( + (acc, field) => { + const allowReplacementSet = new Set(allowReplacement); + const allowSet = new Set(allow); + + if (isAllowed({ allowSet, field })) { + const { anonymizedValues, replacements } = getAnonymizedValues({ + allowReplacementSet, + allowSet, + currentReplacements, + field, + getAnonymizedValue, + rawData, + }); + + return { + anonymizedData: { + ...acc.anonymizedData, + [field]: anonymizedValues, + }, + replacements: { + ...acc.replacements, + ...replacements, + }, + }; + } else { + return acc; + } + }, + { + anonymizedData: {}, + replacements: {}, + } + ); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_values/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_values/index.test.tsx new file mode 100644 index 0000000000000..24e95ca0f0bb0 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_values/index.test.tsx @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getAnonymizedValues } from '.'; +import { mockGetAnonymizedValue } from '../../mock/get_anonymized_value'; + +describe('getAnonymizedValues', () => { + it('returns empty anonymizedValues and replacements when provided with empty raw data', () => { + const result = getAnonymizedValues({ + allowReplacementSet: new Set(), + allowSet: new Set(), + currentReplacements: {}, + field: 'test.field', + getAnonymizedValue: jest.fn(), + rawData: {}, + }); + + expect(result).toEqual({ + anonymizedValues: [], + replacements: {}, + }); + }); + + it('returns the expected anonymized values', () => { + const rawData = { + 'test.field': ['test1', 'test2'], + }; + + const result = getAnonymizedValues({ + allowReplacementSet: new Set(['test.field']), + allowSet: new Set(['test.field']), + currentReplacements: {}, + field: 'test.field', + getAnonymizedValue: mockGetAnonymizedValue, + rawData, + }); + + expect(result.anonymizedValues).toEqual(['1tset', '2tset']); + }); + + it('returns the expected replacements', () => { + const rawData = { + 'test.field': ['test1', 'test2'], + }; + + const result = getAnonymizedValues({ + allowReplacementSet: new Set(['test.field']), + allowSet: new Set(['test.field']), + currentReplacements: {}, + field: 'test.field', + getAnonymizedValue: mockGetAnonymizedValue, + rawData, + }); + + expect(result.replacements).toEqual({ + '1tset': 'test1', + '2tset': 'test2', + }); + }); + + it('returns non-anonymized values when the field is not a member of the `allowReplacementSet`', () => { + const rawData = { + 'test.field': ['test1', 'test2'], + }; + + const result = getAnonymizedValues({ + allowReplacementSet: new Set(), // does NOT include `test.field` + allowSet: new Set(['test.field']), + currentReplacements: {}, + field: 'test.field', + getAnonymizedValue: mockGetAnonymizedValue, + rawData, + }); + + expect(result.anonymizedValues).toEqual(['test1', 'test2']); // no anonymization + }); + + it('does NOT allow a field to be included in `anonymizedValues` when the field is not a member of the `allowSet`', () => { + const rawData = { + 'test.field': ['test1', 'test2'], + }; + + const result = getAnonymizedValues({ + allowReplacementSet: new Set(['test.field']), + allowSet: new Set(), // does NOT include `test.field` + currentReplacements: {}, + field: 'test.field', + getAnonymizedValue: mockGetAnonymizedValue, + rawData, + }); + + expect(result.anonymizedValues).toEqual([]); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_values/index.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_values/index.ts new file mode 100644 index 0000000000000..db846f93bf112 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_anonymized_values/index.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { isAllowed, isAnonymized } from '../../data_anonymization_editor/helpers'; +import { AnonymizedValues, GetAnonymizedValues } from '../types'; + +export const getAnonymizedValues: GetAnonymizedValues = ({ + allowSet, + allowReplacementSet, + currentReplacements, + field, + getAnonymizedValue, + rawData, +}): AnonymizedValues => { + const rawValues = rawData[field] ?? []; + + return rawValues.reduce( + (acc, rawValue) => { + if (isAllowed({ allowSet, field }) && isAnonymized({ allowReplacementSet, field })) { + const anonymizedValue = getAnonymizedValue({ currentReplacements, rawValue }); + + return { + anonymizedValues: [...acc.anonymizedValues, anonymizedValue], + replacements: { + ...acc.replacements, + [anonymizedValue]: rawValue, + }, + }; + } else if (isAllowed({ allowSet, field })) { + return { + anonymizedValues: [...acc.anonymizedValues, rawValue], // no anonymization for this value + replacements: { + ...acc.replacements, // no additional replacements + }, + }; + } else { + return acc; + } + }, + { + anonymizedValues: [], + replacements: {}, + } + ); +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_csv_from_data/index.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_csv_from_data/index.test.ts new file mode 100644 index 0000000000000..b1c08d29b1b95 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_csv_from_data/index.test.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getCsvFromData } from '.'; + +describe('getCsvFromData', () => { + it('returns the expected csv', () => { + const data: Record = { + a: ['1', '2', '3'], + b: ['4', '5', '6'], + c: ['7', '8', '9'], + }; + + const result = getCsvFromData(data); + + expect(result).toBe('a,1,2,3\nb,4,5,6\nc,7,8,9'); + }); + + it('returns an empty string for empty data', () => { + const data: Record = {}; + + const result = getCsvFromData(data); + + expect(result).toBe(''); + }); + + it('sorts the keys alphabetically', () => { + const data: Record = { + b: ['1', '2', '3'], + a: ['4', '5', '6'], + c: ['7', '8', '9'], + }; + + const result = getCsvFromData(data); + + expect(result).toBe('a,4,5,6\nb,1,2,3\nc,7,8,9'); + }); + + it('correctly handles single-element arrays', () => { + const data: Record = { + a: ['1'], + b: ['2'], + c: ['3'], + }; + + const result = getCsvFromData(data); + + expect(result).toBe('a,1\nb,2\nc,3'); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_csv_from_data/index.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_csv_from_data/index.ts new file mode 100644 index 0000000000000..4bef8a0218f6d --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_csv_from_data/index.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const getCsvFromData = (data: Record): string => + Object.keys(data) + .sort() + .map((key) => `${key},${data[key].join(',')}`) + .join('\n'); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts new file mode 100644 index 0000000000000..fb2577c91d097 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts @@ -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 { PromptContext, SelectedPromptContext } from '../../assistant/prompt_context/types'; +import { mockAlertPromptContext } from '../../mock/prompt_context'; +import { getNewSelectedPromptContext } from '.'; + +describe('getNewSelectedPromptContext', () => { + const defaultAllow = ['field1', 'field2']; + const defaultAllowReplacement = ['field3', 'field4']; + + it("returns empty `allow` and `allowReplacement` for string `rawData`, because it's not anonymized", async () => { + const promptContext: PromptContext = { + ...mockAlertPromptContext, + getPromptContext: () => Promise.resolve('string data'), // not anonymized + }; + + const result = await getNewSelectedPromptContext({ + defaultAllow, + defaultAllowReplacement, + promptContext, + }); + + const excepted: SelectedPromptContext = { + allow: [], + allowReplacement: [], + promptContextId: promptContext.id, + rawData: 'string data', + }; + + expect(result).toEqual(excepted); + }); + + it('returns `allow` and `allowReplacement` with the contents of `defaultAllow` and `defaultAllowReplacement` for object rawData, which is anonymized', async () => { + const promptContext: PromptContext = { + ...mockAlertPromptContext, + getPromptContext: () => Promise.resolve({ field1: ['value1'], field2: ['value2'] }), + }; + + const excepted: SelectedPromptContext = { + allow: [...defaultAllow], + allowReplacement: [...defaultAllowReplacement], + promptContextId: promptContext.id, + rawData: { field1: ['value1'], field2: ['value2'] }, + }; + + const result = await getNewSelectedPromptContext({ + defaultAllow, + defaultAllowReplacement, + promptContext, + }); + + expect(result).toEqual(excepted); + }); + + it('calls getPromptContext from the given promptContext', async () => { + const promptContext: PromptContext = { + ...mockAlertPromptContext, + getPromptContext: jest.fn(() => Promise.resolve('string data')), + }; + + await getNewSelectedPromptContext({ + defaultAllow, + defaultAllowReplacement, + promptContext, + }); + + expect(promptContext.getPromptContext).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts new file mode 100644 index 0000000000000..daf64ee590ae0 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PromptContext, SelectedPromptContext } from '../../assistant/prompt_context/types'; + +export async function getNewSelectedPromptContext({ + defaultAllow, + defaultAllowReplacement, + promptContext, +}: { + defaultAllow: string[]; + defaultAllowReplacement: string[]; + promptContext: PromptContext; +}): Promise { + const rawData = await promptContext.getPromptContext(); + + if (typeof rawData === 'string') { + return { + allow: [], + allowReplacement: [], + promptContextId: promptContext.id, + rawData, + }; + } else { + return { + allow: [...defaultAllow], + allowReplacement: [...defaultAllowReplacement], + promptContextId: promptContext.id, + rawData, + }; + } +} diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx new file mode 100644 index 0000000000000..583c0d8076a68 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx @@ -0,0 +1,159 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; + +import { TestProviders } from '../../../mock/test_providers/test_providers'; +import { AnonymizationSettings } from '.'; + +const mockUseAssistantContext = { + allSystemPrompts: [ + { + id: 'default-system-prompt', + content: 'default', + name: 'default', + promptType: 'system', + isDefault: true, + isNewConversationDefault: true, + }, + { + id: 'CB9FA555-B59F-4F71-AFF9-8A891AC5BC28', + content: 'superhero', + name: 'superhero', + promptType: 'system', + isDefault: true, + }, + ], + baseAllow: ['@timestamp', 'event.category', 'user.name'], + baseAllowReplacement: ['user.name', 'host.ip'], + defaultAllow: ['foo', 'bar', 'baz', '@baz'], + defaultAllowReplacement: ['bar'], + setAllSystemPrompts: jest.fn(), + setDefaultAllow: jest.fn(), + setDefaultAllowReplacement: jest.fn(), +}; +jest.mock('../../../assistant_context', () => { + const original = jest.requireActual('../../../assistant_context'); + + return { + ...original, + useAssistantContext: () => mockUseAssistantContext, + }; +}); + +describe('AnonymizationSettings', () => { + const closeModal = jest.fn(); + + beforeEach(() => jest.clearAllMocks()); + + it('renders the editor', () => { + const { getByTestId } = render( + + + + ); + + expect(getByTestId('contextEditor')).toBeInTheDocument(); + }); + + it('does NOT call `setDefaultAllow` when `Reset` is clicked, because only local state is reset until the user clicks save', () => { + const { getByTestId } = render( + + + + ); + + fireEvent.click(getByTestId('reset')); + + expect(mockUseAssistantContext.setDefaultAllow).not.toHaveBeenCalled(); + }); + + it('does NOT call `setDefaultAllowReplacement` when `Reset` is clicked, because only local state is reset until the user clicks save', () => { + const { getByTestId } = render( + + + + ); + + fireEvent.click(getByTestId('reset')); + + expect(mockUseAssistantContext.setDefaultAllowReplacement).not.toHaveBeenCalled(); + }); + + it('renders the expected allowed stat content', () => { + const { getByTestId } = render( + + + + ); + + expect(getByTestId('allowedStat')).toHaveTextContent( + `${mockUseAssistantContext.defaultAllow.length}Allowed` + ); + }); + + it('renders the expected anonymized stat content', () => { + const { getByTestId } = render( + + + + ); + + expect(getByTestId('anonymizedFieldsStat')).toHaveTextContent( + `${mockUseAssistantContext.defaultAllowReplacement.length}Anonymized` + ); + }); + + it('calls closeModal is called when the cancel button is clicked', () => { + const { getByTestId } = render( + + + + ); + fireEvent.click(getByTestId('cancel')); + expect(closeModal).toHaveBeenCalledTimes(1); + }); + + it('calls closeModal is called when the save button is clicked', () => { + const { getByTestId } = render( + + + + ); + fireEvent.click(getByTestId('cancel')); + expect(closeModal).toHaveBeenCalledTimes(1); + }); + + it('calls setDefaultAllow with the expected values when the save button is clicked', () => { + const { getByTestId } = render( + + + + ); + + fireEvent.click(getByTestId('save')); + + expect(mockUseAssistantContext.setDefaultAllow).toHaveBeenCalledWith( + mockUseAssistantContext.defaultAllow + ); + }); + + it('calls setDefaultAllowReplacement with the expected values when the save button is clicked', () => { + const { getByTestId } = render( + + + + ); + + fireEvent.click(getByTestId('save')); + + expect(mockUseAssistantContext.setDefaultAllowReplacement).toHaveBeenCalledWith( + mockUseAssistantContext.defaultAllowReplacement + ); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx new file mode 100644 index 0000000000000..e833276d4850d --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx @@ -0,0 +1,147 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { + EuiButton, + EuiButtonEmpty, + EuiCallOut, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, +} from '@elastic/eui'; +import React, { useCallback, useMemo, useState } from 'react'; +// eslint-disable-next-line @kbn/eslint/module_migration +import styled from 'styled-components'; + +import { useAssistantContext } from '../../../assistant_context'; +import { ContextEditor } from '../../../data_anonymization_editor/context_editor'; +import type { BatchUpdateListItem } from '../../../data_anonymization_editor/context_editor/types'; +import { updateDefaults } from '../../../data_anonymization_editor/helpers'; +import { AllowedStat } from '../../../data_anonymization_editor/stats/allowed_stat'; +import { AnonymizedStat } from '../../../data_anonymization_editor/stats/anonymized_stat'; +import { CANCEL, SAVE } from '../anonymization_settings_modal/translations'; +import * as i18n from './translations'; + +const StatFlexItem = styled(EuiFlexItem)` + margin-right: ${({ theme }) => theme.eui.euiSizeL}; +`; + +interface Props { + closeModal?: () => void; +} + +const AnonymizationSettingsComponent: React.FC = ({ closeModal }) => { + const { + baseAllow, + baseAllowReplacement, + defaultAllow, + defaultAllowReplacement, + setDefaultAllow, + setDefaultAllowReplacement, + } = useAssistantContext(); + + // Local state for default allow and default allow replacement to allow for intermediate changes + const [localDefaultAllow, setLocalDefaultAllow] = useState(defaultAllow); + const [localDefaultAllowReplacement, setLocalDefaultAllowReplacement] = + useState(defaultAllowReplacement); + + const onListUpdated = useCallback( + (updates: BatchUpdateListItem[]) => { + updateDefaults({ + defaultAllow: localDefaultAllow, + defaultAllowReplacement: localDefaultAllowReplacement, + setDefaultAllow: setLocalDefaultAllow, + setDefaultAllowReplacement: setLocalDefaultAllowReplacement, + updates, + }); + }, + [localDefaultAllow, localDefaultAllowReplacement] + ); + + const onReset = useCallback(() => { + setLocalDefaultAllow(baseAllow); + setLocalDefaultAllowReplacement(baseAllowReplacement); + }, [baseAllow, baseAllowReplacement]); + + const onSave = useCallback(() => { + setDefaultAllow(localDefaultAllow); + setDefaultAllowReplacement(localDefaultAllowReplacement); + closeModal?.(); + }, [ + closeModal, + localDefaultAllow, + localDefaultAllowReplacement, + setDefaultAllow, + setDefaultAllowReplacement, + ]); + + const anonymized: number = useMemo(() => { + const allowSet = new Set(localDefaultAllow); + + return localDefaultAllowReplacement.reduce( + (acc, field) => (allowSet.has(field) ? acc + 1 : acc), + 0 + ); + }, [localDefaultAllow, localDefaultAllowReplacement]); + + return ( + <> + +

{i18n.CALLOUT_PARAGRAPH1}

+ + {i18n.RESET} + +
+ + + + + + + + + + + + + + + + + + + {closeModal != null && ( + + + {CANCEL} + + + )} + + + + {SAVE} + + + + + ); +}; + +AnonymizationSettingsComponent.displayName = 'AnonymizationSettingsComponent'; + +export const AnonymizationSettings = React.memo(AnonymizationSettingsComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts new file mode 100644 index 0000000000000..e7f82289dff78 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const CALLOUT_PARAGRAPH1 = i18n.translate( + 'xpack.elasticAssistant.dataAnonymization.settings.anonymizationSettings.calloutParagraph1', + { + defaultMessage: 'The fields below are allowed by default', + } +); + +export const CALLOUT_PARAGRAPH2 = i18n.translate( + 'xpack.elasticAssistant.dataAnonymization.settings.anonymizationSettings.calloutParagraph2', + { + defaultMessage: 'Optionally enable anonymization for these fields', + } +); + +export const CALLOUT_TITLE = i18n.translate( + 'xpack.elasticAssistant.dataAnonymization.settings.anonymizationSettings.calloutTitle', + { + defaultMessage: 'Anonymization defaults', + } +); + +export const RESET = i18n.translate( + 'xpack.elasticAssistant.dataAnonymization.settings.anonymizationSettings.resetButton', + { + defaultMessage: 'Reset', + } +); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/index.test.tsx new file mode 100644 index 0000000000000..35ee1a1bde473 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/index.test.tsx @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, fireEvent, screen } from '@testing-library/react'; + +import { AnonymizationSettingsModal } from '.'; +import { TestProviders } from '../../../mock/test_providers/test_providers'; + +describe('AnonymizationSettingsModal', () => { + const closeModal = jest.fn(); + + beforeEach(() => { + jest.clearAllMocks(); + + render( + + + + ); + }); + + it('renders the anonymizationSettings', () => { + expect(screen.getByTestId('anonymizationSettingsCallout')).toBeInTheDocument(); + }); + + it('calls closeModal when Cancel is clicked', () => { + fireEvent.click(screen.getByTestId('cancel')); + + expect(closeModal).toHaveBeenCalledTimes(1); + }); + + it('calls closeModal when Save is clicked', () => { + fireEvent.click(screen.getByTestId('save')); + + expect(closeModal).toHaveBeenCalledTimes(1); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/index.tsx new file mode 100644 index 0000000000000..ae4b395ca0d0e --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/index.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiModal, EuiModalBody, EuiModalHeader } from '@elastic/eui'; +import React from 'react'; + +import { AnonymizationSettings } from '../anonymization_settings'; + +interface Props { + closeModal: () => void; +} + +const AnonymizationSettingsModalComponent: React.FC = ({ closeModal }) => ( + + + + + + +); + +export const AnonymizationSettingsModal = React.memo(AnonymizationSettingsModalComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/translations.ts new file mode 100644 index 0000000000000..d3da99dcf5052 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_modal/translations.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const ANONYMIZATION = i18n.translate( + 'xpack.elasticAssistant.dataAnonymization.settings.anonymizationSettingsModal.anonymizationModalTitle', + { + defaultMessage: 'Anonymization', + } +); + +export const CANCEL = i18n.translate( + 'xpack.elasticAssistant.dataAnonymization.settings.anonymizationSettingsModal.cancelButton', + { + defaultMessage: 'Cancel', + } +); + +export const SAVE = i18n.translate( + 'xpack.elasticAssistant.dataAnonymization.settings.anonymizationSettingsModal.saveButton', + { + defaultMessage: 'Save', + } +); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/index.test.tsx new file mode 100644 index 0000000000000..3168c6a6b28dc --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/index.test.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + +import { TestProviders } from '../../../mock/test_providers/test_providers'; +import * as i18n from './translations'; +import { SettingsPopover } from '.'; + +describe('SettingsPopover', () => { + beforeEach(() => { + render( + + + + ); + }); + + it('renders the settings button', () => { + const settingsButton = screen.getByTestId('settings'); + + expect(settingsButton).toBeInTheDocument(); + }); + + it('opens the popover when the settings button is clicked', () => { + const settingsButton = screen.getByTestId('settings'); + + userEvent.click(settingsButton); + + const popover = screen.queryByText(i18n.ANONYMIZATION); + expect(popover).toBeInTheDocument(); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/index.tsx new file mode 100644 index 0000000000000..e623798e8c4dd --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/index.tsx @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiButtonIcon, + EuiContextMenu, + EuiContextMenuPanelDescriptor, + EuiPopover, + useGeneratedHtmlId, +} from '@elastic/eui'; +import React, { useCallback, useMemo, useState } from 'react'; +import { AnonymizationSettingsModal } from '../anonymization_settings_modal'; + +import * as i18n from './translations'; + +const SettingsPopoverComponent: React.FC = () => { + const [showAnonymizationSettingsModal, setShowAnonymizationSettingsModal] = useState(false); + const closeAnonymizationSettingsModal = useCallback( + () => setShowAnonymizationSettingsModal(false), + [] + ); + + const contextMenuPopoverId = useGeneratedHtmlId(); + + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + const closePopover = useCallback(() => setIsPopoverOpen(false), []); + + const onButtonClick = useCallback(() => setIsPopoverOpen((prev) => !prev), []); + const button = useMemo( + () => ( + + ), + [onButtonClick] + ); + + const panels: EuiContextMenuPanelDescriptor[] = useMemo( + () => [ + { + id: 0, + items: [ + { + icon: 'eyeClosed', + name: i18n.ANONYMIZATION, + onClick: () => { + closePopover(); + + setShowAnonymizationSettingsModal(true); + }, + }, + ], + size: 's', + width: 150, + }, + ], + [closePopover] + ); + + return ( + <> + + + + + {showAnonymizationSettingsModal && ( + + )} + + ); +}; + +SettingsPopoverComponent.displayName = 'SettingsPopoverComponent'; + +export const SettingsPopover = React.memo(SettingsPopoverComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/translations.ts new file mode 100644 index 0000000000000..4fcbcfcfa596b --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/settings_popover/translations.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const ANONYMIZATION = i18n.translate( + 'xpack.elasticAssistant.dataAnonymization.settings.settingsPopover.anonymizationMenuItem', + { + defaultMessage: 'Anonymization', + } +); + +export const SETTINGS = i18n.translate( + 'xpack.elasticAssistant.dataAnonymization.settings.settingsPopover.settingsAriaLabel', + { + defaultMessage: 'Settings', + } +); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/transform_raw_data/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/transform_raw_data/index.test.tsx new file mode 100644 index 0000000000000..48caf7ca226dc --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/transform_raw_data/index.test.tsx @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SelectedPromptContext } from '../../assistant/prompt_context/types'; +import { mockGetAnonymizedValue } from '../../mock/get_anonymized_value'; +import { transformRawData } from '.'; + +describe('transformRawData', () => { + it('returns non-anonymized data when rawData is a string', () => { + const inputRawData: SelectedPromptContext = { + allow: ['field1'], + allowReplacement: ['field1', 'field2'], + promptContextId: 'abcd', + rawData: 'this will not be anonymized', + }; + + const result = transformRawData({ + currentReplacements: {}, + getAnonymizedValue: mockGetAnonymizedValue, + onNewReplacements: () => {}, + selectedPromptContext: inputRawData, + }); + + expect(result).toEqual('this will not be anonymized'); + }); + + it('calls onNewReplacements with the expected replacements', () => { + const inputRawData: SelectedPromptContext = { + allow: ['field1'], + allowReplacement: ['field1'], + promptContextId: 'abcd', + rawData: { field1: ['value1'] }, + }; + + const onNewReplacements = jest.fn(); + + transformRawData({ + currentReplacements: {}, + getAnonymizedValue: mockGetAnonymizedValue, + onNewReplacements, + selectedPromptContext: inputRawData, + }); + + expect(onNewReplacements).toHaveBeenCalledWith({ '1eulav': 'value1' }); + }); + + it('returns the expected mix of anonymized and non-anonymized data as a CSV string', () => { + const inputRawData: SelectedPromptContext = { + allow: ['field1', 'field2'], + allowReplacement: ['field1'], // only field 1 will be anonymized + promptContextId: 'abcd', + rawData: { field1: ['value1', 'value2'], field2: ['value3', 'value4'] }, + }; + + const result = transformRawData({ + currentReplacements: {}, + getAnonymizedValue: mockGetAnonymizedValue, + onNewReplacements: () => {}, + selectedPromptContext: inputRawData, + }); + + expect(result).toEqual('field1,1eulav,2eulav\nfield2,value3,value4'); // only field 1 is anonymized + }); + + it('omits fields that are not included in the `allow` list, even if they are members of `allowReplacement`', () => { + const inputRawData: SelectedPromptContext = { + allow: ['field1', 'field2'], // field3 is NOT allowed + allowReplacement: ['field1', 'field3'], // field3 is requested to be anonymized + promptContextId: 'abcd', + rawData: { + field1: ['value1', 'value2'], + field2: ['value3', 'value4'], + field3: ['value5', 'value6'], // this data should NOT be included in the output + }, + }; + + const result = transformRawData({ + currentReplacements: {}, + getAnonymizedValue: mockGetAnonymizedValue, + onNewReplacements: () => {}, + selectedPromptContext: inputRawData, + }); + + expect(result).toEqual('field1,1eulav,2eulav\nfield2,value3,value4'); // field 3 is not included + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/transform_raw_data/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/transform_raw_data/index.tsx new file mode 100644 index 0000000000000..c478b0ab39f68 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/transform_raw_data/index.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { SelectedPromptContext } from '../../assistant/prompt_context/types'; +import { getAnonymizedData } from '../get_anonymized_data'; +import { getAnonymizedValues } from '../get_anonymized_values'; +import { getCsvFromData } from '../get_csv_from_data'; + +export const transformRawData = ({ + currentReplacements, + getAnonymizedValue, + onNewReplacements, + selectedPromptContext, +}: { + currentReplacements: Record | undefined; + getAnonymizedValue: ({ + currentReplacements, + rawValue, + }: { + currentReplacements: Record | undefined; + rawValue: string; + }) => string; + onNewReplacements?: (replacements: Record) => void; + selectedPromptContext: SelectedPromptContext; +}): string => { + if (typeof selectedPromptContext.rawData === 'string') { + return selectedPromptContext.rawData; + } + + const anonymizedData = getAnonymizedData({ + allow: selectedPromptContext.allow, + allowReplacement: selectedPromptContext.allowReplacement, + currentReplacements, + rawData: selectedPromptContext.rawData, + getAnonymizedValue, + getAnonymizedValues, + }); + + if (onNewReplacements != null) { + onNewReplacements(anonymizedData.replacements); + } + + return getCsvFromData(anonymizedData.anonymizedData); +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/types.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/types.ts new file mode 100644 index 0000000000000..59ca12414b640 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/types.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export interface AnonymizedValues { + /** The original values were transformed to these anonymized values */ + anonymizedValues: string[]; + + /** A map from replacement value to original value */ + replacements: Record; +} + +export interface AnonymizedData { + /** The original data was transformed to this anonymized data */ + anonymizedData: Record; + + /** A map from replacement value to original value */ + replacements: Record; +} + +export type GetAnonymizedValues = ({ + allowReplacementSet, + allowSet, + currentReplacements, + field, + getAnonymizedValue, + rawData, +}: { + allowReplacementSet: Set; + allowSet: Set; + currentReplacements: Record | undefined; + field: string; + getAnonymizedValue: ({ + currentReplacements, + rawValue, + }: { + currentReplacements: Record | undefined; + rawValue: string; + }) => string; + rawData: Record; +}) => AnonymizedValues; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx new file mode 100644 index 0000000000000..ec2f276f6f4bd --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx @@ -0,0 +1,139 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + +import { BulkActions } from '.'; + +const selected = [ + { + allowed: true, + anonymized: false, + denied: false, + field: 'process.args', + rawValues: ['abc', 'def'], + }, + { + allowed: false, + anonymized: true, + denied: true, + field: 'user.name', + rawValues: ['fooUser'], + }, +]; + +const defaultProps = { + appliesTo: 'multipleRows' as const, + disabled: false, + onListUpdated: jest.fn(), + onlyDefaults: false, + selected, +}; + +describe('BulkActions', () => { + beforeEach(() => jest.clearAllMocks()); + + it('calls onListUpdated with the expected updates when Allow is clicked', () => { + const { getByTestId, getByText } = render(); + + userEvent.click(getByTestId('bulkActionsButton')); + fireEvent.click(getByText(/^Allow$/)); + + expect(defaultProps.onListUpdated).toBeCalledWith([ + { field: 'process.args', operation: 'add', update: 'allow' }, + { field: 'user.name', operation: 'add', update: 'allow' }, + ]); + }); + + it('calls onListUpdated with the expected updates when Deny is clicked', () => { + const { getByTestId, getByText } = render(); + + userEvent.click(getByTestId('bulkActionsButton')); + fireEvent.click(getByText(/^Deny$/)); + + expect(defaultProps.onListUpdated).toBeCalledWith([ + { field: 'process.args', operation: 'remove', update: 'allow' }, + { field: 'user.name', operation: 'remove', update: 'allow' }, + ]); + }); + + it('calls onListUpdated with the expected updates when Anonymize is clicked', () => { + const { getByTestId, getByText } = render(); + + userEvent.click(getByTestId('bulkActionsButton')); + fireEvent.click(getByText(/^Anonymize$/)); + + expect(defaultProps.onListUpdated).toBeCalledWith([ + { field: 'process.args', operation: 'add', update: 'allowReplacement' }, + { field: 'user.name', operation: 'add', update: 'allowReplacement' }, + ]); + }); + + it('calls onListUpdated with the expected updates when Unanonymize is clicked', () => { + const { getByTestId, getByText } = render(); + + userEvent.click(getByTestId('bulkActionsButton')); + fireEvent.click(getByText(/^Unanonymize$/)); + + expect(defaultProps.onListUpdated).toBeCalledWith([ + { field: 'process.args', operation: 'remove', update: 'allowReplacement' }, + { field: 'user.name', operation: 'remove', update: 'allowReplacement' }, + ]); + }); + + it('calls onListUpdated with the expected updates when Deny by default is clicked', () => { + const { getByTestId, getByText } = render( + + ); + + userEvent.click(getByTestId('bulkActionsButton')); + fireEvent.click(getByText(/^Deny by default$/)); + + expect(defaultProps.onListUpdated).toBeCalledWith([ + { field: 'process.args', operation: 'remove', update: 'allow' }, + { field: 'user.name', operation: 'remove', update: 'allow' }, + { field: 'process.args', operation: 'remove', update: 'defaultAllow' }, + { field: 'user.name', operation: 'remove', update: 'defaultAllow' }, + ]); + }); + + it('calls onListUpdated with the expected updates when Anonymize by default is clicked', () => { + const { getByTestId, getByText } = render( + + ); + + userEvent.click(getByTestId('bulkActionsButton')); + fireEvent.click(getByText(/^Defaults$/)); + fireEvent.click(getByText(/^Anonymize by default$/)); + + expect(defaultProps.onListUpdated).toBeCalledWith([ + { field: 'process.args', operation: 'add', update: 'allowReplacement' }, + { field: 'user.name', operation: 'add', update: 'allowReplacement' }, + { field: 'process.args', operation: 'add', update: 'defaultAllowReplacement' }, + { field: 'user.name', operation: 'add', update: 'defaultAllowReplacement' }, + ]); + }); + + it('calls onListUpdated with the expected updates when Unanonymize by default is clicked', () => { + const { getByTestId, getByText } = render( + + ); + + userEvent.click(getByTestId('bulkActionsButton')); + fireEvent.click(getByText(/^Defaults$/)); + fireEvent.click(getByText(/^Unanonymize by default$/)); + + expect(defaultProps.onListUpdated).toBeCalledWith([ + { field: 'process.args', operation: 'remove', update: 'allowReplacement' }, + { field: 'user.name', operation: 'remove', update: 'allowReplacement' }, + { field: 'process.args', operation: 'remove', update: 'defaultAllowReplacement' }, + { field: 'user.name', operation: 'remove', update: 'defaultAllowReplacement' }, + ]); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx new file mode 100644 index 0000000000000..3511ee2118a89 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx @@ -0,0 +1,112 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { + EuiButtonEmpty, + EuiContextMenu, + EuiContextMenuPanelDescriptor, + EuiPopover, + EuiToolTip, + useGeneratedHtmlId, +} from '@elastic/eui'; + +import React, { useCallback, useMemo, useState } from 'react'; +import { getContextMenuPanels, PRIMARY_PANEL_ID } from '../get_context_menu_panels'; +import * as i18n from '../translations'; +import { BatchUpdateListItem, ContextEditorRow } from '../types'; + +export interface Props { + appliesTo: 'multipleRows' | 'singleRow'; + disabled: boolean; + disableAllow?: boolean; + disableAnonymize?: boolean; + disableDeny?: boolean; + disableUnanonymize?: boolean; + onListUpdated: (updates: BatchUpdateListItem[]) => void; + onlyDefaults: boolean; + selected: ContextEditorRow[]; +} + +const BulkActionsComponent: React.FC = ({ + appliesTo, + disabled, + disableAllow = false, + disableAnonymize = false, + disableDeny = false, + disableUnanonymize = false, + onListUpdated, + onlyDefaults, + selected, +}) => { + const [isPopoverOpen, setPopover] = useState(false); + + const contextMenuPopoverId = useGeneratedHtmlId({ + prefix: 'contextEditorBulkActions', + }); + + const closePopover = useCallback(() => setPopover(false), []); + + const onButtonClick = useCallback(() => setPopover((isOpen) => !isOpen), []); + + const button = useMemo( + () => ( + + + {appliesTo === 'multipleRows' ? i18n.BULK_ACTIONS : null} + + + ), + [appliesTo, disabled, onButtonClick] + ); + + const panels: EuiContextMenuPanelDescriptor[] = useMemo( + () => + getContextMenuPanels({ + disableAllow, + disableAnonymize, + disableDeny, + disableUnanonymize, + closePopover, + onListUpdated, + onlyDefaults, + selected, + }), + [ + closePopover, + disableAllow, + disableAnonymize, + disableDeny, + disableUnanonymize, + onListUpdated, + onlyDefaults, + selected, + ] + ); + + return ( + + + + ); +}; + +export const BulkActions = React.memo(BulkActionsComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx new file mode 100644 index 0000000000000..1f6590d576c30 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx @@ -0,0 +1,318 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { EuiBasicTableColumn } from '@elastic/eui'; +import { fireEvent, render, screen } from '@testing-library/react'; +import React from 'react'; + +import { TestProviders } from '../../../mock/test_providers/test_providers'; +import { ContextEditorRow } from '../types'; +import { getColumns } from '.'; + +interface ColumnWithRender { + render: (_: unknown, row: ContextEditorRow) => React.ReactNode; +} + +const fieldIsNotAllowed: ContextEditorRow = { + allowed: false, // the field is not allowed + anonymized: false, + denied: false, + field: 'event.category', + rawValues: ['authentication'], +}; + +const fieldIsAllowedButNotAnonymized: ContextEditorRow = { + allowed: true, // the field is allowed + anonymized: false, + denied: false, + field: 'event.category', + rawValues: ['authentication'], +}; + +const rowWhereFieldIsAnonymized: ContextEditorRow = { + allowed: true, + anonymized: true, // the field is anonymized + denied: false, + field: 'user.name', + rawValues: ['rawUsername'], +}; + +describe('getColumns', () => { + const onListUpdated = jest.fn(); + const rawData: Record = { + 'field.name': ['value1', 'value2'], + }; + + const row: ContextEditorRow = { + allowed: true, + anonymized: false, + denied: false, + field: 'event.category', + rawValues: ['authentication'], + }; + + it('includes the values column when rawData is NOT null', () => { + const columns: Array & { field?: string }> = getColumns({ + onListUpdated, + rawData, + }); + + expect(columns.some(({ field }) => field === 'rawValues')).toBe(true); + }); + + it('does NOT include the values column when rawData is null', () => { + const columns: Array & { field?: string }> = getColumns({ + onListUpdated, + rawData: null, + }); + + expect(columns.some(({ field }) => field === 'rawValues')).toBe(false); + }); + + describe('allowed column render()', () => { + it('calls onListUpdated with a `remove` operation when the toggle is clicked on field that is allowed', () => { + const columns = getColumns({ onListUpdated, rawData }); + const anonymizedColumn: ColumnWithRender = columns[0] as ColumnWithRender; + const allowedRow = { + ...row, + allowed: true, // the field is allowed + }; + + const { getByTestId } = render( + + <>{anonymizedColumn.render(undefined, allowedRow)} + + ); + + fireEvent.click(getByTestId('allowed')); + + expect(onListUpdated).toBeCalledWith([ + { field: 'event.category', operation: 'remove', update: 'allow' }, + ]); + }); + + it('calls onListUpdated with an `add` operation when the toggle is clicked on a field that is NOT allowed', () => { + const columns = getColumns({ onListUpdated, rawData }); + const anonymizedColumn: ColumnWithRender = columns[0] as ColumnWithRender; + const notAllowedRow = { + ...row, + allowed: false, // the field is NOT allowed + }; + + const { getByTestId } = render( + + <>{anonymizedColumn.render(undefined, notAllowedRow)} + + ); + + fireEvent.click(getByTestId('allowed')); + + expect(onListUpdated).toBeCalledWith([ + { field: 'event.category', operation: 'add', update: 'allow' }, + ]); + }); + + it('calls onListUpdated with a `remove` operation to update the `defaultAllowReplacement` list when the toggle is clicked on a default field that is allowed', () => { + const columns = getColumns({ onListUpdated, rawData: null }); // null raw data means the field is a default field + const anonymizedColumn: ColumnWithRender = columns[0] as ColumnWithRender; + const allowedRow = { + ...row, + allowed: true, // the field is allowed + }; + + const { getByTestId } = render( + + <>{anonymizedColumn.render(undefined, allowedRow)} + + ); + + fireEvent.click(getByTestId('allowed')); + + expect(onListUpdated).toBeCalledWith([ + { field: 'event.category', operation: 'remove', update: 'defaultAllowReplacement' }, + ]); + }); + }); + + describe('anonymized column render()', () => { + it('disables the button when the field is not allowed', () => { + const columns = getColumns({ onListUpdated, rawData }); + const anonymizedColumn: ColumnWithRender = columns[1] as ColumnWithRender; + + const { getByTestId } = render( + + <>{anonymizedColumn.render(undefined, fieldIsNotAllowed)} + + ); + + expect(getByTestId('anonymized')).toBeDisabled(); + }); + + it('enables the button when the field is allowed', () => { + const columns = getColumns({ onListUpdated, rawData }); + const anonymizedColumn: ColumnWithRender = columns[1] as ColumnWithRender; + + const { getByTestId } = render( + + <>{anonymizedColumn.render(undefined, fieldIsAllowedButNotAnonymized)} + + ); + + expect(getByTestId('anonymized')).not.toBeDisabled(); + }); + + it('calls onListUpdated with an `add` operation when an unanonymized field is toggled', () => { + const columns = getColumns({ onListUpdated, rawData }); + const anonymizedColumn: ColumnWithRender = columns[1] as ColumnWithRender; + + const { getByTestId } = render( + + <>{anonymizedColumn.render(undefined, row)} + + ); + + fireEvent.click(getByTestId('anonymized')); + + expect(onListUpdated).toBeCalledWith([ + { field: 'event.category', operation: 'add', update: 'allowReplacement' }, + ]); + }); + + it('calls onListUpdated with a `remove` operation when an anonymized field is toggled', () => { + const columns = getColumns({ onListUpdated, rawData }); + const anonymizedColumn: ColumnWithRender = columns[1] as ColumnWithRender; + + const anonymizedRow = { + ...row, + anonymized: true, + }; + + const { getByTestId } = render( + + <>{anonymizedColumn.render(undefined, anonymizedRow)} + + ); + + fireEvent.click(getByTestId('anonymized')); + + expect(onListUpdated).toBeCalledWith([ + { field: 'event.category', operation: 'remove', update: 'allowReplacement' }, + ]); + }); + + it('calls onListUpdated with an update to the `defaultAllowReplacement` list when rawData is null, because the field is a default', () => { + const columns = getColumns({ onListUpdated, rawData: null }); // null raw data means the field is a default field + const anonymizedColumn: ColumnWithRender = columns[1] as ColumnWithRender; + + const { getByTestId } = render( + + <>{anonymizedColumn.render(undefined, row)} + + ); + + fireEvent.click(getByTestId('anonymized')); + + expect(onListUpdated).toBeCalledWith([ + { field: 'event.category', operation: 'add', update: 'allowReplacement' }, + ]); + }); + + it('displays a closed eye icon when the field is anonymized', () => { + const columns = getColumns({ onListUpdated, rawData }); + const anonymizedColumn: ColumnWithRender = columns[1] as ColumnWithRender; + + const { container } = render( + + <>{anonymizedColumn.render(undefined, rowWhereFieldIsAnonymized)} + + ); + + expect(container.getElementsByClassName('euiButtonContent__icon')[0]).toHaveAttribute( + 'data-euiicon-type', + 'eyeClosed' + ); + }); + + it('displays a open eye icon when the field is NOT anonymized', () => { + const columns = getColumns({ onListUpdated, rawData }); + const anonymizedColumn: ColumnWithRender = columns[1] as ColumnWithRender; + + const { container } = render( + + <>{anonymizedColumn.render(undefined, fieldIsAllowedButNotAnonymized)} + + ); + + expect(container.getElementsByClassName('euiButtonContent__icon')[0]).toHaveAttribute( + 'data-euiicon-type', + 'eye' + ); + }); + + it('displays Yes when the field is anonymized', () => { + const columns = getColumns({ onListUpdated, rawData }); + const anonymizedColumn: ColumnWithRender = columns[1] as ColumnWithRender; + + const { getByTestId } = render( + + <>{anonymizedColumn.render(undefined, rowWhereFieldIsAnonymized)} + + ); + + expect(getByTestId('anonymized')).toHaveTextContent('Yes'); + }); + + it('displays No when the field is NOT anonymized', () => { + const columns = getColumns({ onListUpdated, rawData }); + const anonymizedColumn: ColumnWithRender = columns[1] as ColumnWithRender; + + const { getByTestId } = render( + + <>{anonymizedColumn.render(undefined, fieldIsAllowedButNotAnonymized)} + + ); + + expect(getByTestId('anonymized')).toHaveTextContent('No'); + }); + }); + + describe('values column render()', () => { + it('joins values with a comma', () => { + const columns = getColumns({ onListUpdated, rawData }); + const valuesColumn: ColumnWithRender = columns[3] as ColumnWithRender; + + const rowWithMultipleValues = { + ...row, + field: 'user.name', + rawValues: ['abe', 'bart'], + }; + + render( + + <>{valuesColumn.render(rowWithMultipleValues.rawValues, rowWithMultipleValues)} + + ); + + expect(screen.getByTestId('rawValues')).toHaveTextContent('abe,bart'); + }); + }); + + describe('actions column render()', () => { + it('renders the bulk actions', () => { + const columns = getColumns({ onListUpdated, rawData }); + const actionsColumn: ColumnWithRender = columns[4] as ColumnWithRender; + + render( + + <>{actionsColumn.render(null, row)} + + ); + + expect(screen.getByTestId('bulkActions')).toBeInTheDocument(); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx new file mode 100644 index 0000000000000..75fd3e6d633eb --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx @@ -0,0 +1,132 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { EuiBasicTableColumn, EuiButtonEmpty, EuiCode, EuiSwitch, EuiText } from '@elastic/eui'; +import React from 'react'; +// eslint-disable-next-line @kbn/eslint/module_migration +import styled from 'styled-components'; + +import { BulkActions } from '../bulk_actions'; +import * as i18n from '../translations'; +import { BatchUpdateListItem, ContextEditorRow, FIELDS } from '../types'; + +const AnonymizedButton = styled(EuiButtonEmpty)` + max-height: 24px; +`; + +export const getColumns = ({ + onListUpdated, + rawData, +}: { + onListUpdated: (updates: BatchUpdateListItem[]) => void; + rawData: Record | null; +}): Array> => { + const actionsColumn: EuiBasicTableColumn = { + field: FIELDS.ACTIONS, + name: '', + render: (_, row) => { + return ( + + ); + }, + sortable: false, + width: '36px', + }; + + const valuesColumn: EuiBasicTableColumn = { + field: FIELDS.RAW_VALUES, + name: i18n.VALUES, + render: (rawValues: ContextEditorRow['rawValues']) => ( + {rawValues.join(',')} + ), + sortable: false, + }; + + const baseColumns: Array> = [ + { + field: FIELDS.ALLOWED, + name: i18n.ALLOWED, + render: (_, { allowed, field }) => ( + { + onListUpdated([ + { + field, + operation: allowed ? 'remove' : 'add', + update: rawData == null ? 'defaultAllow' : 'allow', + }, + ]); + + if (rawData == null && allowed) { + // when editing defaults, remove the default replacement if the field is no longer allowed + onListUpdated([ + { + field, + operation: 'remove', + update: 'defaultAllowReplacement', + }, + ]); + } + }} + /> + ), + sortable: true, + width: '75px', + }, + { + field: FIELDS.ANONYMIZED, + name: i18n.ANONYMIZED, + render: (_, { allowed, anonymized, field }) => ( + + onListUpdated([ + { + field, + operation: anonymized ? 'remove' : 'add', + update: rawData == null ? 'defaultAllowReplacement' : 'allowReplacement', + }, + ]) + } + > + {anonymized ? i18n.YES : i18n.NO} + + ), + sortable: true, + width: '102px', + }, + { + field: FIELDS.FIELD, + name: i18n.FIELD, + sortable: true, + width: '260px', + }, + ]; + + return rawData == null + ? [...baseColumns, actionsColumn] + : [...baseColumns, valuesColumn, actionsColumn]; +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts new file mode 100644 index 0000000000000..e5cc77e1cd759 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts @@ -0,0 +1,677 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { getContextMenuPanels, PRIMARY_PANEL_ID, SECONDARY_PANEL_ID } from '.'; +import * as i18n from '../translations'; +import { ContextEditorRow } from '../types'; + +describe('getContextMenuPanels', () => { + const closePopover = jest.fn(); + const onListUpdated = jest.fn(); + const selected: ContextEditorRow[] = [ + { + allowed: true, + anonymized: true, + denied: false, + field: 'user.name', + rawValues: ['jodi'], + }, + ]; + + beforeEach(() => jest.clearAllMocks()); + + it('the first panel has a `primary-panel-id` when onlyDefaults is true', () => { + const onlyDefaults = true; + + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults, + }); + + expect(panels[0].id).toEqual(PRIMARY_PANEL_ID); + }); + + it('the first panel also has a `primary-panel-id` when onlyDefaults is false', () => { + const onlyDefaults = false; + + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults, + }); + + expect(panels[0].id).toEqual(PRIMARY_PANEL_ID); // first panel is always the primary panel + }); + + it('the second panel has a `secondary-panel-id` when onlyDefaults is false', () => { + const onlyDefaults = false; + + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults, + }); + + expect(panels[1].id).toEqual(SECONDARY_PANEL_ID); + }); + + it('the second panel is not rendered when onlyDefaults is true', () => { + const onlyDefaults = true; + + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults, + }); + + expect(panels.length).toEqual(1); + }); + + describe('allow by default', () => { + it('calls closePopover when allow by default is clicked', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const allowByDefaultItem = panels[1].items?.find( + (item) => item.name === i18n.ALLOW_BY_DEFAULT + ); + + allowByDefaultItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(closePopover).toHaveBeenCalled(); + }); + + it('calls onListUpdated to add the field to both the `allow` and `defaultAllow` lists', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const allowByDefaultItem = panels[1].items?.find( + (item) => item.name === i18n.ALLOW_BY_DEFAULT + ); + + allowByDefaultItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(onListUpdated).toHaveBeenCalledWith([ + { field: 'user.name', operation: 'add', update: 'allow' }, + { field: 'user.name', operation: 'add', update: 'defaultAllow' }, + ]); + }); + }); + + describe('deny by default', () => { + it('calls closePopover when deny by default is clicked', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const denyByDefaultItem = panels[1].items?.find((item) => item.name === i18n.DENY_BY_DEFAULT); + + denyByDefaultItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(closePopover).toHaveBeenCalled(); + }); + + it('calls onListUpdated to remove the field from both the `allow` and `defaultAllow` lists', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const denyByDefaultItem = panels[1].items?.find((item) => item.name === i18n.DENY_BY_DEFAULT); + + denyByDefaultItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(onListUpdated).toHaveBeenCalledWith([ + { field: 'user.name', operation: 'remove', update: 'allow' }, + { field: 'user.name', operation: 'remove', update: 'defaultAllow' }, + ]); + }); + }); + + describe('anonymize by default', () => { + it('calls closePopover when anonymize by default is clicked', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const anonymizeByDefaultItem = panels[1].items?.find( + (item) => item.name === i18n.ANONYMIZE_BY_DEFAULT + ); + + anonymizeByDefaultItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(closePopover).toHaveBeenCalled(); + }); + + it('calls onListUpdated to add the field to both the `allowReplacement` and `defaultAllowReplacement` lists', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const anonymizeByDefaultItem = panels[1].items?.find( + (item) => item.name === i18n.ANONYMIZE_BY_DEFAULT + ); + + anonymizeByDefaultItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(onListUpdated).toHaveBeenCalledWith([ + { field: 'user.name', operation: 'add', update: 'allowReplacement' }, + { field: 'user.name', operation: 'add', update: 'defaultAllowReplacement' }, + ]); + }); + }); + + describe('unanonymize by default', () => { + it('calls closePopover when unanonymize by default is clicked', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const unAnonymizeByDefaultItem = panels[1].items?.find( + (item) => item.name === i18n.UNANONYMIZE_BY_DEFAULT + ); + + unAnonymizeByDefaultItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(closePopover).toHaveBeenCalled(); + }); + + it('calls onListUpdated to remove the field from both the `allowReplacement` and `defaultAllowReplacement` lists', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const unAnonymizeByDefaultItem = panels[1].items?.find( + (item) => item.name === i18n.UNANONYMIZE_BY_DEFAULT + ); + + unAnonymizeByDefaultItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(onListUpdated).toHaveBeenCalledWith([ + { field: 'user.name', operation: 'remove', update: 'allowReplacement' }, + { field: 'user.name', operation: 'remove', update: 'defaultAllowReplacement' }, + ]); + }); + }); + + describe('allow', () => { + it('is disabled when `disableAlow` is true', () => { + const disableAllow = true; + + const panels = getContextMenuPanels({ + disableAllow, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const allowItem = panels[0].items?.find((item) => item.name === i18n.ALLOW); + + expect(allowItem?.disabled).toBe(true); + }); + + it('is NOT disabled when `disableAlow` is false', () => { + const disableAllow = false; + + const panels = getContextMenuPanels({ + disableAllow, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const allowItem = panels[0].items?.find((item) => item.name === i18n.ALLOW); + + expect(allowItem?.disabled).toBe(false); + }); + + it('calls closePopover when allow is clicked', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const allowItem = panels[0].items?.find((item) => item.name === i18n.ALLOW); + + allowItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(closePopover).toHaveBeenCalled(); + }); + + it('calls onListUpdated to add the field to the `allow` list', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const allowItem = panels[0].items?.find((item) => item.name === i18n.ALLOW); + + allowItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(onListUpdated).toHaveBeenCalledWith([ + { field: 'user.name', operation: 'add', update: 'allow' }, + ]); + }); + }); + + describe('deny', () => { + it('is disabled when `disableDeny` is true', () => { + const disableDeny = true; + + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const denyItem = panels[0].items?.find((item) => item.name === i18n.DENY); + + expect(denyItem?.disabled).toBe(true); + }); + + it('is NOT disabled when `disableDeny` is false', () => { + const disableDeny = false; + + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const denyItem = panels[0].items?.find((item) => item.name === i18n.DENY); + + expect(denyItem?.disabled).toBe(false); + }); + + it('calls closePopover when deny is clicked', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const denyByDefaultItem = panels[0].items?.find((item) => item.name === i18n.DENY); + + denyByDefaultItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(closePopover).toHaveBeenCalled(); + }); + + it('calls onListUpdated to remove the field from the `allow` list', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const denyItem = panels[0].items?.find((item) => item.name === i18n.DENY); + + denyItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(onListUpdated).toHaveBeenCalledWith([ + { field: 'user.name', operation: 'remove', update: 'allow' }, + ]); + }); + }); + + describe('anonymize', () => { + it('is disabled when `disableAnonymize` is true', () => { + const disableAnonymize = true; + + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const anonymizeItem = panels[0].items?.find((item) => item.name === i18n.ANONYMIZE); + + expect(anonymizeItem?.disabled).toBe(true); + }); + + it('is NOT disabled when `disableAnonymize` is false', () => { + const disableAnonymize = false; + + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const anonymizeItem = panels[0].items?.find((item) => item.name === i18n.ANONYMIZE); + + expect(anonymizeItem?.disabled).toBe(false); + }); + + it('calls closePopover when anonymize is clicked', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const anonymizeItem = panels[0].items?.find((item) => item.name === i18n.ANONYMIZE); + + anonymizeItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(closePopover).toHaveBeenCalled(); + }); + + it('calls onListUpdated to add the field to both the `allowReplacement` and `defaultAllowReplacement` lists', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const anonymizeItem = panels[0].items?.find((item) => item.name === i18n.ANONYMIZE); + + anonymizeItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(onListUpdated).toHaveBeenCalledWith([ + { field: 'user.name', operation: 'add', update: 'allowReplacement' }, + ]); + }); + }); + + describe('unanonymize', () => { + it('is disabled when `disableUnanonymize` is true', () => { + const disableUnanonymize = true; + + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const unanonymizeItem = panels[0].items?.find((item) => item.name === i18n.UNANONYMIZE); + + expect(unanonymizeItem?.disabled).toBe(true); + }); + + it('is NOT disabled when `disableUnanonymize` is false', () => { + const disableUnanonymize = false; + + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const unanonymizeItem = panels[0].items?.find((item) => item.name === i18n.UNANONYMIZE); + + expect(unanonymizeItem?.disabled).toBe(false); + }); + + it('calls closePopover when unanonymize is clicked', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const unAnonymizeItem = panels[0].items?.find((item) => item.name === i18n.UNANONYMIZE); + + unAnonymizeItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(closePopover).toHaveBeenCalled(); + }); + + it('calls onListUpdated to remove the field from the `allowReplacement` list', () => { + const panels = getContextMenuPanels({ + disableAllow: false, + disableAnonymize: false, + disableDeny: false, + disableUnanonymize: false, + closePopover, + onListUpdated, + selected, + onlyDefaults: false, + }); + + const unAnonymizeItem = panels[0].items?.find((item) => item.name === i18n.UNANONYMIZE); + + unAnonymizeItem?.onClick!( + new MouseEvent('click', { bubbles: true }) as unknown as React.MouseEvent< + HTMLHRElement, + MouseEvent + > + ); + + expect(onListUpdated).toHaveBeenCalledWith([ + { field: 'user.name', operation: 'remove', update: 'allowReplacement' }, + ]); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts new file mode 100644 index 0000000000000..a6afe0984d6e3 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts @@ -0,0 +1,223 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { EuiContextMenuPanelDescriptor } from '@elastic/eui'; + +import * as i18n from '../translations'; +import { BatchUpdateListItem, ContextEditorRow } from '../types'; + +export const PRIMARY_PANEL_ID = 'primary-panel-id'; +export const SECONDARY_PANEL_ID = 'secondary-panel-id'; + +export const getContextMenuPanels = ({ + disableAllow, + disableAnonymize, + disableDeny, + disableUnanonymize, + closePopover, + onListUpdated, + onlyDefaults, + selected, +}: { + disableAllow: boolean; + disableAnonymize: boolean; + disableDeny: boolean; + disableUnanonymize: boolean; + closePopover: () => void; + onListUpdated: (updates: BatchUpdateListItem[]) => void; + selected: ContextEditorRow[]; + onlyDefaults: boolean; +}): EuiContextMenuPanelDescriptor[] => { + const defaultsPanelId = onlyDefaults ? PRIMARY_PANEL_ID : SECONDARY_PANEL_ID; + const nonDefaultsPanelId = onlyDefaults ? SECONDARY_PANEL_ID : PRIMARY_PANEL_ID; + + const allowByDefault = [ + !onlyDefaults + ? { + icon: 'check', + name: i18n.ALLOW_BY_DEFAULT, + onClick: () => { + closePopover(); + + const updateAllow = selected.map(({ field }) => ({ + field, + operation: 'add', + update: 'allow', + })); + + const updateDefaultAllow = selected.map(({ field }) => ({ + field, + operation: 'add', + update: 'defaultAllow', + })); + + onListUpdated([...updateAllow, ...updateDefaultAllow]); + }, + } + : [], + ].flat(); + + const defaultsPanelItems: EuiContextMenuPanelDescriptor[] = [ + { + id: defaultsPanelId, + title: i18n.DEFAULTS, + items: [ + ...allowByDefault, + { + icon: 'cross', + name: i18n.DENY_BY_DEFAULT, + onClick: () => { + closePopover(); + + const updateAllow = selected.map(({ field }) => ({ + field, + operation: 'remove', + update: 'allow', + })); + + const updateDefaultAllow = selected.map(({ field }) => ({ + field, + operation: 'remove', + update: 'defaultAllow', + })); + + onListUpdated([...updateAllow, ...updateDefaultAllow]); + }, + }, + { + icon: 'eyeClosed', + name: i18n.ANONYMIZE_BY_DEFAULT, + onClick: () => { + closePopover(); + + const updateAllowReplacement = selected.map(({ field }) => ({ + field, + operation: 'add', + update: 'allowReplacement', + })); + + const updateDefaultAllowReplacement = selected.map( + ({ field }) => ({ + field, + operation: 'add', + update: 'defaultAllowReplacement', + }) + ); + + onListUpdated([...updateAllowReplacement, ...updateDefaultAllowReplacement]); + }, + }, + { + icon: 'eye', + name: i18n.UNANONYMIZE_BY_DEFAULT, + onClick: () => { + closePopover(); + + const updateAllowReplacement = selected.map(({ field }) => ({ + field, + operation: 'remove', + update: 'allowReplacement', + })); + + const updateDefaultAllowReplacement = selected.map( + ({ field }) => ({ + field, + operation: 'remove', + update: 'defaultAllowReplacement', + }) + ); + + onListUpdated([...updateAllowReplacement, ...updateDefaultAllowReplacement]); + }, + }, + ], + }, + ]; + + const nonDefaultsPanelItems: EuiContextMenuPanelDescriptor[] = [ + { + id: nonDefaultsPanelId, + items: [ + { + disabled: disableAllow, + icon: 'check', + name: i18n.ALLOW, + onClick: () => { + closePopover(); + + const updates = selected.map(({ field }) => ({ + field, + operation: 'add', + update: 'allow', + })); + + onListUpdated(updates); + }, + }, + { + disabled: disableDeny, + icon: 'cross', + name: i18n.DENY, + onClick: () => { + closePopover(); + + const updates = selected.map(({ field }) => ({ + field, + operation: 'remove', + update: 'allow', + })); + + onListUpdated(updates); + }, + }, + { + disabled: disableAnonymize, + icon: 'eyeClosed', + name: i18n.ANONYMIZE, + onClick: () => { + closePopover(); + + const updates = selected.map(({ field }) => ({ + field, + operation: 'add', + update: 'allowReplacement', + })); + + onListUpdated(updates); + }, + }, + { + disabled: disableUnanonymize, + icon: 'eye', + name: i18n.UNANONYMIZE, + onClick: () => { + closePopover(); + + const updates = selected.map(({ field }) => ({ + field, + operation: 'remove', + update: 'allowReplacement', + })); + + onListUpdated(updates); + }, + }, + { + isSeparator: true, + key: 'sep', + }, + { + name: i18n.DEFAULTS, + panel: defaultsPanelId, + }, + ], + }, + ...defaultsPanelItems, + ]; + + return onlyDefaults ? defaultsPanelItems : nonDefaultsPanelItems; +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts new file mode 100644 index 0000000000000..c8c35767f1e54 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { SelectedPromptContext } from '../../../assistant/prompt_context/types'; +import { ContextEditorRow } from '../types'; +import { getRows } from '.'; + +describe('getRows', () => { + const defaultArgs: { + allow: SelectedPromptContext['allow']; + allowReplacement: SelectedPromptContext['allowReplacement']; + rawData: Record | null; + } = { + allow: ['event.action', 'user.name', 'other.field'], // other.field is not in the rawData + allowReplacement: ['user.name', 'host.ip'], // host.ip is not in the rawData + rawData: { + 'event.category': ['process'], // event.category is not in the allow list, nor is it in the allowReplacement list + 'event.action': ['process_stopped', 'stop'], // event.action is in the allow list, but not the allowReplacement list + 'user.name': ['max'], // user.name is in the allow list and the allowReplacement list + }, + }; + + it('returns only the allowed fields if no rawData is provided', () => { + const expected: ContextEditorRow[] = [ + { + allowed: true, + anonymized: false, + denied: false, + field: 'event.action', + rawValues: [], + }, + { + allowed: true, + anonymized: false, + denied: false, + field: 'other.field', + rawValues: [], + }, + { + allowed: true, + anonymized: true, + denied: false, + field: 'user.name', + rawValues: [], + }, + ]; + + const nullRawData: { + allow: SelectedPromptContext['allow']; + allowReplacement: SelectedPromptContext['allowReplacement']; + rawData: Record | null; + } = { + ...defaultArgs, + rawData: null, + }; + + const rows = getRows(nullRawData); + + expect(rows).toEqual(expected); + }); + + it('returns the expected metadata and raw values', () => { + const expected: ContextEditorRow[] = [ + { + allowed: true, + anonymized: false, + denied: false, + field: 'event.action', + rawValues: ['process_stopped', 'stop'], + }, + { + allowed: false, + anonymized: false, + denied: true, + field: 'event.category', + rawValues: ['process'], + }, + { + allowed: true, + anonymized: true, + denied: false, + field: 'user.name', + rawValues: ['max'], + }, + ]; + + const rows = getRows(defaultArgs); + + expect(rows).toEqual(expected); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts new file mode 100644 index 0000000000000..279f75272372f --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { SelectedPromptContext } from '../../../assistant/prompt_context/types'; +import { isAllowed, isAnonymized, isDenied } from '../../helpers'; +import { ContextEditorRow } from '../types'; + +export const getRows = ({ + allow, + allowReplacement, + rawData, +}: { + allow: SelectedPromptContext['allow']; + allowReplacement: SelectedPromptContext['allowReplacement']; + rawData: Record | null; +}): ContextEditorRow[] => { + const allowReplacementSet = new Set(allowReplacement); + const allowSet = new Set(allow); + + if (rawData !== null && typeof rawData === 'object') { + const rawFields = Object.keys(rawData).sort(); + + return rawFields.reduce( + (acc, field) => [ + ...acc, + { + field, + allowed: isAllowed({ allowSet, field }), + anonymized: isAnonymized({ allowReplacementSet, field }), + denied: isDenied({ allowSet, field }), + rawValues: rawData[field], + }, + ], + [] + ); + } else { + return allow.sort().reduce( + (acc, field) => [ + ...acc, + { + field, + allowed: true, + anonymized: allowReplacementSet.has(field), + denied: false, + rawValues: [], + }, + ], + [] + ); + } +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx new file mode 100644 index 0000000000000..77ffe90ec8c97 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import React from 'react'; + +import { ContextEditor } from '.'; + +describe('ContextEditor', () => { + const allow = ['field1', 'field2']; + const allowReplacement = ['field1']; + const rawData = { field1: ['value1'], field2: ['value2'] }; + + const onListUpdated = jest.fn(); + + beforeEach(() => { + jest.clearAllMocks(); + + render( + + ); + }); + + it('renders the expected selected field count', () => { + expect(screen.getByTestId('selectedFields')).toHaveTextContent('Selected 0 fields'); + }); + + it('renders the select all fields button with the expected count', () => { + expect(screen.getByTestId('selectAllFields')).toHaveTextContent('Select all 2 fields'); + }); + + it('updates the table selection when "Select all n fields" is clicked', () => { + userEvent.click(screen.getByTestId('selectAllFields')); + + expect(screen.getByTestId('selectedFields')).toHaveTextContent('Selected 2 fields'); + }); + + it('calls onListUpdated with the expected values when the update button is clicked', () => { + userEvent.click(screen.getAllByTestId('allowed')[0]); + + expect(onListUpdated).toHaveBeenCalledWith([ + { + field: 'field1', + operation: 'remove', + update: 'allow', + }, + ]); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx new file mode 100644 index 0000000000000..1aab52a0d6432 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx @@ -0,0 +1,125 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { EuiInMemoryTable } from '@elastic/eui'; +import type { EuiSearchBarProps, EuiTableSelectionType } from '@elastic/eui'; +import React, { useCallback, useMemo, useRef, useState } from 'react'; + +import { getColumns } from './get_columns'; +import { getRows } from './get_rows'; +import { Toolbar } from './toolbar'; +import * as i18n from './translations'; +import { BatchUpdateListItem, ContextEditorRow, FIELDS, SortConfig } from './types'; + +export const DEFAULT_PAGE_SIZE = 10; + +const pagination = { + initialPageSize: DEFAULT_PAGE_SIZE, + pageSizeOptions: [5, DEFAULT_PAGE_SIZE, 25, 50], +}; + +const defaultSort: SortConfig = { + sort: { + direction: 'desc', + field: FIELDS.ALLOWED, + }, +}; + +export interface Props { + allow: string[]; + allowReplacement: string[]; + onListUpdated: (updates: BatchUpdateListItem[]) => void; + rawData: Record | null; +} + +const search: EuiSearchBarProps = { + box: { + incremental: true, + }, + filters: [ + { + field: FIELDS.ALLOWED, + type: 'is', + name: i18n.ALLOWED, + }, + { + field: FIELDS.ANONYMIZED, + type: 'is', + name: i18n.ANONYMIZED, + }, + ], +}; + +const ContextEditorComponent: React.FC = ({ + allow, + allowReplacement, + onListUpdated, + rawData, +}) => { + const [selected, setSelection] = useState([]); + const selectionValue: EuiTableSelectionType = useMemo( + () => ({ + selectable: () => true, + onSelectionChange: (newSelection) => setSelection(newSelection), + initialSelected: [], + }), + [] + ); + const tableRef = useRef | null>(null); + + const columns = useMemo(() => getColumns({ onListUpdated, rawData }), [onListUpdated, rawData]); + + const rows = useMemo( + () => + getRows({ + allow, + allowReplacement, + rawData, + }), + [allow, allowReplacement, rawData] + ); + + const onSelectAll = useCallback(() => { + tableRef.current?.setSelection(rows); // updates selection in the EuiInMemoryTable + + setTimeout(() => setSelection(rows), 0); // updates selection in the component state + }, [rows]); + + const toolbar = useMemo( + () => ( + + ), + [onListUpdated, onSelectAll, rawData, rows.length, selected] + ); + + return ( + + ); +}; + +ContextEditorComponent.displayName = 'ContextEditorComponent'; +export const ContextEditor = React.memo(ContextEditorComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx new file mode 100644 index 0000000000000..11b2488c096ad --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; + +import { Toolbar } from '.'; +import * as i18n from '../translations'; +import { ContextEditorRow } from '../types'; + +const selected: ContextEditorRow[] = [ + { + allowed: true, + anonymized: false, + denied: false, + field: 'event.action', + rawValues: ['process_stopped', 'stop'], + }, + { + allowed: false, + anonymized: false, + denied: true, + field: 'event.category', + rawValues: ['process'], + }, + { + allowed: true, + anonymized: true, + denied: false, + field: 'user.name', + rawValues: ['max'], + }, +]; + +describe('Toolbar', () => { + const defaultProps = { + onListUpdated: jest.fn(), + onlyDefaults: false, + onSelectAll: jest.fn(), + selected: [], // no rows selected + totalFields: 5, + }; + + it('displays the number of selected fields', () => { + const { getByText } = render(); + + const selectedCount = selected.length; + const selectedFieldsText = getByText(i18n.SELECTED_FIELDS(selectedCount)); + + expect(selectedFieldsText).toBeInTheDocument(); + }); + + it('disables bulk actions when no rows are selected', () => { + const { getByTestId } = render(); + + const bulkActionsButton = getByTestId('bulkActionsButton'); + + expect(bulkActionsButton).toBeDisabled(); + }); + + it('enables bulk actions when some fields are selected', () => { + const { getByTestId } = render(); + + const bulkActionsButton = getByTestId('bulkActionsButton'); + + expect(bulkActionsButton).not.toBeDisabled(); + }); + + it('calls onSelectAll when the Select All Fields button is clicked', () => { + const { getByText } = render(); + const selectAllButton = getByText(i18n.SELECT_ALL_FIELDS(defaultProps.totalFields)); + + fireEvent.click(selectAllButton); + + expect(defaultProps.onSelectAll).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx new file mode 100644 index 0000000000000..476005c8da5ba --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx @@ -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 { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import React from 'react'; + +import { BulkActions } from '../bulk_actions'; +import * as i18n from '../translations'; +import { BatchUpdateListItem, ContextEditorRow } from '../types'; + +export interface Props { + onListUpdated: (updates: BatchUpdateListItem[]) => void; + onlyDefaults: boolean; + onSelectAll: () => void; + selected: ContextEditorRow[]; + totalFields: number; +} + +const ToolbarComponent: React.FC = ({ + onListUpdated, + onlyDefaults, + onSelectAll, + selected, + totalFields, +}) => ( + + + + {i18n.SELECTED_FIELDS(selected.length)} + + + + + + {i18n.SELECT_ALL_FIELDS(totalFields)} + + + + + + + +); + +ToolbarComponent.displayName = 'ToolbarComponent'; + +export const Toolbar = React.memo(ToolbarComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts new file mode 100644 index 0000000000000..a48a52ee8092a --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts @@ -0,0 +1,146 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const ALL_ACTIONS = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.allActionsTooltip', + { + defaultMessage: 'All actions', + } +); + +export const ALLOW = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.allowAction', + { + defaultMessage: 'Allow', + } +); + +export const ALLOW_BY_DEFAULT = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.allowByDefaultAction', + { + defaultMessage: 'Allow by default', + } +); + +export const ALLOWED = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.allowedColumnTitle', + { + defaultMessage: 'Allowed', + } +); + +export const ALWAYS = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.alwaysSubmenu', + { + defaultMessage: 'Always', + } +); + +export const ANONYMIZE = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.anonymizeAction', + { + defaultMessage: 'Anonymize', + } +); + +export const ANONYMIZE_BY_DEFAULT = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.anonymizeByDefaultAction', + { + defaultMessage: 'Anonymize by default', + } +); + +export const ANONYMIZED = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.anonymizedColumnTitle', + { + defaultMessage: 'Anonymized', + } +); + +export const BULK_ACTIONS = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.bulkActions', + { + defaultMessage: 'Bulk actions', + } +); + +export const DEFAULTS = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.defaultsSubmenu', + { + defaultMessage: 'Defaults', + } +); + +export const DENY = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.denyAction', + { + defaultMessage: 'Deny', + } +); + +export const DENY_BY_DEFAULT = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.denyByDefaultAction', + { + defaultMessage: 'Deny by default', + } +); + +export const FIELD = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.fieldColumnTitle', + { + defaultMessage: 'Field', + } +); + +export const NO = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.noButtonLabel', + { + defaultMessage: 'No', + } +); + +export const SELECT_ALL_FIELDS = (totalFields: number) => + i18n.translate('xpack.elasticAssistant.dataAnonymizationEditor.contextEditor.selectAllFields', { + values: { totalFields }, + defaultMessage: 'Select all {totalFields} fields', + }); + +export const SELECTED_FIELDS = (selected: number) => + i18n.translate('xpack.elasticAssistant.dataAnonymizationEditor.contextEditor.selectedFields', { + values: { selected }, + defaultMessage: 'Selected {selected} fields', + }); + +export const UNANONYMIZE = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.unanonymizeAction', + { + defaultMessage: 'Unanonymize', + } +); + +export const UNANONYMIZE_BY_DEFAULT = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.unanonymizeByDefaultAction', + { + defaultMessage: 'Unanonymize by default', + } +); + +export const VALUES = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.valuesColumnTitle', + { + defaultMessage: 'Values', + } +); + +export const YES = i18n.translate( + 'xpack.elasticAssistant.assistant.dataAnonymizationEditor.contextEditor.yesButtonLabel', + { + defaultMessage: 'Yes', + } +); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts new file mode 100644 index 0000000000000..251c41db0396d --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Direction } from '@elastic/eui'; + +export interface ContextEditorRow { + /** Is the field is allowed to be included in the context sent to the assistant */ + allowed: boolean; + /** Are the field's values anonymized */ + anonymized: boolean; + /** Is the field is denied to be included in the context sent to the assistant */ + denied: boolean; + /** The name of the field, e.g. `user.name` */ + field: string; + /** The raw, NOT anonymized values */ + rawValues: string[]; +} + +export const FIELDS = { + ACTIONS: 'actions', + ALLOWED: 'allowed', + ANONYMIZED: 'anonymized', + DENIED: 'denied', + FIELD: 'field', + RAW_VALUES: 'rawValues', +}; + +export interface SortConfig { + sort: { + direction: Direction; + field: string; + }; +} + +/** The `field` in the specified `list` will be added or removed, as specified by the `operation` */ +export interface BatchUpdateListItem { + field: string; + operation: 'add' | 'remove'; + update: + | 'allow' + | 'allowReplacement' + | 'defaultAllow' + | 'defaultAllowReplacement' + | 'deny' + | 'denyReplacement'; +} diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts new file mode 100644 index 0000000000000..94d96cbbec685 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SelectedPromptContext } from '../../assistant/prompt_context/types'; +import type { Stats } from '../helpers'; +import { getStats } from '.'; + +describe('getStats', () => { + it('returns ZERO_STATS for string rawData', () => { + const context: SelectedPromptContext = { + allow: [], + allowReplacement: [], + promptContextId: 'abcd', + rawData: 'this will not be anonymized', + }; + + const expectedResult: Stats = { + allowed: 0, + anonymized: 0, + denied: 0, + total: 0, + }; + + expect(getStats(context)).toEqual(expectedResult); + }); + + it('returns the expected stats for object rawData', () => { + const context: SelectedPromptContext = { + allow: ['event.category', 'event.action', 'user.name'], + allowReplacement: ['user.name', 'host.ip'], // only user.name is allowed to be sent + promptContextId: 'abcd', + rawData: { + 'event.category': ['process'], + 'event.action': ['process_stopped'], + 'user.name': ['sean'], + other: ['this', 'is', 'not', 'allowed'], + }, + }; + + const expectedResult: Stats = { + allowed: 3, + anonymized: 1, + denied: 1, + total: 4, + }; + + expect(getStats(context)).toEqual(expectedResult); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts new file mode 100644 index 0000000000000..fbed27e5ac740 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SelectedPromptContext } from '../../assistant/prompt_context/types'; +import { Stats, isAllowed, isAnonymized, isDenied } from '../helpers'; + +export const getStats = ({ allow, allowReplacement, rawData }: SelectedPromptContext): Stats => { + const ZERO_STATS = { + allowed: 0, + anonymized: 0, + denied: 0, + total: 0, + }; + + if (typeof rawData === 'string') { + return ZERO_STATS; + } else { + const rawFields = Object.keys(rawData); + + const allowReplacementSet = new Set(allowReplacement); + const allowSet = new Set(allow); + + return rawFields.reduce( + (acc, field) => ({ + allowed: acc.allowed + (isAllowed({ allowSet, field }) ? 1 : 0), + anonymized: + acc.anonymized + + (isAllowed({ allowSet, field }) && isAnonymized({ allowReplacementSet, field }) ? 1 : 0), + denied: acc.denied + (isDenied({ allowSet, field }) ? 1 : 0), + total: acc.total + 1, + }), + ZERO_STATS + ); + } +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts new file mode 100644 index 0000000000000..77031bccdf8ae --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts @@ -0,0 +1,304 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { SelectedPromptContext } from '../../assistant/prompt_context/types'; +import { + isAllowed, + isAnonymized, + isDenied, + getIsDataAnonymizable, + updateDefaultList, + updateDefaults, + updateList, + updateSelectedPromptContext, +} from '.'; +import { BatchUpdateListItem } from '../context_editor/types'; + +describe('helpers', () => { + beforeEach(() => jest.clearAllMocks()); + + describe('getIsDataAnonymizable', () => { + it('returns false for string data', () => { + const rawData = 'this will not be anonymized'; + + const result = getIsDataAnonymizable(rawData); + + expect(result).toBe(false); + }); + + it('returns true for key / values data', () => { + const rawData = { key: ['value1', 'value2'] }; + + const result = getIsDataAnonymizable(rawData); + + expect(result).toBe(true); + }); + }); + + describe('isAllowed', () => { + it('returns true when the field is present in the allowSet', () => { + const allowSet = new Set(['fieldName1', 'fieldName2', 'fieldName3']); + + expect(isAllowed({ allowSet, field: 'fieldName1' })).toBe(true); + }); + + it('returns false when the field is NOT present in the allowSet', () => { + const allowSet = new Set(['fieldName1', 'fieldName2', 'fieldName3']); + + expect(isAllowed({ allowSet, field: 'nonexistentField' })).toBe(false); + }); + }); + + describe('isDenied', () => { + it('returns true when the field is NOT in the allowSet', () => { + const allowSet = new Set(['field1', 'field2']); + const field = 'field3'; + + expect(isDenied({ allowSet, field })).toBe(true); + }); + + it('returns false when the field is in the allowSet', () => { + const allowSet = new Set(['field1', 'field2']); + const field = 'field1'; + + expect(isDenied({ allowSet, field })).toBe(false); + }); + + it('returns true for an empty allowSet', () => { + const allowSet = new Set(); + const field = 'field1'; + + expect(isDenied({ allowSet, field })).toBe(true); + }); + + it('returns false when the field is an empty string and allowSet contains the empty string', () => { + const allowSet = new Set(['', 'field1']); + const field = ''; + + expect(isDenied({ allowSet, field })).toBe(false); + }); + }); + + describe('isAnonymized', () => { + const allowReplacementSet = new Set(['user.name', 'host.name']); + + it('returns true when the field is in the allowReplacementSet', () => { + const field = 'user.name'; + + expect(isAnonymized({ allowReplacementSet, field })).toBe(true); + }); + + it('returns false when the field is NOT in the allowReplacementSet', () => { + const field = 'foozle'; + + expect(isAnonymized({ allowReplacementSet, field })).toBe(false); + }); + + it('returns false when allowReplacementSet is empty', () => { + const emptySet = new Set(); + const field = 'user.name'; + + expect(isAnonymized({ allowReplacementSet: emptySet, field })).toBe(false); + }); + }); + + describe('updateList', () => { + it('adds a new field to the list when the operation is `add`', () => { + const result = updateList({ + field: 'newField', + list: ['field1', 'field2'], + operation: 'add', + }); + + expect(result).toEqual(['field1', 'field2', 'newField']); + }); + + it('does NOT add a duplicate field to the list when the operation is `add`', () => { + const result = updateList({ + field: 'field1', + list: ['field1', 'field2'], + operation: 'add', + }); + + expect(result).toEqual(['field1', 'field2']); + }); + + it('removes an existing field from the list when the operation is `remove`', () => { + const result = updateList({ + field: 'field1', + list: ['field1', 'field2'], + operation: 'remove', + }); + + expect(result).toEqual(['field2']); + }); + + it('should NOT modify the list when removing a non-existent field', () => { + const result = updateList({ + field: 'host.name', + list: ['field1', 'field2'], + operation: 'remove', + }); + + expect(result).toEqual(['field1', 'field2']); + }); + }); + + describe('updateSelectedPromptContext', () => { + const selectedPromptContext: SelectedPromptContext = { + allow: ['user.name', 'event.category'], + allowReplacement: ['user.name'], + promptContextId: 'testId', + rawData: {}, + }; + + it('updates the allow list when update is `allow` and the operation is `add`', () => { + const result = updateSelectedPromptContext({ + field: 'event.action', + operation: 'add', + selectedPromptContext, + update: 'allow', + }); + + expect(result.allow).toEqual(['user.name', 'event.category', 'event.action']); + }); + + it('updates the allow list when update is `allow` and the operation is `remove`', () => { + const result = updateSelectedPromptContext({ + field: 'user.name', + operation: 'remove', + selectedPromptContext, + update: 'allow', + }); + + expect(result.allow).toEqual(['event.category']); + }); + + it('updates the allowReplacement list when update is `allowReplacement` and the operation is `add`', () => { + const result = updateSelectedPromptContext({ + field: 'event.type', + operation: 'add', + selectedPromptContext, + update: 'allowReplacement', + }); + expect(result.allowReplacement).toEqual(['user.name', 'event.type']); + }); + + it('updates the allowReplacement list when update is `allowReplacement` and the operation is `remove`', () => { + const result = updateSelectedPromptContext({ + field: 'user.name', + operation: 'remove', + selectedPromptContext, + update: 'allowReplacement', + }); + expect(result.allowReplacement).toEqual([]); + }); + + it('does not update selectedPromptContext when update is not "allow" or "allowReplacement"', () => { + const result = updateSelectedPromptContext({ + field: 'user.name', + operation: 'add', + selectedPromptContext, + update: 'deny', + }); + + expect(result).toEqual(selectedPromptContext); + }); + }); + + describe('updateDefaultList', () => { + it('updates the `defaultAllow` list to add a field when the operation is add', () => { + const currentList = ['test1', 'test2']; + const setDefaultList = jest.fn(); + const update = 'defaultAllow'; + const updates: BatchUpdateListItem[] = [{ field: 'test3', operation: 'add', update }]; + + updateDefaultList({ currentList, setDefaultList, update, updates }); + + expect(setDefaultList).toBeCalledWith([...currentList, 'test3']); + }); + + it('updates the `defaultAllow` list to remove a field when the operation is remove', () => { + const currentList = ['test1', 'test2']; + const setDefaultList = jest.fn(); + const update = 'defaultAllow'; + const updates: BatchUpdateListItem[] = [{ field: 'test1', operation: 'remove', update }]; + + updateDefaultList({ currentList, setDefaultList, update, updates }); + + expect(setDefaultList).toBeCalledWith(['test2']); + }); + + it('does NOT invoke `setDefaultList` when `update` does NOT match any of the batched `updates` types', () => { + const currentList = ['test1', 'test2']; + const setDefaultList = jest.fn(); + const update = 'allow'; + const updates: BatchUpdateListItem[] = [ + { field: 'test1', operation: 'remove', update: 'defaultAllow' }, // update does not match + ]; + + updateDefaultList({ currentList, setDefaultList, update, updates }); + + expect(setDefaultList).not.toBeCalled(); + }); + + it('does NOT invoke `setDefaultList` when `updates` is empty', () => { + const currentList = ['test1', 'test2']; + const setDefaultList = jest.fn(); + const update = 'defaultAllow'; + const updates: BatchUpdateListItem[] = []; // no updates + + updateDefaultList({ currentList, setDefaultList, update, updates }); + + expect(setDefaultList).not.toBeCalled(); + }); + }); + + describe('updateDefaults', () => { + const setDefaultAllow = jest.fn(); + const setDefaultAllowReplacement = jest.fn(); + + const defaultAllow = ['field1', 'field2']; + const defaultAllowReplacement = ['field2']; + const batchUpdateListItems: BatchUpdateListItem[] = [ + { + field: 'field1', + operation: 'remove', + update: 'defaultAllow', + }, + { + field: 'host.name', + operation: 'add', + update: 'defaultAllowReplacement', + }, + ]; + + it('updates defaultAllow with filtered updates', () => { + updateDefaults({ + defaultAllow, + defaultAllowReplacement, + setDefaultAllow, + setDefaultAllowReplacement, + updates: batchUpdateListItems, + }); + + expect(setDefaultAllow).toHaveBeenCalledWith(['field2']); + }); + + it('updates defaultAllowReplacement with filtered updates', () => { + updateDefaults({ + defaultAllow, + defaultAllowReplacement, + setDefaultAllow, + setDefaultAllowReplacement, + updates: batchUpdateListItems, + }); + + expect(setDefaultAllowReplacement).toHaveBeenCalledWith(['field2', 'host.name']); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts new file mode 100644 index 0000000000000..389ba9ce421b7 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts @@ -0,0 +1,135 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { SelectedPromptContext } from '../../assistant/prompt_context/types'; +import type { BatchUpdateListItem } from '../context_editor/types'; + +export const getIsDataAnonymizable = (rawData: string | Record): boolean => + typeof rawData !== 'string'; + +export interface Stats { + allowed: number; + anonymized: number; + denied: number; + total: number; +} + +export const isAllowed = ({ allowSet, field }: { allowSet: Set; field: string }): boolean => + allowSet.has(field); + +export const isDenied = ({ allowSet, field }: { allowSet: Set; field: string }): boolean => + !allowSet.has(field); + +export const isAnonymized = ({ + allowReplacementSet, + field, +}: { + allowReplacementSet: Set; + field: string; +}): boolean => allowReplacementSet.has(field); + +export const updateList = ({ + field, + list, + operation, +}: { + field: string; + list: string[]; + operation: 'add' | 'remove'; +}): string[] => { + if (operation === 'add') { + return list.includes(field) ? list : [...list, field]; + } else { + return list.filter((x) => x !== field); + } +}; + +export const updateSelectedPromptContext = ({ + field, + operation, + selectedPromptContext, + update, +}: { + field: string; + operation: 'add' | 'remove'; + selectedPromptContext: SelectedPromptContext; + update: + | 'allow' + | 'allowReplacement' + | 'defaultAllow' + | 'defaultAllowReplacement' + | 'deny' + | 'denyReplacement'; +}): SelectedPromptContext => { + const { allow, allowReplacement } = selectedPromptContext; + + switch (update) { + case 'allow': + return { + ...selectedPromptContext, + allow: updateList({ field, list: allow, operation }), + }; + case 'allowReplacement': + return { + ...selectedPromptContext, + allowReplacement: updateList({ field, list: allowReplacement, operation }), + }; + default: + return selectedPromptContext; + } +}; + +export const updateDefaultList = ({ + currentList, + setDefaultList, + update, + updates, +}: { + currentList: string[]; + setDefaultList: React.Dispatch>; + update: 'allow' | 'allowReplacement' | 'defaultAllow' | 'defaultAllowReplacement' | 'deny'; + updates: BatchUpdateListItem[]; +}): void => { + const filteredUpdates = updates.filter((x) => x.update === update); + + if (filteredUpdates.length > 0) { + const updatedList = filteredUpdates.reduce( + (acc, { field, operation }) => updateList({ field, list: acc, operation }), + currentList + ); + + setDefaultList(updatedList); + } +}; + +export const updateDefaults = ({ + defaultAllow, + defaultAllowReplacement, + setDefaultAllow, + setDefaultAllowReplacement, + updates, +}: { + defaultAllow: string[]; + defaultAllowReplacement: string[]; + setDefaultAllow: React.Dispatch>; + setDefaultAllowReplacement: React.Dispatch>; + updates: BatchUpdateListItem[]; +}): void => { + updateDefaultList({ + currentList: defaultAllow, + setDefaultList: setDefaultAllow, + update: 'defaultAllow', + updates, + }); + + updateDefaultList({ + currentList: defaultAllowReplacement, + setDefaultList: setDefaultAllowReplacement, + update: 'defaultAllowReplacement', + updates, + }); +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx new file mode 100644 index 0000000000000..84a36b3fb8454 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + +import { SelectedPromptContext } from '../assistant/prompt_context/types'; +import { TestProviders } from '../mock/test_providers/test_providers'; +import { DataAnonymizationEditor } from '.'; + +describe('DataAnonymizationEditor', () => { + const mockSelectedPromptContext: SelectedPromptContext = { + allow: ['field1', 'field2'], + allowReplacement: ['field1'], + promptContextId: 'test-id', + rawData: 'test-raw-data', + }; + + it('renders stats', () => { + render( + + + + ); + + expect(screen.getByTestId('stats')).toBeInTheDocument(); + }); + + describe('when rawData is a string (non-anonymized data)', () => { + it('renders the ReadOnlyContextViewer when rawData is (non-anonymized data)', () => { + render( + + + + ); + + expect(screen.getByTestId('readOnlyContextViewer')).toBeInTheDocument(); + }); + + it('does NOT render the ContextEditor when rawData is non-anonymized data', () => { + render( + + + + ); + + expect(screen.queryByTestId('contextEditor')).not.toBeInTheDocument(); + }); + }); + + describe('when rawData is a `Record` (anonymized data)', () => { + const setSelectedPromptContexts = jest.fn(); + const mockRawData: Record = { + field1: ['value1', 'value2'], + field2: ['value3', 'value4', 'value5'], + field3: ['value6'], + }; + + const selectedPromptContextWithAnonymized: SelectedPromptContext = { + ...mockSelectedPromptContext, + rawData: mockRawData, + }; + + beforeEach(() => { + render( + + + + ); + }); + + it('renders the ContextEditor when rawData is anonymized data', () => { + expect(screen.getByTestId('contextEditor')).toBeInTheDocument(); + }); + + it('does NOT render the ReadOnlyContextViewer when rawData is anonymized data', () => { + expect(screen.queryByTestId('readOnlyContextViewer')).not.toBeInTheDocument(); + }); + + it('calls setSelectedPromptContexts when a field is toggled', () => { + userEvent.click(screen.getAllByTestId('allowed')[0]); // toggle the first field + + expect(setSelectedPromptContexts).toBeCalled(); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx new file mode 100644 index 0000000000000..089e316f4795f --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx @@ -0,0 +1,102 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { EuiSpacer } from '@elastic/eui'; +import React, { useCallback, useMemo } from 'react'; +// eslint-disable-next-line @kbn/eslint/module_migration +import styled from 'styled-components'; + +import { useAssistantContext } from '../assistant_context'; +import type { SelectedPromptContext } from '../assistant/prompt_context/types'; +import { ContextEditor } from './context_editor'; +import { BatchUpdateListItem } from './context_editor/types'; +import { getIsDataAnonymizable, updateDefaults, updateSelectedPromptContext } from './helpers'; +import { ReadOnlyContextViewer } from './read_only_context_viewer'; +import { Stats } from './stats'; + +const EditorContainer = styled.div` + overflow-x: auto; +`; + +export interface Props { + selectedPromptContext: SelectedPromptContext; + setSelectedPromptContexts: React.Dispatch< + React.SetStateAction> + >; +} + +const DataAnonymizationEditorComponent: React.FC = ({ + selectedPromptContext, + setSelectedPromptContexts, +}) => { + const { defaultAllow, defaultAllowReplacement, setDefaultAllow, setDefaultAllowReplacement } = + useAssistantContext(); + const isDataAnonymizable = useMemo( + () => getIsDataAnonymizable(selectedPromptContext.rawData), + [selectedPromptContext] + ); + + const onListUpdated = useCallback( + (updates: BatchUpdateListItem[]) => { + const updatedPromptContext = updates.reduce( + (acc, { field, operation, update }) => + updateSelectedPromptContext({ + field, + operation, + selectedPromptContext: acc, + update, + }), + selectedPromptContext + ); + + setSelectedPromptContexts((prev) => ({ + ...prev, + [selectedPromptContext.promptContextId]: updatedPromptContext, + })); + + updateDefaults({ + defaultAllow, + defaultAllowReplacement, + setDefaultAllow, + setDefaultAllowReplacement, + updates, + }); + }, + [ + defaultAllow, + defaultAllowReplacement, + selectedPromptContext, + setDefaultAllow, + setDefaultAllowReplacement, + setSelectedPromptContexts, + ] + ); + + return ( + + + + + + {typeof selectedPromptContext.rawData === 'string' ? ( + + ) : ( + + )} + + ); +}; + +export const DataAnonymizationEditor = React.memo(DataAnonymizationEditorComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.test.tsx new file mode 100644 index 0000000000000..101b5058b5481 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.test.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, screen } from '@testing-library/react'; + +import { SYSTEM_PROMPT_CONTEXT_NON_I18N } from '../../content/prompts/system/translations'; +import { ReadOnlyContextViewer, Props } from '.'; + +const defaultProps: Props = { + rawData: 'this content is NOT anonymized', +}; + +describe('ReadOnlyContextViewer', () => { + it('renders the context with the correct formatting', () => { + render(); + + const contextBlock = screen.getByTestId('readOnlyContextViewer'); + + expect(contextBlock.textContent).toBe(SYSTEM_PROMPT_CONTEXT_NON_I18N(defaultProps.rawData)); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx new file mode 100644 index 0000000000000..0fd2da1942bc5 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiCodeBlock } from '@elastic/eui'; +import React from 'react'; + +import { SYSTEM_PROMPT_CONTEXT_NON_I18N } from '../../content/prompts/system/translations'; + +export interface Props { + rawData: string; +} + +const ReadOnlyContextViewerComponent: React.FC = ({ rawData }) => { + return ( + + {SYSTEM_PROMPT_CONTEXT_NON_I18N(rawData)} + + ); +}; + +ReadOnlyContextViewerComponent.displayName = 'ReadOnlyContextViewerComponent'; + +export const ReadOnlyContextViewer = React.memo(ReadOnlyContextViewerComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx new file mode 100644 index 0000000000000..8f5b3506c5054 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import React from 'react'; + +import { AllowedStat } from '.'; +import * as i18n from './translations'; + +describe('AllowedStat', () => { + const defaultProps = { + allowed: 3, + total: 5, + }; + + it('renders the expected stat content', () => { + render(); + + expect(screen.getByTestId('allowedStat')).toHaveTextContent('3Allowed'); + }); + + it('displays the correct tooltip content', async () => { + render(); + + userEvent.hover(screen.getByTestId('allowedStat')); + + await waitFor(() => { + expect(screen.getByText(i18n.ALLOWED_TOOLTIP(defaultProps))).toBeInTheDocument(); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx new file mode 100644 index 0000000000000..096617d17422a --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx @@ -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 { EuiStat, EuiToolTip } from '@elastic/eui'; +import React, { useMemo } from 'react'; + +import { TITLE_SIZE } from '../constants'; +import * as i18n from './translations'; + +interface Props { + allowed: number; + total: number; +} + +const AllowedStatComponent: React.FC = ({ allowed, total }) => { + const tooltipContent = useMemo(() => i18n.ALLOWED_TOOLTIP({ allowed, total }), [allowed, total]); + + return ( + + + + ); +}; + +AllowedStatComponent.displayName = 'AllowedStatComponent'; + +export const AllowedStat = React.memo(AllowedStatComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts new file mode 100644 index 0000000000000..f9e9a26952528 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const ALLOWED_TOOLTIP = ({ allowed, total }: { allowed: number; total: number }) => + i18n.translate( + 'xpack.elasticAssistant.dataAnonymizationEditor.stats.allowedStat.allowedTooltip', + { + values: { allowed, total }, + defaultMessage: + '{allowed} of {total} fields in this context are allowed to be included in the conversation', + } + ); + +export const ALLOWED = i18n.translate( + 'xpack.elasticAssistant.dataAnonymizationEditor.stats.allowedStat.allowedDescription', + { + defaultMessage: 'Allowed', + } +); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts new file mode 100644 index 0000000000000..cbddce86cfd37 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getColor, getTooltipContent } from './helpers'; + +describe('helpers', () => { + describe('getColor', () => { + it('returns `default` when isDataAnonymizable is true', () => { + const result = getColor(true); + + expect(result).toBe('default'); + }); + + it('returns `subdued` when isDataAnonymizable is false', () => { + const result = getColor(false); + + expect(result).toBe('subdued'); + }); + }); + + describe('getTooltipContent', () => { + it('informs the user that the context cannot be anonymized when isDataAnonymizable is false', () => { + const result = getTooltipContent({ anonymized: 0, isDataAnonymizable: false }); + + expect(result).toEqual('This context cannot be anonymized'); + }); + + it('returns the expected message when the data is anonymizable, but no data has been anonymized', () => { + const result = getTooltipContent({ anonymized: 0, isDataAnonymizable: true }); + expect(result).toEqual( + 'Select fields to be replaced with random values. Responses are automatically translated back to the original values.' + ); + }); + + it('returns the correct plural form of "field" when one field has been anonymized', () => { + const result = getTooltipContent({ anonymized: 1, isDataAnonymizable: true }); + expect(result).toEqual( + '1 field in this context will be replaced with random values. Responses are automatically translated back to the original values.' + ); + }); + + it('returns the correct plural form of "field" when more than one field has been anonymized', () => { + const result = getTooltipContent({ anonymized: 2, isDataAnonymizable: true }); + expect(result).toEqual( + '2 fields in this context will be replaced with random values. Responses are automatically translated back to the original values.' + ); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts new file mode 100644 index 0000000000000..bfffd9a1c5c13 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as i18n from './translations'; + +export const getColor = (isDataAnonymizable: boolean): 'default' | 'subdued' => + isDataAnonymizable ? 'default' : 'subdued'; + +export const getTooltipContent = ({ + anonymized, + isDataAnonymizable, +}: { + anonymized: number; + isDataAnonymizable: boolean; +}): string => + !isDataAnonymizable || anonymized === 0 + ? i18n.NONE_OF_THE_DATA_WILL_BE_ANONYMIZED(isDataAnonymizable) + : i18n.FIELDS_WILL_BE_ANONYMIZED(anonymized); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx new file mode 100644 index 0000000000000..a4b2b957d04c7 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { EuiToolTip } from '@elastic/eui'; +import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import React from 'react'; + +import { getTooltipContent } from './helpers'; +import * as i18n from './translations'; +import { AnonymizedStat } from '.'; +import { TestProviders } from '../../../mock/test_providers/test_providers'; + +const defaultProps = { + anonymized: 0, + isDataAnonymizable: false, + showIcon: false, +}; + +describe('AnonymizedStat', () => { + it('renders the expected content when the data is NOT anonymizable', () => { + render( + + + + ); + + expect(screen.getByTestId('anonymizedFieldsStat')).toHaveTextContent('0Anonymized'); + }); + + it('shows the anonymization icon when showIcon is true', () => { + render( + + + + ); + + expect(screen.getByTestId('anonymizationIcon')).toBeInTheDocument(); + }); + + it('does NOT show the anonymization icon when showIcon is false', () => { + render( + + + + ); + + expect(screen.queryByTestId('anonymizationIcon')).not.toBeInTheDocument(); + }); + + it('shows the correct tooltip content when anonymized is 0 and isDataAnonymizable is false', async () => { + render( + + + + ); + + userEvent.hover(screen.getByTestId('anonymizedFieldsStat')); + + await waitFor(() => { + expect(screen.getByText(i18n.NONE_OF_THE_DATA_WILL_BE_ANONYMIZED(false))).toBeInTheDocument(); + }); + }); + + it('shows correct tooltip content when anonymized is positive and isDataAnonymizable is true', async () => { + const anonymized = 3; + const isDataAnonymizable = true; + + render( + + + + ); + + userEvent.hover(screen.getByTestId('anonymizedFieldsStat')); + + await waitFor(() => { + expect(screen.getByText(i18n.FIELDS_WILL_BE_ANONYMIZED(anonymized))).toBeInTheDocument(); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx new file mode 100644 index 0000000000000..574bc9aafc190 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiStat, EuiText, EuiToolTip } from '@elastic/eui'; +import React, { useMemo } from 'react'; +// eslint-disable-next-line @kbn/eslint/module_migration +import styled from 'styled-components'; + +import { getColor, getTooltipContent } from './helpers'; +import { TITLE_SIZE } from '../constants'; +import * as i18n from './translations'; + +const ANONYMIZATION_ICON = 'eyeClosed'; + +const AnonymizationIconFlexItem = styled(EuiFlexItem)` + margin-right: ${({ theme }) => theme.eui.euiSizeS}; +`; + +interface Props { + anonymized: number; + isDataAnonymizable: boolean; + showIcon?: boolean; +} + +const AnonymizedStatComponent: React.FC = ({ + anonymized, + isDataAnonymizable, + showIcon = false, +}) => { + const color = useMemo(() => getColor(isDataAnonymizable), [isDataAnonymizable]); + + const tooltipContent = useMemo( + () => getTooltipContent({ anonymized, isDataAnonymizable }), + [anonymized, isDataAnonymizable] + ); + + const description = useMemo( + () => ( + + {showIcon && ( + + + + )} + + + + {i18n.ANONYMIZED_FIELDS} + + + + ), + [color, showIcon] + ); + + return ( + + + + ); +}; + +AnonymizedStatComponent.displayName = 'AnonymizedStatComponent'; + +export const AnonymizedStat = React.memo(AnonymizedStatComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts new file mode 100644 index 0000000000000..2decce2c7b794 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const ANONYMIZED_FIELDS = i18n.translate( + 'xpack.elasticAssistant.dataAnonymizationEditor.stats.anonymizedStat.anonymizeFieldsdDescription', + { + defaultMessage: 'Anonymized', + } +); + +export const FIELDS_WILL_BE_ANONYMIZED = (anonymized: number) => + i18n.translate( + 'xpack.elasticAssistant.dataAnonymizationEditor.stats.anonymizedStat.fieldsWillBeAnonymizedTooltip', + { + values: { anonymized }, + defaultMessage: + '{anonymized} {anonymized, plural, =1 {field} other {fields}} in this context will be replaced with random values. Responses are automatically translated back to the original values.', + } + ); + +export const NONE_OF_THE_DATA_WILL_BE_ANONYMIZED = (isDataAnonymizable: boolean) => + i18n.translate( + 'xpack.elasticAssistant.dataAnonymizationEditor.stats.anonymizedStat.noneOfTheDataWillBeAnonymizedTooltip', + { + values: { isDataAnonymizable }, + defaultMessage: + '{isDataAnonymizable, select, true {Select fields to be replaced with random values. Responses are automatically translated back to the original values.} other {This context cannot be anonymized}}', + } + ); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx new file mode 100644 index 0000000000000..a969696622e4d --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import React from 'react'; + +import { AvailableStat } from '.'; +import * as i18n from './translations'; + +describe('AvailableStat component', () => { + const total = 5; + + it('renders the expected stat content', () => { + render(); + + expect(screen.getByTestId('availableStat')).toHaveTextContent(`${total}Available`); + }); + + it('displays the tooltip with the correct content', async () => { + render(); + + userEvent.hover(screen.getByTestId('availableStat')); + + await waitFor(() => { + const tooltipContent = i18n.AVAILABLE_TOOLTIP(total); + + expect(screen.getByText(tooltipContent)).toBeInTheDocument(); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx new file mode 100644 index 0000000000000..d675758951ca8 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiStat, EuiToolTip } from '@elastic/eui'; +import React, { useMemo } from 'react'; + +import { TITLE_SIZE } from '../constants'; +import * as i18n from './translations'; + +interface Props { + total: number; +} + +const AvailableStatComponent: React.FC = ({ total }) => { + const tooltipContent = useMemo(() => i18n.AVAILABLE_TOOLTIP(total), [total]); + + return ( + + + + ); +}; + +AvailableStatComponent.displayName = 'AvailableStatComponent'; + +export const AvailableStat = React.memo(AvailableStatComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts new file mode 100644 index 0000000000000..06e2343c98794 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const AVAILABLE_TOOLTIP = (total: number) => + i18n.translate( + 'xpack.elasticAssistant.dataAnonymizationEditor.stats.availableStat.availableTooltip', + { + values: { total }, + defaultMessage: + '{total} fields in this context are available to be included in the conversation', + } + ); + +export const AVAILABLE = i18n.translate( + 'xpack.elasticAssistant.dataAnonymizationEditor.stats.availableStat.availableDescription', + { + defaultMessage: 'Available', + } +); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts new file mode 100644 index 0000000000000..ba1e02e569bc2 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.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 const TITLE_SIZE = 'xs'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx new file mode 100644 index 0000000000000..c1980a55e410d --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, screen } from '@testing-library/react'; + +import { SelectedPromptContext } from '../../assistant/prompt_context/types'; +import { TestProviders } from '../../mock/test_providers/test_providers'; +import { Stats } from '.'; + +describe('Stats', () => { + const selectedPromptContext: SelectedPromptContext = { + allow: ['field1', 'field2'], + allowReplacement: ['field1'], + promptContextId: 'abcd', + rawData: { + field1: ['value1', 'value2'], + field2: ['value3, value4', 'value5'], + field3: ['value6'], + }, + }; + + it('renders the expected allowed stat content', () => { + render( + + + + ); + + expect(screen.getByTestId('allowedStat')).toHaveTextContent('2Allowed'); + }); + + it('renders the expected anonymized stat content', () => { + render( + + + + ); + + expect(screen.getByTestId('anonymizedFieldsStat')).toHaveTextContent('1Anonymized'); + }); + + it('renders the expected available stat content', () => { + render( + + + + ); + + expect(screen.getByTestId('availableStat')).toHaveTextContent('3Available'); + }); + + it('should not display the allowed stat when isDataAnonymizable is false', () => { + render( + + + + ); + + expect(screen.queryByTestId('allowedStat')).not.toBeInTheDocument(); + }); + + it('should not display the available stat when isDataAnonymizable is false', () => { + render( + + + + ); + + expect(screen.queryByTestId('availableStat')).not.toBeInTheDocument(); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx new file mode 100644 index 0000000000000..b0a27e271cdf7 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import React, { useMemo } from 'react'; +// eslint-disable-next-line @kbn/eslint/module_migration +import styled from 'styled-components'; + +import { AllowedStat } from './allowed_stat'; +import { AnonymizedStat } from './anonymized_stat'; +import type { SelectedPromptContext } from '../../assistant/prompt_context/types'; +import { getStats } from '../get_stats'; +import { AvailableStat } from './available_stat'; + +const StatFlexItem = styled(EuiFlexItem)` + margin-right: ${({ theme }) => theme.eui.euiSizeL}; +`; + +interface Props { + isDataAnonymizable: boolean; + selectedPromptContext: SelectedPromptContext; +} + +const StatsComponent: React.FC = ({ isDataAnonymizable, selectedPromptContext }) => { + const { allowed, anonymized, total } = useMemo( + () => getStats(selectedPromptContext), + [selectedPromptContext] + ); + + return ( + + {isDataAnonymizable && ( + + + + )} + + + + + + {isDataAnonymizable && ( + + + + )} + + ); +}; + +StatsComponent.displayName = 'StatsComponent'; + +export const Stats = React.memo(StatsComponent); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts b/x-pack/packages/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts new file mode 100644 index 0000000000000..1ec76a90d292b --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** This mock returns the reverse of `value` */ +export const mockGetAnonymizedValue = ({ + currentReplacements, + rawValue, +}: { + currentReplacements: Record | undefined; + rawValue: string; +}): string => rawValue.split('').reverse().join(''); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx b/x-pack/packages/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx index 9ceda348795ae..d3923b2ca8fd1 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx @@ -34,9 +34,15 @@ export const TestProvidersComponent: React.FC = ({ children }) => { {children} diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/mock/test_providers/test_providers.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/mock/test_providers/test_providers.tsx index 7c9933942b270..b2a721329e1fa 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/mock/test_providers/test_providers.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/mock/test_providers/test_providers.tsx @@ -35,9 +35,15 @@ export const TestProvidersComponent: React.FC = ({ children }) => { {children} diff --git a/x-pack/plugins/security_solution/common/experimental_features.ts b/x-pack/plugins/security_solution/common/experimental_features.ts index ed9afb7fa9518..079ad8434f445 100644 --- a/x-pack/plugins/security_solution/common/experimental_features.ts +++ b/x-pack/plugins/security_solution/common/experimental_features.ts @@ -82,7 +82,7 @@ export const allowedExperimentalValues = Object.freeze({ securityFlyoutEnabled: false, /** - * Enables the Elastic Security Assistant + * Enables the Elastic AI Assistant */ assistantEnabled: false, diff --git a/x-pack/plugins/security_solution/public/app/app.tsx b/x-pack/plugins/security_solution/public/app/app.tsx index a0e582b6b7ac2..3aac1b90bed37 100644 --- a/x-pack/plugins/security_solution/public/app/app.tsx +++ b/x-pack/plugins/security_solution/public/app/app.tsx @@ -34,9 +34,11 @@ import type { StartServices } from '../types'; import { PageRouter } from './routes'; import { UserPrivilegesProvider } from '../common/components/user_privileges/user_privileges_context'; import { ReactQueryClientProvider } from '../common/containers/query_client/query_client_provider'; +import { DEFAULT_ALLOW, DEFAULT_ALLOW_REPLACEMENT } from '../assistant/content/anonymization'; import { PROMPT_CONTEXTS } from '../assistant/content/prompt_contexts'; import { BASE_SECURITY_QUICK_PROMPTS } from '../assistant/content/quick_prompts'; import { BASE_SECURITY_SYSTEM_PROMPTS } from '../assistant/content/prompts/system'; +import { useAnonymizationStore } from '../assistant/use_anonymization_store'; interface StartAppComponent { children: React.ReactNode; @@ -64,6 +66,9 @@ const StartAppComponent: FC = ({ } = useKibana().services; const { conversations, setConversations } = useConversationStore(); + const { defaultAllow, defaultAllowReplacement, setDefaultAllow, setDefaultAllowReplacement } = + useAnonymizationStore(); + const getInitialConversation = useCallback(() => { return conversations; }, [conversations]); @@ -81,6 +86,10 @@ const StartAppComponent: FC = ({ = ({ http={http} nameSpace={nameSpace} setConversations={setConversations} + setDefaultAllow={setDefaultAllow} + setDefaultAllowReplacement={setDefaultAllowReplacement} title={ASSISTANT_TITLE} > diff --git a/x-pack/plugins/security_solution/public/app/translations.ts b/x-pack/plugins/security_solution/public/app/translations.ts index 50c3fae8f8ad2..9180894fbde84 100644 --- a/x-pack/plugins/security_solution/public/app/translations.ts +++ b/x-pack/plugins/security_solution/public/app/translations.ts @@ -8,7 +8,7 @@ import { i18n } from '@kbn/i18n'; export const ASSISTANT_TITLE = i18n.translate('xpack.securitySolution.assistant.title', { - defaultMessage: 'Elastic Security Assistant', + defaultMessage: 'Elastic AI Assistant', }); export const OVERVIEW = i18n.translate('xpack.securitySolution.navigation.overview', { diff --git a/x-pack/plugins/security_solution/public/assistant/comment_actions/index.tsx b/x-pack/plugins/security_solution/public/assistant/comment_actions/index.tsx index 6a782f6d58d84..befd0680c9c80 100644 --- a/x-pack/plugins/security_solution/public/assistant/comment_actions/index.tsx +++ b/x-pack/plugins/security_solution/public/assistant/comment_actions/index.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { EuiButtonIcon, EuiCopy, EuiToolTip } from '@elastic/eui'; + +import { EuiButtonIcon, EuiCopy, EuiFlexGroup, EuiFlexItem, EuiToolTip } from '@elastic/eui'; import { CommentType } from '@kbn/cases-plugin/common'; import type { Message } from '@kbn/elastic-assistant'; import React, { useCallback } from 'react'; @@ -61,45 +62,51 @@ const CommentActionsComponent: React.FC = ({ message }) => { { comment: message.content, type: CommentType.user, - owner: i18n.ELASTIC_SECURITY_ASSISTANT, + owner: i18n.ELASTIC_AI_ASSISTANT, }, ], }); }, [message.content, selectCaseModal]); return ( - <> - - - + + + + + + - - - + + + + + - - - {(copy) => ( - - )} - - - + + + + {(copy) => ( + + )} + + + + ); }; diff --git a/x-pack/plugins/security_solution/public/assistant/comment_actions/translations.ts b/x-pack/plugins/security_solution/public/assistant/comment_actions/translations.ts index 878fbab69d6af..1f85d7b2cb96f 100644 --- a/x-pack/plugins/security_solution/public/assistant/comment_actions/translations.ts +++ b/x-pack/plugins/security_solution/public/assistant/comment_actions/translations.ts @@ -35,10 +35,10 @@ export const ADD_TO_CASE_EXISTING_CASE = i18n.translate( } ); -export const ELASTIC_SECURITY_ASSISTANT = i18n.translate( - 'xpack.securitySolution.assistant.commentActions.elasticSecurityAssistantTitle', +export const ELASTIC_AI_ASSISTANT = i18n.translate( + 'xpack.securitySolution.assistant.commentActions.elasticAiAssistantTitle', { - defaultMessage: 'Elastic Security Assistant', + defaultMessage: 'Elastic AI Assistant', } ); diff --git a/x-pack/plugins/security_solution/public/assistant/content/anonymization/index.ts b/x-pack/plugins/security_solution/public/assistant/content/anonymization/index.ts new file mode 100644 index 0000000000000..84cd9ad09cacb --- /dev/null +++ b/x-pack/plugins/security_solution/public/assistant/content/anonymization/index.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** By default, these fields are allowed to be sent to the assistant */ +export const DEFAULT_ALLOW = [ + '@timestamp', + 'cloud.availability_zone', + 'cloud.provider', + 'cloud.region', + 'destination.ip', + 'dns.question.name', + 'dns.question.type', + 'event.action', + 'event.category', + 'event.dataset', + 'event.module', + 'event.outcome', + 'event.type', + 'file.Ext.original.path', + 'file.hash.sha256', + 'file.name', + 'file.path', + 'host.name', + 'kibana.alert.rule.name', + 'network.protocol', + 'process.args', + 'process.exit_code', + 'process.hash.md5', + 'process.hash.sha1', + 'process.hash.sha256', + 'process.parent.name', + 'process.parent.pid', + 'process.name', + 'process.pid', + 'source.ip', + 'user.domain', + 'user.name', +]; + +/** By default, these fields will be anonymized */ +export const DEFAULT_ALLOW_REPLACEMENT = [ + 'cloud.availability_zone', + 'cloud.provider', + 'cloud.region', + 'destination.ip', + 'file.Ext.original.path', + 'file.name', + 'file.path', + 'host.ip', // not a default allow field, but anonymized by default + 'host.name', + 'source.ip', + 'user.domain', + 'user.name', +]; diff --git a/x-pack/plugins/security_solution/public/assistant/content/conversations/index.tsx b/x-pack/plugins/security_solution/public/assistant/content/conversations/index.tsx index 261906baa9150..b499092240377 100644 --- a/x-pack/plugins/security_solution/public/assistant/content/conversations/index.tsx +++ b/x-pack/plugins/security_solution/public/assistant/content/conversations/index.tsx @@ -6,7 +6,7 @@ */ import { - ELASTIC_SECURITY_ASSISTANT_TITLE, + ELASTIC_AI_ASSISTANT_TITLE, WELCOME_CONVERSATION_TITLE, } from '@kbn/elastic-assistant/impl/assistant/use_conversation/translations'; import type { Conversation } from '@kbn/elastic-assistant'; @@ -21,7 +21,7 @@ import { ALERT_SUMMARY_CONVERSATION_ID, EVENT_SUMMARY_CONVERSATION_ID, } from '../../../common/components/event_details/translations'; -import { ELASTIC_SECURITY_ASSISTANT } from '../../comment_actions/translations'; +import { ELASTIC_AI_ASSISTANT } from '../../comment_actions/translations'; import { TIMELINE_CONVERSATION_TITLE } from './translations'; export const BASE_SECURITY_CONVERSATIONS: Record = { @@ -59,10 +59,10 @@ export const BASE_SECURITY_CONVERSATIONS: Record = { id: WELCOME_CONVERSATION_TITLE, isDefault: true, theme: { - title: ELASTIC_SECURITY_ASSISTANT_TITLE, + title: ELASTIC_AI_ASSISTANT_TITLE, titleIcon: 'logoSecurity', assistant: { - name: ELASTIC_SECURITY_ASSISTANT, + name: ELASTIC_AI_ASSISTANT, icon: 'logoSecurity', }, system: { diff --git a/x-pack/plugins/security_solution/public/assistant/content/prompts/system/translations.ts b/x-pack/plugins/security_solution/public/assistant/content/prompts/system/translations.ts index a24e63f6c9be5..e060e88a2c8c7 100644 --- a/x-pack/plugins/security_solution/public/assistant/content/prompts/system/translations.ts +++ b/x-pack/plugins/security_solution/public/assistant/content/prompts/system/translations.ts @@ -11,7 +11,7 @@ export const YOU_ARE_A_HELPFUL_EXPERT_ASSISTANT = i18n.translate( 'xpack.securitySolution.assistant.content.prompts.system.youAreAHelpfulExpertAssistant', { defaultMessage: - 'You are a helpful, expert assistant who only answers questions about Elastic Security.', + 'You are a helpful, expert assistant who answers questions about Elastic Security.', } ); diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx b/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx index fd0de680ee84c..d2c051285c8cd 100644 --- a/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx +++ b/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx @@ -16,23 +16,41 @@ import * as i18n from './translations'; export const getComments = ({ currentConversation, lastCommentRef, + showAnonymizedValues, }: { currentConversation: Conversation; lastCommentRef: React.MutableRefObject; + showAnonymizedValues: boolean; }): EuiCommentProps[] => currentConversation.messages.map((message, index) => { const isUser = message.role === 'user'; + const replacements = currentConversation.replacements; + const messageContentWithReplacements = + replacements != null + ? Object.keys(replacements).reduce( + (acc, replacement) => acc.replaceAll(replacement, replacements[replacement]), + message.content + ) + : message.content; + const transformedMessage = { + ...message, + content: messageContentWithReplacements, + }; return { - actions: , + actions: , children: index !== currentConversation.messages.length - 1 ? ( - {message.content} + + {showAnonymizedValues ? message.content : transformedMessage.content} + ) : ( - {message.content} + + {showAnonymizedValues ? message.content : transformedMessage.content} + ), diff --git a/x-pack/plugins/security_solution/public/assistant/helpers.tsx b/x-pack/plugins/security_solution/public/assistant/helpers.tsx index 896bb5b13cd65..829d36c0f9be7 100644 --- a/x-pack/plugins/security_solution/public/assistant/helpers.tsx +++ b/x-pack/plugins/security_solution/public/assistant/helpers.tsx @@ -34,6 +34,11 @@ export const getAllFields = (data: TimelineEventsDetailsItem[]): QueryField[] => .filter(({ field }) => !field.startsWith('signal.')) .map(({ field, values }) => ({ field, values: values?.join(',') ?? '' })); +export const getRawData = (data: TimelineEventsDetailsItem[]): Record => + data + .filter(({ field }) => !field.startsWith('signal.')) + .reduce((acc, { field, values }) => ({ ...acc, [field]: values ?? [] }), {}); + export const getFieldsAsCsv = (queryFields: QueryField[]): string => queryFields.map(({ field, values }) => `${field},${values}`).join('\n'); diff --git a/x-pack/plugins/security_solution/public/assistant/use_anonymization_store/index.tsx b/x-pack/plugins/security_solution/public/assistant/use_anonymization_store/index.tsx new file mode 100644 index 0000000000000..62ffa72713223 --- /dev/null +++ b/x-pack/plugins/security_solution/public/assistant/use_anonymization_store/index.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useLocalStorage } from '../../common/components/local_storage'; +import { DEFAULT_ALLOW, DEFAULT_ALLOW_REPLACEMENT } from '../content/anonymization'; +import { LOCAL_STORAGE_KEY } from '../helpers'; + +export interface UseAnonymizationStore { + defaultAllow: string[]; + defaultAllowReplacement: string[]; + setDefaultAllow: React.Dispatch>; + setDefaultAllowReplacement: React.Dispatch>; +} + +const DEFAULT_ALLOW_KEY = `${LOCAL_STORAGE_KEY}.defaultAllow`; +const DEFAULT_ALLOW_REPLACEMENT_KEY = `${LOCAL_STORAGE_KEY}.defaultAllowReplacement`; + +export const useAnonymizationStore = (): UseAnonymizationStore => { + const [defaultAllow, setDefaultAllow] = useLocalStorage({ + defaultValue: DEFAULT_ALLOW, + key: DEFAULT_ALLOW_KEY, + isInvalidDefault: (valueFromStorage) => !Array.isArray(valueFromStorage), + }); + + const [defaultAllowReplacement, setDefaultAllowReplacement] = useLocalStorage({ + defaultValue: DEFAULT_ALLOW_REPLACEMENT, + key: DEFAULT_ALLOW_REPLACEMENT_KEY, + isInvalidDefault: (valueFromStorage) => !Array.isArray(valueFromStorage), + }); + + return { + defaultAllow, + defaultAllowReplacement, + setDefaultAllow, + setDefaultAllowReplacement, + }; +}; diff --git a/x-pack/plugins/security_solution/public/common/mock/storybook_providers.tsx b/x-pack/plugins/security_solution/public/common/mock/storybook_providers.tsx index c40fd2b6cebf3..d80a14872ccf6 100644 --- a/x-pack/plugins/security_solution/public/common/mock/storybook_providers.tsx +++ b/x-pack/plugins/security_solution/public/common/mock/storybook_providers.tsx @@ -69,9 +69,15 @@ export const StorybookProviders: React.FC = ({ children }) => { {children} diff --git a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx b/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx index 89f5a6351411f..61f0a69266af5 100644 --- a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx +++ b/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx @@ -77,9 +77,15 @@ export const TestProvidersComponent: React.FC = ({ @@ -124,9 +130,15 @@ const TestProvidersWithPrivilegesComponent: React.FC = ({ diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx index a1f6d45834f34..900a2aa9f870b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/index.tsx @@ -12,7 +12,7 @@ import React, { useCallback, useMemo } from 'react'; import deepEqual from 'fast-deep-equal'; import type { EntityType } from '@kbn/timelines-plugin/common'; -import { getPromptContextFromEventDetailsItem } from '../../../../assistant/helpers'; +import { getRawData } from '../../../../assistant/helpers'; import type { BrowserFields } from '../../../../common/containers/source'; import { ExpandableEvent, ExpandableEventTitle } from './expandable_event'; import { useTimelineEventsDetails } from '../../../containers/details'; @@ -102,10 +102,7 @@ const EventDetailsPanelComponent: React.FC = ({ const view = useMemo(() => (isFlyoutView ? SUMMARY_VIEW : TIMELINE_VIEW), [isFlyoutView]); - const getPromptContext = useCallback( - async () => getPromptContextFromEventDetailsItem(detailsData ?? []), - [detailsData] - ); + const getPromptContext = useCallback(async () => getRawData(detailsData ?? []), [detailsData]); const { promptContextId } = useAssistant( isAlert ? 'alert' : 'event', From 83abc6e3c05a815db73ba126ae6648e7bd83a290 Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Mon, 19 Jun 2023 03:09:27 -0400 Subject: [PATCH 58/59] [uiSettings] always use the latest config document to create the new one (#159649) ## Summary Fix https://github.com/elastic/kibana/issues/159646 Fix the config creation-from-previous-one logic by always using the latest config for the new version's creation ## Release Note Fix a bug that could cause old Kibana deployments to loose their uiSettings after an upgrade --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../src/saved_objects_service.ts | 13 +---- .../tsconfig.json | 1 + .../get_upgradeable_config.test.ts | 53 +++++++++++++++++++ .../get_upgradeable_config.ts | 27 ++++++++-- .../src/ui_settings_service.ts | 4 +- packages/kbn-std/index.ts | 1 + .../kbn-std/src/strip_version_qualifier.ts | 15 ++++++ .../functional/apps/spaces/enter_space.ts | 3 +- 8 files changed, 100 insertions(+), 17 deletions(-) create mode 100644 packages/kbn-std/src/strip_version_qualifier.ts diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts index 51f7f29e9683a..860284a892fb1 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts @@ -9,6 +9,7 @@ import { Subject, Observable, firstValueFrom, of } from 'rxjs'; import { filter, take, switchMap } from 'rxjs/operators'; import type { Logger } from '@kbn/logging'; +import { stripVersionQualifier } from '@kbn/std'; import type { ServiceStatus } from '@kbn/core-status-common'; import type { CoreContext, CoreService } from '@kbn/core-base-server-internal'; import type { DocLinksServiceStart } from '@kbn/core-doc-links-server'; @@ -106,9 +107,7 @@ export class SavedObjectsService constructor(private readonly coreContext: CoreContext) { this.logger = coreContext.logger.get('savedobjects-service'); - this.kibanaVersion = SavedObjectsService.stripVersionQualifier( - this.coreContext.env.packageInfo.version - ); + this.kibanaVersion = stripVersionQualifier(this.coreContext.env.packageInfo.version); } public async setup(setupDeps: SavedObjectsSetupDeps): Promise { @@ -384,12 +383,4 @@ export class SavedObjectsService nodeRoles: nodeInfo.roles, }); } - - /** - * Coerce a semver-like string (x.y.z-SNAPSHOT) or prerelease version (x.y.z-alpha) - * to regular semver (x.y.z). - */ - private static stripVersionQualifier(version: string) { - return version.split('-')[0]; - } } diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json b/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json index 7f6d935a488b7..bd5c290172794 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json +++ b/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json @@ -46,6 +46,7 @@ "@kbn/utils", "@kbn/core-http-router-server-internal", "@kbn/logging-mocks", + "@kbn/std", ], "exclude": [ "target/**/*", diff --git a/packages/core/ui-settings/core-ui-settings-server-internal/src/create_or_upgrade_saved_config/get_upgradeable_config.test.ts b/packages/core/ui-settings/core-ui-settings-server-internal/src/create_or_upgrade_saved_config/get_upgradeable_config.test.ts index bc6e427cd2a57..ba7fd1b682f27 100644 --- a/packages/core/ui-settings/core-ui-settings-server-internal/src/create_or_upgrade_saved_config/get_upgradeable_config.test.ts +++ b/packages/core/ui-settings/core-ui-settings-server-internal/src/create_or_upgrade_saved_config/get_upgradeable_config.test.ts @@ -46,6 +46,59 @@ describe('getUpgradeableConfig', () => { expect(result).toEqual(savedConfig); }); + it('uses the latest config when multiple are found', async () => { + const savedObjectsClient = savedObjectsClientMock.create(); + savedObjectsClient.find.mockResolvedValue({ + saved_objects: [ + { id: '7.2.0', attributes: 'foo' }, + { id: '7.3.0', attributes: 'foo' }, + ], + } as SavedObjectsFindResponse); + + const result = await getUpgradeableConfig({ + savedObjectsClient, + version: '7.5.0', + type: 'config', + }); + expect(result!.id).toBe('7.3.0'); + }); + + it('uses the latest config when multiple are found with rc qualifier', async () => { + const savedObjectsClient = savedObjectsClientMock.create(); + savedObjectsClient.find.mockResolvedValue({ + saved_objects: [ + { id: '7.2.0', attributes: 'foo' }, + { id: '7.3.0', attributes: 'foo' }, + { id: '7.5.0-rc1', attributes: 'foo' }, + ], + } as SavedObjectsFindResponse); + + const result = await getUpgradeableConfig({ + savedObjectsClient, + version: '7.5.0', + type: 'config', + }); + expect(result!.id).toBe('7.5.0-rc1'); + }); + + it('ignores documents with malformed ids', async () => { + const savedObjectsClient = savedObjectsClientMock.create(); + savedObjectsClient.find.mockResolvedValue({ + saved_objects: [ + { id: 'not-a-semver', attributes: 'foo' }, + { id: '7.2.0', attributes: 'foo' }, + { id: '7.3.0', attributes: 'foo' }, + ], + } as SavedObjectsFindResponse); + + const result = await getUpgradeableConfig({ + savedObjectsClient, + version: '7.5.0', + type: 'config', + }); + expect(result!.id).toBe('7.3.0'); + }); + it('finds saved config with RC version === Kibana version', async () => { const savedConfig = { id: '7.5.0-rc1', attributes: 'foo' }; const savedObjectsClient = savedObjectsClientMock.create(); diff --git a/packages/core/ui-settings/core-ui-settings-server-internal/src/create_or_upgrade_saved_config/get_upgradeable_config.ts b/packages/core/ui-settings/core-ui-settings-server-internal/src/create_or_upgrade_saved_config/get_upgradeable_config.ts index 18479db1ebd28..ad7572095796e 100644 --- a/packages/core/ui-settings/core-ui-settings-server-internal/src/create_or_upgrade_saved_config/get_upgradeable_config.ts +++ b/packages/core/ui-settings/core-ui-settings-server-internal/src/create_or_upgrade_saved_config/get_upgradeable_config.ts @@ -6,7 +6,11 @@ * Side Public License, v 1. */ -import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import Semver from 'semver'; +import type { + SavedObjectsClientContract, + SavedObjectsFindResult, +} from '@kbn/core-saved-objects-api-server'; import type { ConfigAttributes } from '../saved_objects'; import { isConfigVersionUpgradeable } from './is_config_version_upgradeable'; @@ -47,11 +51,26 @@ export async function getUpgradeableConfig({ }); // try to find a config that we can upgrade - const findResult = savedConfigs.find((savedConfig) => + const matchingResults = savedConfigs.filter((savedConfig) => isConfigVersionUpgradeable(savedConfig.id, version) ); - if (findResult) { - return { id: findResult.id, attributes: findResult.attributes }; + const mostRecentConfig = getMostRecentConfig(matchingResults); + if (mostRecentConfig) { + return { id: mostRecentConfig.id, attributes: mostRecentConfig.attributes }; } return null; } + +const getMostRecentConfig = ( + results: Array> +): SavedObjectsFindResult | undefined => { + return results.reduce | undefined>( + (mostRecent, current) => { + if (!mostRecent) { + return current; + } + return Semver.gt(mostRecent.id, current.id) ? mostRecent : current; + }, + undefined + ); +}; diff --git a/packages/core/ui-settings/core-ui-settings-server-internal/src/ui_settings_service.ts b/packages/core/ui-settings/core-ui-settings-server-internal/src/ui_settings_service.ts index e4dabb6b50f46..473e7569e2179 100644 --- a/packages/core/ui-settings/core-ui-settings-server-internal/src/ui_settings_service.ts +++ b/packages/core/ui-settings/core-ui-settings-server-internal/src/ui_settings_service.ts @@ -10,6 +10,7 @@ import { firstValueFrom, Observable } from 'rxjs'; import { mapToObject } from '@kbn/std'; import type { Logger } from '@kbn/logging'; +import { stripVersionQualifier } from '@kbn/std'; import type { CoreContext, CoreService } from '@kbn/core-base-server-internal'; import type { InternalHttpServiceSetup } from '@kbn/core-http-server-internal'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; @@ -32,6 +33,7 @@ export interface SetupDeps { http: InternalHttpServiceSetup; savedObjects: InternalSavedObjectsServiceSetup; } + type ClientType = T extends 'global' ? UiSettingsGlobalClient : T extends 'namespace' @@ -109,7 +111,7 @@ export class UiSettingsService const isNamespaceScope = scope === 'namespace'; const options = { type: (isNamespaceScope ? 'config' : 'config-global') as 'config' | 'config-global', - id: version, + id: stripVersionQualifier(version), buildNum, savedObjectsClient, defaults: isNamespaceScope diff --git a/packages/kbn-std/index.ts b/packages/kbn-std/index.ts index 6a138a96eac38..2a39de500cb25 100644 --- a/packages/kbn-std/index.ts +++ b/packages/kbn-std/index.ts @@ -29,3 +29,4 @@ export { } from './src/iteration'; export { ensureDeepObject } from './src/ensure_deep_object'; export { Semaphore } from './src/semaphore'; +export { stripVersionQualifier } from './src/strip_version_qualifier'; diff --git a/packages/kbn-std/src/strip_version_qualifier.ts b/packages/kbn-std/src/strip_version_qualifier.ts new file mode 100644 index 0000000000000..e83a57a270587 --- /dev/null +++ b/packages/kbn-std/src/strip_version_qualifier.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * Coerce a semver-like string (x.y.z-SNAPSHOT) or prerelease version (x.y.z-alpha) + * to regular semver (x.y.z). + */ +export function stripVersionQualifier(version: string): string { + return version.split('-')[0]; +} diff --git a/x-pack/test/functional/apps/spaces/enter_space.ts b/x-pack/test/functional/apps/spaces/enter_space.ts index 4e7655add8667..caae7bad10b0f 100644 --- a/x-pack/test/functional/apps/spaces/enter_space.ts +++ b/x-pack/test/functional/apps/spaces/enter_space.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { stripVersionQualifier } from '@kbn/std'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function enterSpaceFunctionalTests({ @@ -32,7 +33,7 @@ export default function enterSpaceFunctionalTests({ { space: 'another-space' } ); const config = await kibanaServer.savedObjects.get({ - id: await kibanaServer.version.get(), + id: stripVersionQualifier(await kibanaServer.version.get()), type: 'config', }); await kibanaServer.savedObjects.update({ From c8e843955468652d583d47c270ada4bf4e417a76 Mon Sep 17 00:00:00 2001 From: Marco Liberati Date: Mon, 19 Jun 2023 10:04:35 +0200 Subject: [PATCH 59/59] [Lens] Provide dimension title fallback in case of empty content (#154368) ## Summary Fixes #151271 This PR is a proposal to provide a fallback title in case the user decides to provide an empty value for dimensions title. Screenshot 2023-06-14 at 12 05 46 Screenshot 2023-06-14 at 12 05 35 Note that this applies only to the presentation of the dimension button, but the title remains as empty space in the configuration itself. Tests added with testing-library. ### Checklist Delete any items that are not applicable to this PR. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### Risk Matrix Delete this section if it is not applicable to this PR. Before closing this PR, invite QA, stakeholders, and other developers to identify risks that should be tested prior to the change/feature release. When forming the risk matrix, consider some of the following examples and how they may potentially impact the change: | Risk | Probability | Severity | Mitigation/Notes | |---------------------------|-------------|----------|-------------------------| | Multiple Spaces—unexpected behavior in non-default Kibana Space. | Low | High | Integration tests will verify that all features are still supported in non-default Kibana Space and when user switches between spaces. | | Multiple nodes—Elasticsearch polling might have race conditions when multiple Kibana nodes are polling for the same tasks. | High | Low | Tasks are idempotent, so executing them multiple times will not result in logical error, but will degrade performance. To test for this case we add plenty of unit tests around this logic and document manual testing procedure. | | Code should gracefully handle cases when feature X or plugin Y are disabled. | Medium | High | Unit tests will verify that any feature flag or plugin combination still results in our service operational. | | [See more potential risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) | ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../components/dimension_buttons/constants.ts | 13 +++++ .../dimension_button.test.tsx | 50 +++++++++++++++++++ .../dimension_buttons/dimension_button.tsx | 27 ++++++---- .../components/dimension_buttons/index.ts | 2 +- .../dimension_buttons/trigger.test.tsx | 29 +++++++++++ .../components/dimension_buttons/trigger.tsx | 9 +++- .../public/index.ts | 1 + .../datasources/form_based/form_based.tsx | 19 ++----- .../text_based/text_based_languages.tsx | 19 ++----- x-pack/plugins/lens/public/utils.test.ts | 17 ++++++- x-pack/plugins/lens/public/utils.ts | 23 +++++++++ .../visualizations/xy/annotations/helpers.tsx | 20 ++------ .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 15 files changed, 165 insertions(+), 67 deletions(-) create mode 100644 src/plugins/visualization_ui_components/public/components/dimension_buttons/constants.ts create mode 100644 src/plugins/visualization_ui_components/public/components/dimension_buttons/dimension_button.test.tsx create mode 100644 src/plugins/visualization_ui_components/public/components/dimension_buttons/trigger.test.tsx diff --git a/src/plugins/visualization_ui_components/public/components/dimension_buttons/constants.ts b/src/plugins/visualization_ui_components/public/components/dimension_buttons/constants.ts new file mode 100644 index 0000000000000..7594cfa11b256 --- /dev/null +++ b/src/plugins/visualization_ui_components/public/components/dimension_buttons/constants.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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const emptyTitleText = i18n.translate('visualizationUiComponents.emptyTitle', { + defaultMessage: '[Untitled]', +}); diff --git a/src/plugins/visualization_ui_components/public/components/dimension_buttons/dimension_button.test.tsx b/src/plugins/visualization_ui_components/public/components/dimension_buttons/dimension_button.test.tsx new file mode 100644 index 0000000000000..0f83694f06d8d --- /dev/null +++ b/src/plugins/visualization_ui_components/public/components/dimension_buttons/dimension_button.test.tsx @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { render, screen } from '@testing-library/react'; +import '@testing-library/jest-dom/extend-expect'; +import React from 'react'; +import { DimensionButton, DimensionButtonProps } from './dimension_button'; + +describe('DimensionButton', () => { + function getDefaultProps(): Omit { + return { + groupLabel: 'myGroup', + onClick: jest.fn(), + onRemoveClick: jest.fn(), + accessorConfig: { columnId: '1' }, + message: undefined, + }; + } + it('should fallback to the empty title if the dimension label is made of an empty string', () => { + render( + +
+ + ); + expect(screen.getByTitle('Edit [Untitled] configuration')).toBeInTheDocument(); + }); + + it('should fallback to the empty title if the dimension label is made up of whitespaces only', () => { + render( + +
+ + ); + expect(screen.getByTitle('Edit [Untitled] configuration')).toBeInTheDocument(); + }); + + it('should not fallback to the empty title if the dimension label has also valid chars beside whitespaces', () => { + render( + +
+ + ); + expect(screen.getByTitle('Edit aaa configuration')).toBeInTheDocument(); + }); +}); diff --git a/src/plugins/visualization_ui_components/public/components/dimension_buttons/dimension_button.tsx b/src/plugins/visualization_ui_components/public/components/dimension_buttons/dimension_button.tsx index 7c9cbb881c2f3..44b158f43cf40 100644 --- a/src/plugins/visualization_ui_components/public/components/dimension_buttons/dimension_button.tsx +++ b/src/plugins/visualization_ui_components/public/components/dimension_buttons/dimension_button.tsx @@ -21,13 +21,27 @@ import { euiThemeVars } from '@kbn/ui-theme'; import { DimensionButtonIcon } from './dimension_button_icon'; import { PaletteIndicator } from './palette_indicator'; import type { AccessorConfig, Message } from './types'; +import { emptyTitleText } from './constants'; const triggerLinkA11yText = (label: string) => i18n.translate('visualizationUiComponents.dimensionButton.editConfig', { defaultMessage: 'Edit {label} configuration', - values: { label }, + values: { + label: label.trim().length ? label : emptyTitleText, + }, }); +export interface DimensionButtonProps { + className?: string; + groupLabel: string; + children: React.ReactElement; + onClick: (id: string) => void; + onRemoveClick: (id: string) => void; + accessorConfig: AccessorConfig; + label: string; + message?: Message; +} + export function DimensionButton({ groupLabel, children, @@ -37,16 +51,7 @@ export function DimensionButton({ label, message, ...otherProps // from Drag&Drop integration -}: { - className?: string; - groupLabel: string; - children: React.ReactElement; - onClick: (id: string) => void; - onRemoveClick: (id: string) => void; - accessorConfig: AccessorConfig; - label: string; - message?: Message; -}) { +}: DimensionButtonProps) { return (
{ + it('should fallback to the empty title if the dimension label is made of an empty string', () => { + render(); + expect(screen.queryByText('[Untitled]')).toBeInTheDocument(); + }); + + it('should fallback to the empty title if the dimension label is made up of whitespaces only', () => { + render(); + expect(screen.queryByText('[Untitled]')).toBeInTheDocument(); + }); + + it('should not fallback to the empty title if the dimension label has also valid chars beside whitespaces', () => { + render(); + expect(screen.queryByText('aaa')).toBeInTheDocument(); + }); +}); diff --git a/src/plugins/visualization_ui_components/public/components/dimension_buttons/trigger.tsx b/src/plugins/visualization_ui_components/public/components/dimension_buttons/trigger.tsx index c050582332b05..622faac8f766c 100644 --- a/src/plugins/visualization_ui_components/public/components/dimension_buttons/trigger.tsx +++ b/src/plugins/visualization_ui_components/public/components/dimension_buttons/trigger.tsx @@ -9,9 +9,10 @@ import { EuiText, EuiFlexItem } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { EuiTextProps } from '@elastic/eui/src/components/text/text'; +import type { EuiTextProps } from '@elastic/eui/src/components/text/text'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; +import { emptyTitleText } from './constants'; export const defaultDimensionTriggerTooltip = (

@@ -36,6 +37,10 @@ export const DimensionTrigger = ({ color?: EuiTextProps['color']; dataTestSubj?: string; }) => { + let safeLabel = label; + if (typeof label === 'string') { + safeLabel = label?.trim().length > 0 ? label : emptyTitleText; + } return ( - {label} + {safeLabel} diff --git a/src/plugins/visualization_ui_components/public/index.ts b/src/plugins/visualization_ui_components/public/index.ts index b8be5d3afbd78..c56b6cb2c3d12 100644 --- a/src/plugins/visualization_ui_components/public/index.ts +++ b/src/plugins/visualization_ui_components/public/index.ts @@ -32,6 +32,7 @@ export { EmptyDimensionButton, LineStyleSettings, TextDecorationSetting, + emptyTitleText, } from './components'; export { isFieldLensCompatible } from './util'; diff --git a/x-pack/plugins/lens/public/datasources/form_based/form_based.tsx b/x-pack/plugins/lens/public/datasources/form_based/form_based.tsx index d5779ef4ac81a..620ea06a8edea 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/form_based.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/form_based.tsx @@ -71,7 +71,7 @@ import { cloneLayer, getNotifiableFeatures, } from './utils'; -import { isDraggedDataViewField } from '../../utils'; +import { getUniqueLabelGenerator, isDraggedDataViewField } from '../../utils'; import { hasField, normalizeOperationDataType } from './pure_utils'; import { LayerPanel } from './layerpanel'; import { @@ -499,28 +499,15 @@ export function getFormBasedDatasource({ uniqueLabels(state: FormBasedPrivateState) { const layers = state.layers; const columnLabelMap = {} as Record; - const counts = {} as Record; - const makeUnique = (label: string) => { - let uniqueLabel = label; + const uniqueLabelGenerator = getUniqueLabelGenerator(); - while (counts[uniqueLabel] >= 0) { - const num = ++counts[uniqueLabel]; - uniqueLabel = i18n.translate('xpack.lens.indexPattern.uniqueLabel', { - defaultMessage: '{label} [{num}]', - values: { label, num }, - }); - } - - counts[uniqueLabel] = 0; - return uniqueLabel; - }; Object.values(layers).forEach((layer) => { if (!layer.columns) { return; } Object.entries(layer.columns).forEach(([columnId, column]) => { - columnLabelMap[columnId] = makeUnique(column.label); + columnLabelMap[columnId] = uniqueLabelGenerator(column.label); }); }); diff --git a/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.tsx b/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.tsx index 90ce505b06700..ae0a4d9cf71f9 100644 --- a/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.tsx +++ b/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.tsx @@ -43,6 +43,7 @@ import type { import { FieldSelect } from './field_select'; import type { Datasource, IndexPatternMap } from '../../types'; import { LayerPanel } from './layerpanel'; +import { getUniqueLabelGenerator } from '../../utils'; function getLayerReferenceName(layerId: string) { return `textBasedLanguages-datasource-layer-${layerId}`; @@ -509,28 +510,14 @@ export function getTextBasedDatasource({ uniqueLabels(state: TextBasedPrivateState) { const layers = state.layers; const columnLabelMap = {} as Record; - const counts = {} as Record; + const uniqueLabelGenerator = getUniqueLabelGenerator(); - const makeUnique = (label: string) => { - let uniqueLabel = label; - - while (counts[uniqueLabel] >= 0) { - const num = ++counts[uniqueLabel]; - uniqueLabel = i18n.translate('xpack.lens.indexPattern.uniqueLabel', { - defaultMessage: '{label} [{num}]', - values: { label, num }, - }); - } - - counts[uniqueLabel] = 0; - return uniqueLabel; - }; Object.values(layers).forEach((layer) => { if (!layer.columns) { return; } Object.values(layer.columns).forEach((column) => { - columnLabelMap[column.columnId] = makeUnique(column.fieldName); + columnLabelMap[column.columnId] = uniqueLabelGenerator(column.fieldName); }); }); diff --git a/x-pack/plugins/lens/public/utils.test.ts b/x-pack/plugins/lens/public/utils.test.ts index d52f6ccc0d2b8..52e509557b2fc 100644 --- a/x-pack/plugins/lens/public/utils.test.ts +++ b/x-pack/plugins/lens/public/utils.test.ts @@ -7,7 +7,7 @@ import { createDatatableUtilitiesMock } from '@kbn/data-plugin/common/mocks'; import { Datatable } from '@kbn/expressions-plugin/public'; -import { inferTimeField, renewIDs } from './utils'; +import { getUniqueLabelGenerator, inferTimeField, renewIDs } from './utils'; const datatableUtilities = createDatatableUtilitiesMock(); @@ -157,4 +157,19 @@ describe('utils', () => { `); }); }); + describe('getUniqueLabelGenerator', () => { + it('should handle empty labels', () => { + expect(getUniqueLabelGenerator()(' ')).toBe('[Untitled]'); + }); + + it('should add a counter for multiple hits of the same label', () => { + const labelGenerator = getUniqueLabelGenerator(); + expect(['myLabel', 'myLabel'].map(labelGenerator)).toEqual(['myLabel', 'myLabel [1]']); + }); + + it('should add a counter for multiple empty labels', () => { + const labelGenerator = getUniqueLabelGenerator(); + expect([' ', ' '].map(labelGenerator)).toEqual(['[Untitled]', '[Untitled] [1]']); + }); + }); }); diff --git a/x-pack/plugins/lens/public/utils.ts b/x-pack/plugins/lens/public/utils.ts index 3838f3b23d44c..518b6c43ea08d 100644 --- a/x-pack/plugins/lens/public/utils.ts +++ b/x-pack/plugins/lens/public/utils.ts @@ -19,6 +19,7 @@ import { ClickTriggerEvent, MultiClickTriggerEvent, } from '@kbn/charts-plugin/public'; +import { emptyTitleText } from '@kbn/visualization-ui-components/public'; import { RequestAdapter } from '@kbn/inspector-plugin/common'; import { ISearchStart } from '@kbn/data-plugin/public'; import type { DraggingIdentifier } from '@kbn/dom-drag-drop'; @@ -363,6 +364,28 @@ export const getSearchWarningMessages = ( return [...warningsMap.values()].flat(); }; +function getSafeLabel(label: string) { + return label.trim().length ? label : emptyTitleText; +} + +export function getUniqueLabelGenerator() { + const counts = {} as Record; + return function makeUnique(label: string) { + let uniqueLabel = getSafeLabel(label); + + while (counts[uniqueLabel] >= 0) { + const num = ++counts[uniqueLabel]; + uniqueLabel = i18n.translate('xpack.lens.uniqueLabel', { + defaultMessage: '{label} [{num}]', + values: { label: getSafeLabel(label), num }, + }); + } + + counts[uniqueLabel] = 0; + return uniqueLabel; + }; +} + export function nonNullable(v: T): v is NonNullable { return v != null; } diff --git a/x-pack/plugins/lens/public/visualizations/xy/annotations/helpers.tsx b/x-pack/plugins/lens/public/visualizations/xy/annotations/helpers.tsx index 3bf619cc76129..ec89021686c6d 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/annotations/helpers.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/annotations/helpers.tsx @@ -18,7 +18,7 @@ import { } from '@kbn/event-annotation-plugin/common'; import { IconChartBarAnnotations } from '@kbn/chart-icons'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; -import { isDraggedDataViewField } from '../../../utils'; +import { getUniqueLabelGenerator, isDraggedDataViewField } from '../../../utils'; import type { FramePublicAPI, Visualization } from '../../../types'; import { isHorizontalChart } from '../state_helpers'; import type { XYState, XYDataLayerConfig, XYAnnotationLayerConfig, XYLayerConfig } from '../types'; @@ -454,29 +454,15 @@ export const getAnnotationsConfiguration = ({ export const getUniqueLabels = (layers: XYLayerConfig[]) => { const annotationLayers = getAnnotationsLayers(layers); const columnLabelMap = {} as Record; - const counts = {} as Record; - const makeUnique = (label: string) => { - let uniqueLabel = label; - - while (counts[uniqueLabel] >= 0) { - const num = ++counts[uniqueLabel]; - uniqueLabel = i18n.translate('xpack.lens.uniqueLabel', { - defaultMessage: '{label} [{num}]', - values: { label, num }, - }); - } - - counts[uniqueLabel] = 0; - return uniqueLabel; - }; + const uniqueLabelGenerator = getUniqueLabelGenerator(); annotationLayers.forEach((layer) => { if (!layer.annotations) { return; } layer.annotations.forEach((l) => { - columnLabelMap[l.id] = makeUnique(l.label); + columnLabelMap[l.id] = uniqueLabelGenerator(l.label); }); }); return columnLabelMap; diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 5574c0cb85a1c..1b49ae899b722 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -20249,7 +20249,6 @@ "xpack.lens.indexPattern.timeShiftMultipleWarning": "{label} utilise un décalage temporel de {columnTimeShift} qui n'est pas un multiple de l'intervalle de l'histogramme des dates de {interval}. Pour éviter une non-correspondance des données, utilisez un multiple de {interval} comme décalage temporel.", "xpack.lens.indexPattern.timeShiftSmallWarning": "{label} utilise un décalage temporel de {columnTimeShift} qui est inférieur à l'intervalle de l'histogramme des dates de {interval}. Pour éviter une non-correspondance des données, utilisez un multiple de {interval} comme décalage temporel.", "xpack.lens.indexPattern.tsdbRollupWarning": "{label} utilise une fonction qui n'est pas prise en charge par les données cumulées. Sélectionnez une autre fonction ou modifiez la plage temporelle.", - "xpack.lens.indexPattern.uniqueLabel": "{label} [{num}]", "xpack.lens.indexPattern.valueCountOf": "Nombre de {name}", "xpack.lens.indexPatternSuggestion.removeLayerLabel": "Afficher uniquement {indexPatternTitle}", "xpack.lens.indexPatternSuggestion.removeLayerPositionLabel": "Afficher uniquement le calque {layerNumber}", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 7d0b8e2345bca..fc195937c9b50 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -20248,7 +20248,6 @@ "xpack.lens.indexPattern.timeShiftMultipleWarning": "{label}は{columnTimeShift}の時間シフトを使用しています。これは{interval}の日付ヒストグラム間隔の乗数ではありません。不一致のデータを防止するには、時間シフトとして{interval}を使用します。", "xpack.lens.indexPattern.timeShiftSmallWarning": "{label}は{columnTimeShift}の時間シフトを使用しています。これは{interval}の日付ヒストグラム間隔よりも小さいです。不一致のデータを防止するには、時間シフトとして{interval}を使用します。", "xpack.lens.indexPattern.tsdbRollupWarning": "{label}は、ロールアップされたデータによってサポートされていない関数を使用しています。別の関数を選択するか、時間範囲を選択してください。", - "xpack.lens.indexPattern.uniqueLabel": "{label} [{num}]", "xpack.lens.indexPattern.valueCountOf": "{name}のカウント", "xpack.lens.indexPatternSuggestion.removeLayerLabel": "{indexPatternTitle}のみを表示", "xpack.lens.indexPatternSuggestion.removeLayerPositionLabel": "レイヤー{layerNumber}のみを表示", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index db961e19dda3a..e102f5602a43e 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -20248,7 +20248,6 @@ "xpack.lens.indexPattern.timeShiftMultipleWarning": "{label} 使用的时间偏移 {columnTimeShift} 不是 Date Histogram 时间间隔 {interval} 的倍数。要防止数据不匹配,请使用 {interval} 的倍数作为时间偏移。", "xpack.lens.indexPattern.timeShiftSmallWarning": "{label} 使用的时间偏移 {columnTimeShift} 小于 Date Histogram 时间间隔 {interval}。要防止数据不匹配,请使用 {interval} 的倍数作为时间偏移。", "xpack.lens.indexPattern.tsdbRollupWarning": "{label} 使用的函数不受汇总/打包数据支持。请选择其他函数,或更改时间范围。", - "xpack.lens.indexPattern.uniqueLabel": "{label} [{num}]", "xpack.lens.indexPattern.valueCountOf": "{name} 的计数", "xpack.lens.indexPatternSuggestion.removeLayerLabel": "仅显示 {indexPatternTitle}", "xpack.lens.indexPatternSuggestion.removeLayerPositionLabel": "仅显示图层 {layerNumber}",