From 0fb3720eaa2dff191f6b71755d92c84076fa7791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Istv=C3=A1n=20Zolt=C3=A1n=20Szab=C3=B3?= Date: Thu, 29 Jun 2023 13:38:42 +0200 Subject: [PATCH 01/41] Changes doc link of startTrainedModelsDeployment (#160863) ## Summary This PR changes a URL in the doc link service as the URL of the corresponding page has changed. --- packages/kbn-doc-links/src/get_doc_links.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index 9fd448d1099a2..959308de9d5fe 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -484,7 +484,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { classificationAucRoc: `${MACHINE_LEARNING_DOCS}ml-dfa-classification.html#ml-dfanalytics-class-aucroc`, setUpgradeMode: `${ELASTICSEARCH_DOCS}ml-set-upgrade-mode.html`, trainedModels: `${MACHINE_LEARNING_DOCS}ml-trained-models.html`, - startTrainedModelsDeployment: `${MACHINE_LEARNING_DOCS}ml-nlp-deploy-models.html#ml-nlp-deploy-model`, + startTrainedModelsDeployment: `${MACHINE_LEARNING_DOCS}ml-nlp-deploy-model.html`, }, transforms: { guide: `${ELASTICSEARCH_DOCS}transforms.html`, From 1a81529da2ec77271f0ba82f9a527a20a316da7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20S=C3=A1nchez?= Date: Thu, 29 Jun 2023 14:06:56 +0200 Subject: [PATCH 02/41] [Security Solution][Endpoint] Potential improvements in endpoint user artifact packager (#160387) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This pr includes different changes to: - Do less requests to `.kibana` and `.fleet-artifacts` indices - Speed up the `endpoint:user-artifact-packager` task. ### Actions taken: - Do package policy updates in parallel using `pMap`. This is the slowest phase of the task as a package policy update takes a few seconds to be done. Doing it in parallel (with concurrency = 10) speeds up this phase, specially when there are a lot of policies. The concurrency value could be replaced by a config parameter as a safe option to decrease or increase the concurrency. - Introduces new fleet artifacts client functionality for `bulk` delete. It is used in the `deleteArtifacts` function in manifest manager but also in the `cleanup` function. Artifacts deletion are done always there is an artifact update as artifacts are not updated, instead, it does create + delete. The single delete artifact does a previous artifact verification by getting it by id and ensuring it is from the current package. This is not done now in the new bulk operation, but let me know if this is strongly needed. This was also increasing the number of calls we were doing into `.fleet-artifacts` index as an update/create/delete of a global exception might impact all the artifacts, so all artifacts being created and deleted. - Package policy ids where loaded (using a pagesize of 20) on each artifact generation (so for each policy and OS). This was causing a lot of `.kibana` index requests, specially for the cases with a lot of policies. Now all the policy ids are loaded at the beginning (with a 100 page size) and used, so a few `.kibana` index queries done for all the artifacts, policyIds an OS's. - Exceptions (Event Filters, Trusted Apps, endpoint exceptions, etc) were queried for each OS and policyId, this also ended up doing a lot of requests in `.kibana` index. Now it does a query by ListId + OS one time and stores the result in a cache which is reused for each policy. Now we do less queries and the performance has improved. - All unit and integration tests have been updated according to the changes. The behaviour has changed with all these changes, but the end result should be the same. ### TBD: - Adds new config param for package policy update concurrency. ✅ --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../services/artifacts/artifacts.test.ts | 49 ++ .../server/services/artifacts/artifacts.ts | 31 ++ .../server/services/artifacts/client.test.ts | 21 + .../fleet/server/services/artifacts/client.ts | 8 +- .../server/services/artifacts/mappings.ts | 4 + .../fleet/server/services/artifacts/mocks.ts | 6 +- .../fleet/server/services/artifacts/types.ts | 2 + .../security_solution/server/config.mock.ts | 1 + .../security_solution/server/config.ts | 5 + .../endpoint/lib/artifacts/lists.test.ts | 311 ++++-------- .../server/endpoint/lib/artifacts/lists.ts | 70 ++- .../artifacts/artifact_client.test.ts | 12 + .../services/artifacts/artifact_client.ts | 6 + .../manifest_manager/manifest_manager.mock.ts | 10 +- .../manifest_manager/manifest_manager.test.ts | 145 +++--- .../manifest_manager/manifest_manager.ts | 443 +++++++++++------- .../endpoint/services/artifacts/mocks.ts | 3 + .../security_solution/server/plugin.ts | 2 + 18 files changed, 623 insertions(+), 506 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/artifacts/artifacts.test.ts b/x-pack/plugins/fleet/server/services/artifacts/artifacts.test.ts index 1c54e543e7747..f3b332a5930fc 100644 --- a/x-pack/plugins/fleet/server/services/artifacts/artifacts.test.ts +++ b/x-pack/plugins/fleet/server/services/artifacts/artifacts.test.ts @@ -29,6 +29,7 @@ import { } from './mocks'; import { bulkCreateArtifacts, + bulkDeleteArtifacts, createArtifact, deleteArtifact, encodeArtifactContent, @@ -348,6 +349,54 @@ describe('When using the artifacts services', () => { }); }); + describe('and calling `bulkDeleteArtifacts()`', () => { + it('should delete single artifact', async () => { + bulkDeleteArtifacts(esClientMock, ['123']); + + expect(esClientMock.bulk).toHaveBeenCalledWith({ + refresh: 'wait_for', + body: [ + { + delete: { + _id: '123', + _index: FLEET_SERVER_ARTIFACTS_INDEX, + }, + }, + ], + }); + }); + + it('should delete all the artifacts', async () => { + bulkDeleteArtifacts(esClientMock, ['123', '231']); + + expect(esClientMock.bulk).toHaveBeenCalledWith({ + refresh: 'wait_for', + body: [ + { + delete: { + _id: '123', + _index: FLEET_SERVER_ARTIFACTS_INDEX, + }, + }, + { + delete: { + _id: '231', + _index: FLEET_SERVER_ARTIFACTS_INDEX, + }, + }, + ], + }); + }); + + it('should throw an ArtifactElasticsearchError if one is encountered', async () => { + setEsClientMethodResponseToError(esClientMock, 'bulk'); + + await expect(bulkDeleteArtifacts(esClientMock, ['123'])).rejects.toBeInstanceOf( + ArtifactsElasticsearchError + ); + }); + }); + describe('and calling `listArtifacts()`', () => { beforeEach(() => { esClientMock.search.mockResponse(generateArtifactEsSearchResultHitsMock()); diff --git a/x-pack/plugins/fleet/server/services/artifacts/artifacts.ts b/x-pack/plugins/fleet/server/services/artifacts/artifacts.ts index 0e312f142edf6..5516ab6f70e23 100644 --- a/x-pack/plugins/fleet/server/services/artifacts/artifacts.ts +++ b/x-pack/plugins/fleet/server/services/artifacts/artifacts.ts @@ -197,6 +197,37 @@ export const deleteArtifact = async (esClient: ElasticsearchClient, id: string): } }; +export const bulkDeleteArtifacts = async ( + esClient: ElasticsearchClient, + ids: string[] +): Promise => { + try { + const body = ids.map((id) => ({ + delete: { _index: FLEET_SERVER_ARTIFACTS_INDEX, _id: id }, + })); + + const res = await withPackageSpan(`Bulk delete fleet artifacts`, () => + esClient.bulk({ + body, + refresh: 'wait_for', + }) + ); + let errors: Error[] = []; + // Track errors of the bulk delete action + if (res.errors) { + errors = res.items.reduce((acc, item) => { + if (item.delete?.error) { + acc.push(new Error(item.delete.error.reason)); + } + return acc; + }, []); + } + return errors; + } catch (e) { + throw new ArtifactsElasticsearchError(e); + } +}; + export const listArtifacts = async ( esClient: ElasticsearchClient, options: ListArtifactsProps = {} diff --git a/x-pack/plugins/fleet/server/services/artifacts/client.test.ts b/x-pack/plugins/fleet/server/services/artifacts/client.test.ts index 1a242c83275fd..61d07f0a3e99c 100644 --- a/x-pack/plugins/fleet/server/services/artifacts/client.test.ts +++ b/x-pack/plugins/fleet/server/services/artifacts/client.test.ts @@ -7,6 +7,8 @@ import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; +import { FLEET_SERVER_ARTIFACTS_INDEX } from '../../../common/constants'; + import { ArtifactsClientAccessDeniedError, ArtifactsClientError } from '../../errors'; import { appContextService } from '../app_context'; @@ -155,6 +157,25 @@ describe('When using the Fleet Artifacts Client', () => { }); }); + describe('and calling `bulkDeleteArtifacts()`', () => { + it('should bulk delete the artifact', async () => { + setEsClientGetMock(); + await artifactClient.bulkDeleteArtifacts(['123']); + expect(esClientMock.bulk).toHaveBeenCalledWith( + expect.objectContaining({ + body: [ + { + delete: { + _id: 'endpoint:123', + _index: FLEET_SERVER_ARTIFACTS_INDEX, + }, + }, + ], + }) + ); + }); + }); + describe('and calling `listArtifacts()`', () => { beforeEach(() => { esClientMock.search.mockResponse(generateArtifactEsSearchResultHitsMock()); diff --git a/x-pack/plugins/fleet/server/services/artifacts/client.ts b/x-pack/plugins/fleet/server/services/artifacts/client.ts index 3cf28e4847d0d..7ba2452e83fe7 100644 --- a/x-pack/plugins/fleet/server/services/artifacts/client.ts +++ b/x-pack/plugins/fleet/server/services/artifacts/client.ts @@ -18,7 +18,7 @@ import type { NewArtifact, ListArtifactsProps, } from './types'; -import { relativeDownloadUrlFromArtifact } from './mappings'; +import { relativeDownloadUrlFromArtifact, uniqueIdFromId } from './mappings'; import { createArtifact, @@ -28,6 +28,7 @@ import { getArtifact, listArtifacts, bulkCreateArtifacts, + bulkDeleteArtifacts, } from './artifacts'; /** @@ -112,6 +113,11 @@ export class FleetArtifactsClient implements ArtifactsClientInterface { } } + async bulkDeleteArtifacts(ids: string[]): Promise { + const idsMappedWithPackageName = ids.map((id) => uniqueIdFromId(id, this.packageName)); + return await bulkDeleteArtifacts(this.esClient, idsMappedWithPackageName); + } + /** * Get a list of artifacts. * NOTE that when using the `kuery` filtering param, that all filters property names should diff --git a/x-pack/plugins/fleet/server/services/artifacts/mappings.ts b/x-pack/plugins/fleet/server/services/artifacts/mappings.ts index 09b804a208342..3645f957417e3 100644 --- a/x-pack/plugins/fleet/server/services/artifacts/mappings.ts +++ b/x-pack/plugins/fleet/server/services/artifacts/mappings.ts @@ -82,3 +82,7 @@ export const uniqueIdFromArtifact = < }: T): string => { return `${packageName}:${identifier}-${decodedSha256}`; }; + +export const uniqueIdFromId = (id: string, packageName: string): string => { + return `${packageName}:${id}`; +}; diff --git a/x-pack/plugins/fleet/server/services/artifacts/mocks.ts b/x-pack/plugins/fleet/server/services/artifacts/mocks.ts index 26dc93181a102..dc831558cb7bb 100644 --- a/x-pack/plugins/fleet/server/services/artifacts/mocks.ts +++ b/x-pack/plugins/fleet/server/services/artifacts/mocks.ts @@ -26,6 +26,7 @@ export const createArtifactsClientMock = (): jest.Mocked>( }; type EsClientMock = ReturnType; -type EsClientMockMethods = keyof Pick; +type EsClientMockMethods = keyof Pick< + EsClientMock, + 'get' | 'create' | 'delete' | 'search' | 'bulk' +>; export const setEsClientMethodResponseToError = ( esClientMock: EsClientMock, diff --git a/x-pack/plugins/fleet/server/services/artifacts/types.ts b/x-pack/plugins/fleet/server/services/artifacts/types.ts index 05ba89b3bb0ff..4b0aacd92bc20 100644 --- a/x-pack/plugins/fleet/server/services/artifacts/types.ts +++ b/x-pack/plugins/fleet/server/services/artifacts/types.ts @@ -86,6 +86,8 @@ export interface ArtifactsClientInterface { deleteArtifact(id: string): Promise; + bulkDeleteArtifacts(ids: string[]): Promise; + listArtifacts(options?: ListArtifactsProps): Promise>; encodeContent(content: ArtifactsClientCreateOptions['content']): Promise; diff --git a/x-pack/plugins/security_solution/server/config.mock.ts b/x-pack/plugins/security_solution/server/config.mock.ts index 88ce4c7b91910..6b2d4b5bff3b3 100644 --- a/x-pack/plugins/security_solution/server/config.mock.ts +++ b/x-pack/plugins/security_solution/server/config.mock.ts @@ -21,6 +21,7 @@ export const createMockConfig = (): ConfigType => { maxTimelineImportPayloadBytes: 10485760, enableExperimental, packagerTaskInterval: '60s', + packagerTaskPackagePolicyUpdateBatchSize: 10, prebuiltRulesPackageVersion: '', alertMergeStrategy: 'missingFields', alertIgnoreFields: [], diff --git a/x-pack/plugins/security_solution/server/config.ts b/x-pack/plugins/security_solution/server/config.ts index dc732061ab947..ce177538f4f0b 100644 --- a/x-pack/plugins/security_solution/server/config.ts +++ b/x-pack/plugins/security_solution/server/config.ts @@ -95,6 +95,11 @@ export const configSchema = schema.object({ */ packagerTaskInterval: schema.string({ defaultValue: '60s' }), + /** + * Artifacts Configuration for package policy update concurrency + */ + packagerTaskPackagePolicyUpdateBatchSize: schema.number({ defaultValue: 10, max: 50, min: 1 }), + /** * For internal use. Specify which version of the Detection Rules fleet package to install * when upgrading rules. If not provided, the latest compatible package will be installed, diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts index 3ef1522109d35..bb46bc2da92b4 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts @@ -10,7 +10,12 @@ import { listMock } from '@kbn/lists-plugin/server/mocks'; import { getFoundExceptionListItemSchemaMock } from '@kbn/lists-plugin/common/schemas/response/found_exception_list_item_schema.mock'; import { getExceptionListItemSchemaMock } from '@kbn/lists-plugin/common/schemas/response/exception_list_item_schema.mock'; import type { EntriesArray, EntryList } from '@kbn/securitysolution-io-ts-list-types'; -import { buildArtifact, getEndpointExceptionList, getFilteredEndpointExceptionList } from './lists'; +import { + buildArtifact, + getAllItemsFromEndpointExceptionList, + getFilteredEndpointExceptionListRaw, + convertExceptionsToEndpointFormat, +} from './lists'; import type { TranslatedEntry, TranslatedExceptionListItem } from '../../schemas/artifacts'; import { ArtifactConstants } from './common'; import { @@ -29,10 +34,10 @@ describe('artifacts lists', () => { mockExceptionClient = listMock.getExceptionListClient(); }); - describe('getFilteredEndpointExceptionList', () => { + describe('getFilteredEndpointExceptionListRaw', () => { const TEST_FILTER = 'exception-list-agnostic.attributes.os_types:"linux"'; - test('it should convert the exception lists response to the proper endpoint format', async () => { + test('it should get convert the exception lists response to the proper endpoint format', async () => { const expectedEndpointExceptions = { type: 'simple', entries: [ @@ -59,13 +64,13 @@ describe('artifacts lists', () => { const first = getFoundExceptionListItemSchemaMock(); mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: TEST_FILTER, listId: ENDPOINT_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -105,13 +110,13 @@ describe('artifacts lists', () => { first.data[0].entries = testEntries; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: TEST_FILTER, listId: ENDPOINT_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -156,13 +161,13 @@ describe('artifacts lists', () => { first.data[0].entries = testEntries; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: TEST_FILTER, listId: ENDPOINT_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -209,13 +214,13 @@ describe('artifacts lists', () => { first.data[0].entries = testEntries; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: TEST_FILTER, listId: ENDPOINT_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -261,13 +266,13 @@ describe('artifacts lists', () => { first.data[0].entries = testEntries; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: TEST_FILTER, listId: ENDPOINT_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -304,13 +309,13 @@ describe('artifacts lists', () => { first.data[1].entries = testEntries; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: TEST_FILTER, listId: ENDPOINT_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -347,13 +352,13 @@ describe('artifacts lists', () => { first.data[0].entries = testEntries; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: TEST_FILTER, listId: ENDPOINT_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -376,15 +381,15 @@ describe('artifacts lists', () => { .mockReturnValueOnce(first) .mockReturnValueOnce(second); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: TEST_FILTER, listId: ENDPOINT_LIST_ID, }); + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); - // Expect 2 exceptions, the first two calls returned the same exception list items - expect(resp.entries.length).toEqual(2); + // Expect 1 exceptions, the first two calls returned the same exception list items + expect(translated.entries.length).toEqual(1); }); test('it should handle no exceptions', async () => { @@ -392,13 +397,13 @@ describe('artifacts lists', () => { exceptionsResponse.data = []; exceptionsResponse.total = 0; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(exceptionsResponse); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: TEST_FILTER, listId: ENDPOINT_LIST_ID, }); - expect(resp.entries.length).toEqual(0); + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated.entries.length).toEqual(0); }); test('it should return a stable hash regardless of order of entries', async () => { @@ -552,13 +557,13 @@ describe('artifacts lists', () => { first.data[0].os_types = [os]; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -597,13 +602,13 @@ describe('artifacts lists', () => { first.data[0].os_types = [os]; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -636,13 +641,13 @@ describe('artifacts lists', () => { first.data[0].os_types = [os]; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -700,14 +705,14 @@ describe('artifacts lists', () => { mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); - expect(resp).toEqual({ + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -740,13 +745,13 @@ describe('artifacts lists', () => { first.data[0].os_types = [os]; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -804,14 +809,14 @@ describe('artifacts lists', () => { mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -854,13 +859,13 @@ describe('artifacts lists', () => { first.data[0].os_types = [os]; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -901,13 +906,13 @@ describe('artifacts lists', () => { first.data[0].os_types = [os]; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -942,13 +947,13 @@ describe('artifacts lists', () => { first.data[0].os_types = [os]; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -1008,14 +1013,14 @@ describe('artifacts lists', () => { mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -1049,13 +1054,13 @@ describe('artifacts lists', () => { first.data[0].os_types = [os]; mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -1115,14 +1120,14 @@ describe('artifacts lists', () => { mockExceptionClient.findExceptionListItem = jest.fn().mockReturnValueOnce(first); - const resp = await getFilteredEndpointExceptionList({ + const resp = await getFilteredEndpointExceptionListRaw({ elClient: mockExceptionClient, - schemaVersion: 'v1', filter: `${getOsFilter(os)} and (exception-list-agnostic.attributes.tags:"policy:all")`, listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); - expect(resp).toEqual({ + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual({ entries: [expectedEndpointExceptions], }); }); @@ -1157,25 +1162,26 @@ describe('artifacts lists', () => { ], }; - describe('Builds proper kuery without policy', () => { + describe('Builds proper kuery', () => { test('for Endpoint List', async () => { mockExceptionClient.findExceptionListItem = jest .fn() .mockReturnValueOnce(getFoundExceptionListItemSchemaMock()); - const resp = await getEndpointExceptionList({ + const resp = await getAllItemsFromEndpointExceptionList({ elClient: mockExceptionClient, - schemaVersion: 'v1', os: 'windows', + listId: ENDPOINT_LIST_ID, }); - expect(resp).toEqual(TEST_EXCEPTION_LIST_ITEM); + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual(TEST_EXCEPTION_LIST_ITEM); expect(mockExceptionClient.findExceptionListItem).toHaveBeenCalledWith({ listId: ENDPOINT_LIST_ID, namespaceType: 'agnostic', filter: 'exception-list-agnostic.attributes.os_types:"windows"', - perPage: 100, + perPage: 1000, page: 1, sortField: 'created_at', sortOrder: 'desc', @@ -1187,21 +1193,20 @@ describe('artifacts lists', () => { .fn() .mockReturnValueOnce(getFoundExceptionListItemSchemaMock()); - const resp = await getEndpointExceptionList({ + const resp = await getAllItemsFromEndpointExceptionList({ elClient: mockExceptionClient, - schemaVersion: 'v1', os: 'macos', listId: ENDPOINT_TRUSTED_APPS_LIST_ID, }); + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); - expect(resp).toEqual(TEST_EXCEPTION_LIST_ITEM); + expect(translated).toEqual(TEST_EXCEPTION_LIST_ITEM); expect(mockExceptionClient.findExceptionListItem).toHaveBeenCalledWith({ listId: ENDPOINT_TRUSTED_APPS_LIST_ID, namespaceType: 'agnostic', - filter: - 'exception-list-agnostic.attributes.os_types:"macos" and (exception-list-agnostic.attributes.tags:"policy:all")', - perPage: 100, + filter: 'exception-list-agnostic.attributes.os_types:"macos"', + perPage: 1000, page: 1, sortField: 'created_at', sortOrder: 'desc', @@ -1213,21 +1218,20 @@ describe('artifacts lists', () => { .fn() .mockReturnValueOnce(getFoundExceptionListItemSchemaMock()); - const resp = await getEndpointExceptionList({ + const resp = await getAllItemsFromEndpointExceptionList({ elClient: mockExceptionClient, - schemaVersion: 'v1', os: 'macos', listId: ENDPOINT_EVENT_FILTERS_LIST_ID, }); - expect(resp).toEqual(TEST_EXCEPTION_LIST_ITEM); + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual(TEST_EXCEPTION_LIST_ITEM); expect(mockExceptionClient.findExceptionListItem).toHaveBeenCalledWith({ listId: ENDPOINT_EVENT_FILTERS_LIST_ID, namespaceType: 'agnostic', - filter: - 'exception-list-agnostic.attributes.os_types:"macos" and (exception-list-agnostic.attributes.tags:"policy:all")', - perPage: 100, + filter: 'exception-list-agnostic.attributes.os_types:"macos"', + perPage: 1000, page: 1, sortField: 'created_at', sortOrder: 'desc', @@ -1239,164 +1243,45 @@ describe('artifacts lists', () => { .fn() .mockReturnValueOnce(getFoundExceptionListItemSchemaMock()); - const resp = await getEndpointExceptionList({ + const resp = await getAllItemsFromEndpointExceptionList({ elClient: mockExceptionClient, - schemaVersion: 'v1', os: 'macos', listId: ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID, }); - expect(resp).toEqual(TEST_EXCEPTION_LIST_ITEM); + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual(TEST_EXCEPTION_LIST_ITEM); expect(mockExceptionClient.findExceptionListItem).toHaveBeenCalledWith({ listId: ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID, namespaceType: 'agnostic', - filter: - 'exception-list-agnostic.attributes.os_types:"macos" and (exception-list-agnostic.attributes.tags:"policy:all")', - perPage: 100, - page: 1, - sortField: 'created_at', - sortOrder: 'desc', - }); - }); - - test('for Blocklists', async () => { - mockExceptionClient.findExceptionListItem = jest - .fn() - .mockReturnValueOnce(getFoundExceptionListItemSchemaMock()); - - const resp = await getEndpointExceptionList({ - elClient: mockExceptionClient, - schemaVersion: 'v1', - os: 'macos', - listId: ENDPOINT_BLOCKLISTS_LIST_ID, - }); - - expect(resp).toEqual(TEST_EXCEPTION_LIST_ITEM); - - expect(mockExceptionClient.findExceptionListItem).toHaveBeenCalledWith({ - listId: ENDPOINT_BLOCKLISTS_LIST_ID, - namespaceType: 'agnostic', - filter: - 'exception-list-agnostic.attributes.os_types:"macos" and (exception-list-agnostic.attributes.tags:"policy:all")', - perPage: 100, - page: 1, - sortField: 'created_at', - sortOrder: 'desc', - }); - }); - }); - - describe('Build proper kuery with policy', () => { - test('for Trusted Apps', async () => { - mockExceptionClient.findExceptionListItem = jest - .fn() - .mockReturnValueOnce(getFoundExceptionListItemSchemaMock()); - - const resp = await getEndpointExceptionList({ - elClient: mockExceptionClient, - schemaVersion: 'v1', - os: 'macos', - policyId: 'c6d16e42-c32d-4dce-8a88-113cfe276ad1', - listId: ENDPOINT_TRUSTED_APPS_LIST_ID, - }); - - expect(resp).toEqual(TEST_EXCEPTION_LIST_ITEM); - - expect(mockExceptionClient.findExceptionListItem).toHaveBeenCalledWith({ - listId: ENDPOINT_TRUSTED_APPS_LIST_ID, - namespaceType: 'agnostic', - filter: - 'exception-list-agnostic.attributes.os_types:"macos" and ' + - '(exception-list-agnostic.attributes.tags:"policy:all" or ' + - 'exception-list-agnostic.attributes.tags:"policy:c6d16e42-c32d-4dce-8a88-113cfe276ad1")', - perPage: 100, + filter: 'exception-list-agnostic.attributes.os_types:"macos"', + perPage: 1000, page: 1, sortField: 'created_at', sortOrder: 'desc', }); }); - test('for Event Filters', async () => { - mockExceptionClient.findExceptionListItem = jest - .fn() - .mockReturnValueOnce(getFoundExceptionListItemSchemaMock()); - - const resp = await getEndpointExceptionList({ - elClient: mockExceptionClient, - schemaVersion: 'v1', - os: 'macos', - policyId: 'c6d16e42-c32d-4dce-8a88-113cfe276ad1', - listId: ENDPOINT_EVENT_FILTERS_LIST_ID, - }); - - expect(resp).toEqual(TEST_EXCEPTION_LIST_ITEM); - - expect(mockExceptionClient.findExceptionListItem).toHaveBeenCalledWith({ - listId: ENDPOINT_EVENT_FILTERS_LIST_ID, - namespaceType: 'agnostic', - filter: - 'exception-list-agnostic.attributes.os_types:"macos" and ' + - '(exception-list-agnostic.attributes.tags:"policy:all" or ' + - 'exception-list-agnostic.attributes.tags:"policy:c6d16e42-c32d-4dce-8a88-113cfe276ad1")', - perPage: 100, - page: 1, - sortField: 'created_at', - sortOrder: 'desc', - }); - }); - - test('for Host Isolation Exceptions', async () => { - mockExceptionClient.findExceptionListItem = jest - .fn() - .mockReturnValueOnce(getFoundExceptionListItemSchemaMock()); - - const resp = await getEndpointExceptionList({ - elClient: mockExceptionClient, - schemaVersion: 'v1', - os: 'macos', - policyId: 'c6d16e42-c32d-4dce-8a88-113cfe276ad1', - listId: ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID, - }); - - expect(resp).toEqual(TEST_EXCEPTION_LIST_ITEM); - - expect(mockExceptionClient.findExceptionListItem).toHaveBeenCalledWith({ - listId: ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID, - namespaceType: 'agnostic', - filter: - 'exception-list-agnostic.attributes.os_types:"macos" and ' + - '(exception-list-agnostic.attributes.tags:"policy:all" or ' + - 'exception-list-agnostic.attributes.tags:"policy:c6d16e42-c32d-4dce-8a88-113cfe276ad1")', - perPage: 100, - page: 1, - sortField: 'created_at', - sortOrder: 'desc', - }); - }); test('for Blocklists', async () => { mockExceptionClient.findExceptionListItem = jest .fn() .mockReturnValueOnce(getFoundExceptionListItemSchemaMock()); - const resp = await getEndpointExceptionList({ + const resp = await getAllItemsFromEndpointExceptionList({ elClient: mockExceptionClient, - schemaVersion: 'v1', os: 'macos', - policyId: 'c6d16e42-c32d-4dce-8a88-113cfe276ad1', listId: ENDPOINT_BLOCKLISTS_LIST_ID, }); - expect(resp).toEqual(TEST_EXCEPTION_LIST_ITEM); + const translated = convertExceptionsToEndpointFormat(resp, 'v1'); + expect(translated).toEqual(TEST_EXCEPTION_LIST_ITEM); expect(mockExceptionClient.findExceptionListItem).toHaveBeenCalledWith({ listId: ENDPOINT_BLOCKLISTS_LIST_ID, namespaceType: 'agnostic', - filter: - 'exception-list-agnostic.attributes.os_types:"macos" and ' + - '(exception-list-agnostic.attributes.tags:"policy:all" or ' + - 'exception-list-agnostic.attributes.tags:"policy:c6d16e42-c32d-4dce-8a88-113cfe276ad1")', - perPage: 100, + filter: 'exception-list-agnostic.attributes.os_types:"macos"', + perPage: 1000, page: 1, sortField: 'created_at', sortOrder: 'desc', diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts index 581b46deebcfd..f8fe9d6e71453 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts @@ -11,8 +11,8 @@ import type { Entry, EntryNested, ExceptionListItemSchema, + FoundExceptionListItemSchema, } from '@kbn/securitysolution-io-ts-list-types'; -import { validate } from '@kbn/securitysolution-io-ts-utils'; import type { OperatingSystem } from '@kbn/securitysolution-utils'; import { hasSimpleExecutableName } from '@kbn/securitysolution-utils'; @@ -20,10 +20,11 @@ import type { ENDPOINT_BLOCKLISTS_LIST_ID, ENDPOINT_EVENT_FILTERS_LIST_ID, ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID, + ENDPOINT_LIST_ID, ENDPOINT_TRUSTED_APPS_LIST_ID, } from '@kbn/securitysolution-list-constants'; -import { ENDPOINT_LIST_ID } from '@kbn/securitysolution-list-constants'; import type { ExceptionListClient } from '@kbn/lists-plugin/server'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import type { InternalArtifactCompleteSchema, TranslatedEntry, @@ -74,18 +75,31 @@ export type ArtifactListId = | typeof ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID | typeof ENDPOINT_BLOCKLISTS_LIST_ID; -export async function getFilteredEndpointExceptionList({ +export function convertExceptionsToEndpointFormat( + exceptions: ExceptionListItemSchema[], + schemaVersion: string +) { + const translatedExceptions = { + entries: translateToEndpointExceptions(exceptions, schemaVersion), + }; + const [validated, errors] = validate(translatedExceptions, wrappedTranslatedExceptionList); + if (errors != null) { + throw new Error(errors); + } + + return validated as WrappedTranslatedExceptionList; +} + +export async function getFilteredEndpointExceptionListRaw({ elClient, filter, listId, - schemaVersion, }: { elClient: ExceptionListClient; filter: string; listId: ArtifactListId; - schemaVersion: string; -}): Promise { - const exceptions: WrappedTranslatedExceptionList = { entries: [] }; +}): Promise { + let exceptions: ExceptionListItemSchema[] = []; let page = 1; let paging = true; @@ -94,63 +108,39 @@ export async function getFilteredEndpointExceptionList({ listId, namespaceType: 'agnostic', filter, - perPage: 100, + perPage: 1000, page, sortField: 'created_at', sortOrder: 'desc', }); if (response?.data !== undefined) { - exceptions.entries = exceptions.entries.concat( - translateToEndpointExceptions(response.data, schemaVersion) - ); + exceptions = exceptions.concat(response.data); - paging = (page - 1) * 100 + response.data.length < response.total; + paging = (page - 1) * 1000 + response.data.length < response.total; page++; } else { break; } } - const [validated, errors] = validate(exceptions, wrappedTranslatedExceptionList); - if (errors != null) { - throw new Error(errors); - } - return validated as WrappedTranslatedExceptionList; + return exceptions; } -export async function getEndpointExceptionList({ +export async function getAllItemsFromEndpointExceptionList({ elClient, listId, os, - policyId, - schemaVersion, }: { elClient: ExceptionListClient; - listId?: ArtifactListId; + listId: ArtifactListId; os: string; - policyId?: string; - schemaVersion: string; -}): Promise { +}): Promise { const osFilter = `exception-list-agnostic.attributes.os_types:\"${os}\"`; - const policyFilter = `(exception-list-agnostic.attributes.tags:\"policy:all\"${ - policyId ? ` or exception-list-agnostic.attributes.tags:\"policy:${policyId}\"` : '' - })`; - // for endpoint list - if (!listId || listId === ENDPOINT_LIST_ID) { - return getFilteredEndpointExceptionList({ - elClient, - schemaVersion, - filter: `${osFilter}`, - listId: ENDPOINT_LIST_ID, - }); - } - // for TAs, EFs, Host IEs and Blocklists - return getFilteredEndpointExceptionList({ + return getFilteredEndpointExceptionListRaw({ elClient, - schemaVersion, - filter: `${osFilter} and ${policyFilter}`, + filter: osFilter, listId, }); } diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.test.ts index 5df2d67eeb582..ce9e8e2fc46c8 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.test.ts @@ -70,5 +70,17 @@ describe('artifact_client', () => { }); expect(fleetArtifactClient.deleteArtifact).toHaveBeenCalledWith('123'); }); + + test('can bulk delete artifacts', async () => { + await artifactClient.bulkDeleteArtifacts([ + 'endpoint-trustlist-linux-v1-sha26hash', + 'endpoint-trustlist-windows-v1-sha26hash', + ]); + expect(fleetArtifactClient.listArtifacts).toHaveBeenCalledTimes(0); + expect(fleetArtifactClient.bulkDeleteArtifacts).toHaveBeenCalledWith([ + 'endpoint-trustlist-linux-v1-sha26hash', + 'endpoint-trustlist-windows-v1-sha26hash', + ]); + }); }); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts index ed5723ddccf0e..3e00310a5bb64 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts @@ -24,6 +24,8 @@ export interface EndpointArtifactClientInterface { deleteArtifact(id: string): Promise; + bulkDeleteArtifacts(ids: string[]): Promise; + listArtifacts(options?: ListArtifactsProps): Promise>; } @@ -96,4 +98,8 @@ export class EndpointArtifactClient implements EndpointArtifactClientInterface { const artifactId = (await this.getArtifact(id))?.id!; return this.fleetArtifacts.deleteArtifact(artifactId); } + + async bulkDeleteArtifacts(ids: string[]): Promise { + return this.fleetArtifacts.bulkDeleteArtifacts(ids); + } } diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.mock.ts b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.mock.ts index aaf16057a0df9..cb947b5221dbb 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.mock.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.mock.ts @@ -5,7 +5,11 @@ * 2.0. */ -import { savedObjectsClientMock, loggingSystemMock } from '@kbn/core/server/mocks'; +import { + savedObjectsClientMock, + loggingSystemMock, + elasticsearchServiceMock, +} from '@kbn/core/server/mocks'; import type { Logger } from '@kbn/core/server'; import type { PackagePolicyClient } from '@kbn/fleet-plugin/server'; import { createPackagePolicyServiceMock } from '@kbn/fleet-plugin/server/mocks'; @@ -88,6 +92,8 @@ export const buildManifestManagerContextMock = ( artifactClient: createEndpointArtifactClientMock(), logger: loggingSystemMock.create().get() as jest.Mocked, experimentalFeatures: parseExperimentalConfigValue([]).features, + packagerTaskPackagePolicyUpdateBatchSize: 10, + esClient: elasticsearchServiceMock.createElasticsearchClient(), }; }; @@ -127,7 +133,7 @@ export const getManifestManagerMock = ( context.exceptionListClient.findExceptionListItem = jest .fn() .mockRejectedValue(new Error('unexpected thing happened')); - return super.buildExceptionListArtifacts(); + return super.buildExceptionListArtifacts([]); case ManifestManagerMockType.NormalFlow: return getMockArtifactsWithDiff(); } diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts index 28933fb35e81c..f6859015f42fc 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts @@ -349,10 +349,22 @@ describe('ManifestManager', () => { test('Builds fully new manifest if no baseline parameter passed and present exception list items', async () => { const exceptionListItem = getExceptionListItemSchemaMock({ os_types: ['macos'] }); - const trustedAppListItem = getExceptionListItemSchemaMock({ os_types: ['linux'] }); - const eventFiltersListItem = getExceptionListItemSchemaMock({ os_types: ['windows'] }); - const hostIsolationExceptionsItem = getExceptionListItemSchemaMock({ os_types: ['linux'] }); - const blocklistsListItem = getExceptionListItemSchemaMock({ os_types: ['macos'] }); + const trustedAppListItem = getExceptionListItemSchemaMock({ + os_types: ['linux'], + tags: ['policy:all'], + }); + const eventFiltersListItem = getExceptionListItemSchemaMock({ + os_types: ['windows'], + tags: ['policy:all'], + }); + const hostIsolationExceptionsItem = getExceptionListItemSchemaMock({ + os_types: ['linux'], + tags: ['policy:all'], + }); + const blocklistsListItem = getExceptionListItemSchemaMock({ + os_types: ['macos'], + tags: ['policy:all'], + }); const context = buildManifestManagerContextMock({}); const manifestManager = new ManifestManager(context); @@ -417,10 +429,22 @@ describe('ManifestManager', () => { test('Reuses artifacts when baseline parameter passed and present exception list items', async () => { const exceptionListItem = getExceptionListItemSchemaMock({ os_types: ['macos'] }); - const trustedAppListItem = getExceptionListItemSchemaMock({ os_types: ['linux'] }); - const eventFiltersListItem = getExceptionListItemSchemaMock({ os_types: ['windows'] }); - const hostIsolationExceptionsItem = getExceptionListItemSchemaMock({ os_types: ['linux'] }); - const blocklistsListItem = getExceptionListItemSchemaMock({ os_types: ['macos'] }); + const trustedAppListItem = getExceptionListItemSchemaMock({ + os_types: ['linux'], + tags: ['policy:all'], + }); + const eventFiltersListItem = getExceptionListItemSchemaMock({ + os_types: ['windows'], + tags: ['policy:all'], + }); + const hostIsolationExceptionsItem = getExceptionListItemSchemaMock({ + os_types: ['linux'], + tags: ['policy:all'], + }); + const blocklistsListItem = getExceptionListItemSchemaMock({ + os_types: ['macos'], + tags: ['policy:all'], + }); const context = buildManifestManagerContextMock({}); const manifestManager = new ManifestManager(context); @@ -486,15 +510,18 @@ describe('ManifestManager', () => { } }); - // test('Builds manifest with policy specific exception list items for trusted apps', async () => { const exceptionListItem = getExceptionListItemSchemaMock({ os_types: ['macos'] }); - const trustedAppListItem = getExceptionListItemSchemaMock({ os_types: ['linux'] }); + const trustedAppListItem = getExceptionListItemSchemaMock({ + os_types: ['linux'], + tags: ['policy:all'], + }); const trustedAppListItemPolicy2 = getExceptionListItemSchemaMock({ os_types: ['linux'], entries: [ { field: 'other.field', operator: 'included', type: 'match', value: 'other value' }, ], + tags: [`policy:${TEST_POLICY_ID_2}`], }); const context = buildManifestManagerContextMock({}); const manifestManager = new ManifestManager(context); @@ -502,8 +529,7 @@ describe('ManifestManager', () => { context.exceptionListClient.findExceptionListItem = mockFindExceptionListItemResponses({ [ENDPOINT_LIST_ID]: { macos: [exceptionListItem] }, [ENDPOINT_TRUSTED_APPS_LIST_ID]: { - linux: [trustedAppListItem], - [`linux-${TEST_POLICY_ID_2}`]: [trustedAppListItem, trustedAppListItemPolicy2], + linux: [trustedAppListItem, trustedAppListItemPolicy2], }, }); context.packagePolicyService.listIds = mockPolicyListIdsResponse([ @@ -574,14 +600,10 @@ describe('ManifestManager', () => { ]) ).resolves.toStrictEqual([]); - expect(context.artifactClient.deleteArtifact).toHaveBeenNthCalledWith( - 1, - ARTIFACT_ID_EXCEPTIONS_MACOS - ); - expect(context.artifactClient.deleteArtifact).toHaveBeenNthCalledWith( - 2, - ARTIFACT_ID_EXCEPTIONS_WINDOWS - ); + expect(context.artifactClient.bulkDeleteArtifacts).toHaveBeenCalledWith([ + ARTIFACT_ID_EXCEPTIONS_MACOS, + ARTIFACT_ID_EXCEPTIONS_WINDOWS, + ]); }); test('Returns errors for partial failures', async () => { @@ -590,10 +612,11 @@ describe('ManifestManager', () => { const manifestManager = new ManifestManager(context); const error = new Error(); - artifactClient.deleteArtifact.mockImplementation(async (id) => { - if (id === ARTIFACT_ID_EXCEPTIONS_WINDOWS) { - throw error; + artifactClient.bulkDeleteArtifacts.mockImplementation(async (ids): Promise => { + if (ids[1] === ARTIFACT_ID_EXCEPTIONS_WINDOWS) { + return [error]; } + return []; }); await expect( @@ -603,15 +626,11 @@ describe('ManifestManager', () => { ]) ).resolves.toStrictEqual([error]); - expect(artifactClient.deleteArtifact).toHaveBeenCalledTimes(2); - expect(artifactClient.deleteArtifact).toHaveBeenNthCalledWith( - 1, - ARTIFACT_ID_EXCEPTIONS_MACOS - ); - expect(artifactClient.deleteArtifact).toHaveBeenNthCalledWith( - 2, - ARTIFACT_ID_EXCEPTIONS_WINDOWS - ); + expect(artifactClient.bulkDeleteArtifacts).toHaveBeenCalledTimes(1); + expect(context.artifactClient.bulkDeleteArtifacts).toHaveBeenCalledWith([ + ARTIFACT_ID_EXCEPTIONS_MACOS, + ARTIFACT_ID_EXCEPTIONS_WINDOWS, + ]); }); }); @@ -790,12 +809,6 @@ describe('ManifestManager', () => { total: items.length, }); - const toNewPackagePolicy = (packagePolicy: PackagePolicy) => { - const { id, revision, updated_at: updatedAt, updated_by: updatedBy, ...rest } = packagePolicy; - - return rest; - }; - test('Should not dispatch if no policies', async () => { const context = buildManifestManagerContextMock({}); const manifestManager = new ManifestManager(context); @@ -807,7 +820,7 @@ describe('ManifestManager', () => { await expect(manifestManager.tryDispatch(manifest)).resolves.toStrictEqual([]); - expect(context.packagePolicyService.update).toHaveBeenCalledTimes(0); + expect(context.packagePolicyService.bulkUpdate).toHaveBeenCalledTimes(0); }); test('Should return errors if invalid config for package policy', async () => { @@ -825,7 +838,7 @@ describe('ManifestManager', () => { new EndpointError(`Package Policy ${TEST_POLICY_ID_1} has no 'inputs[0].config'`), ]); - expect(context.packagePolicyService.update).toHaveBeenCalledTimes(0); + expect(context.packagePolicyService.bulkUpdate).toHaveBeenCalledTimes(0); }); test('Should not dispatch if semantic version has not changed', async () => { @@ -854,7 +867,7 @@ describe('ManifestManager', () => { await expect(manifestManager.tryDispatch(manifest)).resolves.toStrictEqual([]); - expect(context.packagePolicyService.update).toHaveBeenCalledTimes(0); + expect(context.packagePolicyService.bulkUpdate).toHaveBeenCalledTimes(0); }); test('Should dispatch to only policies where list of artifacts changed', async () => { @@ -898,17 +911,16 @@ describe('ManifestManager', () => { }, }), ]); - context.packagePolicyService.update = jest.fn().mockResolvedValue({}); + context.packagePolicyService.bulkUpdate = jest.fn().mockResolvedValue({}); await expect(manifestManager.tryDispatch(manifest)).resolves.toStrictEqual([]); - expect(context.packagePolicyService.update).toHaveBeenCalledTimes(1); - expect(context.packagePolicyService.update).toHaveBeenNthCalledWith( + expect(context.packagePolicyService.bulkUpdate).toHaveBeenCalledTimes(1); + expect(context.packagePolicyService.bulkUpdate).toHaveBeenNthCalledWith( 1, expect.anything(), - undefined, - TEST_POLICY_ID_1, - toNewPackagePolicy( + context.esClient, + [ createPackagePolicyWithConfigMock({ id: TEST_POLICY_ID_1, config: { @@ -922,8 +934,8 @@ describe('ManifestManager', () => { }, }, }, - }) - ) + }), + ] ); }); @@ -970,17 +982,16 @@ describe('ManifestManager', () => { }, }), ]); - context.packagePolicyService.update = jest.fn().mockResolvedValue({}); + context.packagePolicyService.bulkUpdate = jest.fn().mockResolvedValue({}); await expect(manifestManager.tryDispatch(manifest)).resolves.toStrictEqual([]); - expect(context.packagePolicyService.update).toHaveBeenCalledTimes(1); - expect(context.packagePolicyService.update).toHaveBeenNthCalledWith( + expect(context.packagePolicyService.bulkUpdate).toHaveBeenCalledTimes(1); + expect(context.packagePolicyService.bulkUpdate).toHaveBeenNthCalledWith( 1, expect.anything(), - undefined, - TEST_POLICY_ID_1, - toNewPackagePolicy( + context.esClient, + [ createPackagePolicyWithConfigMock({ id: TEST_POLICY_ID_1, config: { @@ -994,8 +1005,8 @@ describe('ManifestManager', () => { }, }, }, - }) - ) + }), + ] ); }); @@ -1033,17 +1044,13 @@ describe('ManifestManager', () => { }, }), ]); - context.packagePolicyService.update = jest.fn().mockImplementation(async (...args) => { - if (args[2] === TEST_POLICY_ID_2) { - throw error; - } else { - return {}; - } - }); + context.packagePolicyService.bulkUpdate = jest + .fn() + .mockResolvedValue({ updatedPolicies: [{}], failedPolicies: [{ error }] }); await expect(manifestManager.tryDispatch(manifest)).resolves.toStrictEqual([error]); - expect(context.packagePolicyService.update).toHaveBeenCalledTimes(2); + expect(context.packagePolicyService.bulkUpdate).toHaveBeenCalledTimes(1); }); }); @@ -1074,9 +1081,9 @@ describe('ManifestManager', () => { const artifactToBeRemoved = await context.artifactClient.getArtifact(''); expect(artifactToBeRemoved).not.toBeUndefined(); - expect(context.artifactClient.deleteArtifact).toHaveBeenCalledWith( - getArtifactId(artifactToBeRemoved!) - ); + expect(context.artifactClient.bulkDeleteArtifacts).toHaveBeenCalledWith([ + getArtifactId(artifactToBeRemoved!), + ]); }); test('When there is no artifact to be removed', async () => { @@ -1113,7 +1120,7 @@ describe('ManifestManager', () => { await manifestManager.cleanup(manifest); - expect(context.artifactClient.deleteArtifact).toHaveBeenCalledTimes(0); + expect(context.artifactClient.bulkDeleteArtifacts).toHaveBeenCalledTimes(0); }); }); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts index 440e6366e262f..b7c98ef1b8773 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts @@ -7,17 +7,20 @@ import pMap from 'p-map'; import semver from 'semver'; -import { isEqual, isEmpty } from 'lodash'; +import { isEqual, isEmpty, chunk } from 'lodash'; +import type { ElasticsearchClient } from '@kbn/core/server'; import { type Logger, type SavedObjectsClientContract } from '@kbn/core/server'; import { ENDPOINT_EVENT_FILTERS_LIST_ID, ENDPOINT_TRUSTED_APPS_LIST_ID, ENDPOINT_BLOCKLISTS_LIST_ID, ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID, + ENDPOINT_LIST_ID, } from '@kbn/securitysolution-list-constants'; -import type { ListResult } from '@kbn/fleet-plugin/common'; +import type { ListResult, PackagePolicy } from '@kbn/fleet-plugin/common'; import type { PackagePolicyClient } from '@kbn/fleet-plugin/server'; import type { ExceptionListClient } from '@kbn/lists-plugin/server'; +import type { ExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; import type { ManifestSchemaVersion } from '../../../../../common/endpoint/schema/common'; import type { ManifestSchema } from '../../../../../common/endpoint/schema/manifest'; import { manifestDispatchSchema } from '../../../../../common/endpoint/schema/manifest'; @@ -26,9 +29,10 @@ import type { ArtifactListId } from '../../../lib/artifacts'; import { ArtifactConstants, buildArtifact, + getAllItemsFromEndpointExceptionList, getArtifactId, - getEndpointExceptionList, Manifest, + convertExceptionsToEndpointFormat, } from '../../../lib/artifacts'; import type { InternalArtifactCompleteSchema } from '../../../schemas/artifacts'; import { internalArtifactCompleteSchema } from '../../../schemas/artifacts'; @@ -49,36 +53,35 @@ interface BuildArtifactsForOsOptions { name: string; } -const iterateArtifactsBuildResult = async ( +const iterateArtifactsBuildResult = ( result: ArtifactsBuildResult, - callback: (artifact: InternalArtifactCompleteSchema, policyId?: string) => Promise + callback: (artifact: InternalArtifactCompleteSchema, policyId?: string) => void ) => { for (const artifact of result.defaultArtifacts) { - await callback(artifact); + callback(artifact); } for (const policyId of Object.keys(result.policySpecificArtifacts)) { for (const artifact of result.policySpecificArtifacts[policyId]) { - await callback(artifact, policyId); + callback(artifact, policyId); } } }; const iterateAllListItems = async ( - pageSupplier: (page: number) => Promise>, - itemCallback: (item: T) => void + pageSupplier: (page: number, perPage: number) => Promise>, + itemCallback: (items: T[]) => void ) => { let paging = true; let page = 1; + const perPage = 1000; while (paging) { - const { items, total } = await pageSupplier(page); + const { items, total } = await pageSupplier(page, perPage); - for (const item of items) { - await itemCallback(item); - } + itemCallback(items); - paging = (page - 1) * 20 + items.length < total; + paging = (page - 1) * perPage + items.length < total; page++; } }; @@ -90,6 +93,8 @@ export interface ManifestManagerContext { packagePolicyService: PackagePolicyClient; logger: Logger; experimentalFeatures: ExperimentalFeatures; + packagerTaskPackagePolicyUpdateBatchSize: number; + esClient: ElasticsearchClient; } const getArtifactIds = (manifest: ManifestSchema) => @@ -108,6 +113,9 @@ export class ManifestManager { protected logger: Logger; protected schemaVersion: ManifestSchemaVersion; protected experimentalFeatures: ExperimentalFeatures; + protected cachedExceptionsListsByOs: Map; + protected packagerTaskPackagePolicyUpdateBatchSize: number; + protected esClient: ElasticsearchClient; constructor(context: ManifestManagerContext) { this.artifactClient = context.artifactClient; @@ -117,6 +125,10 @@ export class ManifestManager { this.logger = context.logger; this.schemaVersion = 'v1'; this.experimentalFeatures = context.experimentalFeatures; + this.cachedExceptionsListsByOs = new Map(); + this.packagerTaskPackagePolicyUpdateBatchSize = + context.packagerTaskPackagePolicyUpdateBatchSize; + this.esClient = context.esClient; } /** @@ -129,45 +141,44 @@ export class ManifestManager { } /** - * Builds an artifact (one per supported OS) based on the current - * state of exception-list-agnostic SOs. + * Search or get exceptions from the cached map by listId and OS and filter those by policyId/global */ - protected async buildExceptionListArtifact(os: string): Promise { - return buildArtifact( - await getEndpointExceptionList({ - elClient: this.exceptionListClient, - schemaVersion: this.schemaVersion, + protected async getCachedExceptions({ + elClient, + listId, + os, + policyId, + schemaVersion, + }: { + elClient: ExceptionListClient; + listId: ArtifactListId; + os: string; + policyId?: string; + schemaVersion: string; + }) { + if (!this.cachedExceptionsListsByOs.has(`${listId}-${os}`)) { + const itemsByListId = await getAllItemsFromEndpointExceptionList({ + elClient, os, - }), - this.schemaVersion, - os, - ArtifactConstants.GLOBAL_ALLOWLIST_NAME - ); - } - - /** - * Builds an array of artifacts (one per supported OS) based on the current - * state of exception-list-agnostic SOs. - * - * @returns {Promise} An array of uncompressed artifacts built from exception-list-agnostic SOs. - * @throws Throws/rejects if there are errors building the list. - */ - protected async buildExceptionListArtifacts(): Promise { - const defaultArtifacts: InternalArtifactCompleteSchema[] = []; - const policySpecificArtifacts: Record = {}; + listId, + }); + this.cachedExceptionsListsByOs.set(`${listId}-${os}`, itemsByListId); + } - for (const os of ArtifactConstants.SUPPORTED_OPERATING_SYSTEMS) { - defaultArtifacts.push(await this.buildExceptionListArtifact(os)); + const allExceptionsByListId = this.cachedExceptionsListsByOs.get(`${listId}-${os}`); + if (!allExceptionsByListId) { + throw new InvalidInternalManifestError(`Error getting exceptions for ${listId}-${os}`); } - await iterateAllListItems( - (page) => this.listEndpointPolicyIds(page), - async (policyId) => { - policySpecificArtifacts[policyId] = defaultArtifacts; - } - ); + const filter = (exception: ExceptionListItemSchema) => + policyId + ? exception.tags.includes('policy:all') || exception.tags.includes(`policy:${policyId}`) + : exception.tags.includes('policy:all'); - return { defaultArtifacts, policySpecificArtifacts }; + const exceptions: ExceptionListItemSchema[] = + listId === ENDPOINT_LIST_ID ? allExceptionsByListId : allExceptionsByListId.filter(filter); + + return convertExceptionsToEndpointFormat(exceptions, schemaVersion); } /** @@ -185,7 +196,7 @@ export class ManifestManager { policyId?: string; } & BuildArtifactsForOsOptions): Promise { return buildArtifact( - await getEndpointExceptionList({ + await this.getCachedExceptions({ elClient: this.exceptionListClient, schemaVersion: this.schemaVersion, os, @@ -198,13 +209,72 @@ export class ManifestManager { ); } + /** + * Builds an artifact (by policy) based on the current state of the + * artifacts list (Trusted Apps, Host Iso. Exceptions, Event Filters, Blocklists) + * (which uses the `exception-list-agnostic` SO type) + */ + protected async buildArtifactsByPolicy( + allPolicyIds: string[], + supportedOSs: string[], + osOptions: BuildArtifactsForOsOptions + ) { + const policySpecificArtifacts: Record = {}; + await pMap( + allPolicyIds, + async (policyId) => { + for (const os of supportedOSs) { + policySpecificArtifacts[policyId] = policySpecificArtifacts[policyId] || []; + policySpecificArtifacts[policyId].push( + await this.buildArtifactsForOs({ os, policyId, ...osOptions }) + ); + } + }, + { + concurrency: 5, + /** When set to false, instead of stopping when a promise rejects, it will wait for all the promises to + * settle and then reject with an aggregated error containing all the errors from the rejected promises. */ + stopOnError: false, + } + ); + + return policySpecificArtifacts; + } + + /** + * Builds an array of artifacts (one per supported OS) based on the current + * state of exception-list-agnostic SOs. + * + * @returns {Promise} An array of uncompressed artifacts built from exception-list-agnostic SOs. + * @throws Throws/rejects if there are errors building the list. + */ + protected async buildExceptionListArtifacts( + allPolicyIds: string[] + ): Promise { + const defaultArtifacts: InternalArtifactCompleteSchema[] = []; + const policySpecificArtifacts: Record = {}; + const buildArtifactsForOsOptions: BuildArtifactsForOsOptions = { + listId: ENDPOINT_LIST_ID, + name: ArtifactConstants.GLOBAL_ALLOWLIST_NAME, + }; + + for (const os of ArtifactConstants.SUPPORTED_OPERATING_SYSTEMS) { + defaultArtifacts.push(await this.buildArtifactsForOs({ os, ...buildArtifactsForOsOptions })); + } + + allPolicyIds.forEach((policyId) => { + policySpecificArtifacts[policyId] = defaultArtifacts; + }); + + return { defaultArtifacts, policySpecificArtifacts }; + } + /** * Builds an array of artifacts (one per supported OS) based on the current state of the * Trusted Apps list (which uses the `exception-list-agnostic` SO type) */ - protected async buildTrustedAppsArtifacts(): Promise { + protected async buildTrustedAppsArtifacts(allPolicyIds: string[]): Promise { const defaultArtifacts: InternalArtifactCompleteSchema[] = []; - const policySpecificArtifacts: Record = {}; const buildArtifactsForOsOptions: BuildArtifactsForOsOptions = { listId: ENDPOINT_TRUSTED_APPS_LIST_ID, name: ArtifactConstants.GLOBAL_TRUSTED_APPS_NAME, @@ -214,17 +284,12 @@ export class ManifestManager { defaultArtifacts.push(await this.buildArtifactsForOs({ os, ...buildArtifactsForOsOptions })); } - await iterateAllListItems( - (page) => this.listEndpointPolicyIds(page), - async (policyId) => { - for (const os of ArtifactConstants.SUPPORTED_TRUSTED_APPS_OPERATING_SYSTEMS) { - policySpecificArtifacts[policyId] = policySpecificArtifacts[policyId] || []; - policySpecificArtifacts[policyId].push( - await this.buildArtifactsForOs({ os, policyId, ...buildArtifactsForOsOptions }) - ); - } - } - ); + const policySpecificArtifacts: Record = + await this.buildArtifactsByPolicy( + allPolicyIds, + ArtifactConstants.SUPPORTED_TRUSTED_APPS_OPERATING_SYSTEMS, + buildArtifactsForOsOptions + ); return { defaultArtifacts, policySpecificArtifacts }; } @@ -234,9 +299,10 @@ export class ManifestManager { * Event Filters list * @protected */ - protected async buildEventFiltersArtifacts(): Promise { + protected async buildEventFiltersArtifacts( + allPolicyIds: string[] + ): Promise { const defaultArtifacts: InternalArtifactCompleteSchema[] = []; - const policySpecificArtifacts: Record = {}; const buildArtifactsForOsOptions: BuildArtifactsForOsOptions = { listId: ENDPOINT_EVENT_FILTERS_LIST_ID, name: ArtifactConstants.GLOBAL_EVENT_FILTERS_NAME, @@ -246,17 +312,12 @@ export class ManifestManager { defaultArtifacts.push(await this.buildArtifactsForOs({ os, ...buildArtifactsForOsOptions })); } - await iterateAllListItems( - (page) => this.listEndpointPolicyIds(page), - async (policyId) => { - for (const os of ArtifactConstants.SUPPORTED_EVENT_FILTERS_OPERATING_SYSTEMS) { - policySpecificArtifacts[policyId] = policySpecificArtifacts[policyId] || []; - policySpecificArtifacts[policyId].push( - await this.buildArtifactsForOs({ os, policyId, ...buildArtifactsForOsOptions }) - ); - } - } - ); + const policySpecificArtifacts: Record = + await this.buildArtifactsByPolicy( + allPolicyIds, + ArtifactConstants.SUPPORTED_EVENT_FILTERS_OPERATING_SYSTEMS, + buildArtifactsForOsOptions + ); return { defaultArtifacts, policySpecificArtifacts }; } @@ -266,29 +327,23 @@ export class ManifestManager { * Blocklist list * @protected */ - protected async buildBlocklistArtifacts(): Promise { + protected async buildBlocklistArtifacts(allPolicyIds: string[]): Promise { const defaultArtifacts: InternalArtifactCompleteSchema[] = []; - const policySpecificArtifacts: Record = {}; const buildArtifactsForOsOptions: BuildArtifactsForOsOptions = { listId: ENDPOINT_BLOCKLISTS_LIST_ID, name: ArtifactConstants.GLOBAL_BLOCKLISTS_NAME, }; - for (const os of ArtifactConstants.SUPPORTED_EVENT_FILTERS_OPERATING_SYSTEMS) { + for (const os of ArtifactConstants.SUPPORTED_BLOCKLISTS_OPERATING_SYSTEMS) { defaultArtifacts.push(await this.buildArtifactsForOs({ os, ...buildArtifactsForOsOptions })); } - await iterateAllListItems( - (page) => this.listEndpointPolicyIds(page), - async (policyId) => { - for (const os of ArtifactConstants.SUPPORTED_EVENT_FILTERS_OPERATING_SYSTEMS) { - policySpecificArtifacts[policyId] = policySpecificArtifacts[policyId] || []; - policySpecificArtifacts[policyId].push( - await this.buildArtifactsForOs({ os, policyId, ...buildArtifactsForOsOptions }) - ); - } - } - ); + const policySpecificArtifacts: Record = + await this.buildArtifactsByPolicy( + allPolicyIds, + ArtifactConstants.SUPPORTED_BLOCKLISTS_OPERATING_SYSTEMS, + buildArtifactsForOsOptions + ); return { defaultArtifacts, policySpecificArtifacts }; } @@ -299,9 +354,10 @@ export class ManifestManager { * @returns */ - protected async buildHostIsolationExceptionsArtifacts(): Promise { + protected async buildHostIsolationExceptionsArtifacts( + allPolicyIds: string[] + ): Promise { const defaultArtifacts: InternalArtifactCompleteSchema[] = []; - const policySpecificArtifacts: Record = {}; const buildArtifactsForOsOptions: BuildArtifactsForOsOptions = { listId: ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID, name: ArtifactConstants.GLOBAL_HOST_ISOLATION_EXCEPTIONS_NAME, @@ -311,17 +367,12 @@ export class ManifestManager { defaultArtifacts.push(await this.buildArtifactsForOs({ os, ...buildArtifactsForOsOptions })); } - await iterateAllListItems( - (page) => this.listEndpointPolicyIds(page), - async (policyId) => { - for (const os of ArtifactConstants.SUPPORTED_HOST_ISOLATION_EXCEPTIONS_OPERATING_SYSTEMS) { - policySpecificArtifacts[policyId] = policySpecificArtifacts[policyId] || []; - policySpecificArtifacts[policyId].push( - await this.buildArtifactsForOs({ os, policyId, ...buildArtifactsForOsOptions }) - ); - } - } - ); + const policySpecificArtifacts: Record = + await this.buildArtifactsByPolicy( + allPolicyIds, + ArtifactConstants.SUPPORTED_HOST_ISOLATION_EXCEPTIONS_OPERATING_SYSTEMS, + buildArtifactsForOsOptions + ); return { defaultArtifacts, policySpecificArtifacts }; } @@ -385,16 +436,21 @@ export class ManifestManager { * @returns {Promise} Any errors encountered. */ public async deleteArtifacts(artifactIds: string[]): Promise { - const errors: Error[] = []; - for (const artifactId of artifactIds) { - try { - await this.artifactClient.deleteArtifact(artifactId); + try { + if (isEmpty(artifactIds)) { + return []; + } + const errors = await this.artifactClient.bulkDeleteArtifacts(artifactIds); + if (!isEmpty(errors)) { + return errors; + } + for (const artifactId of artifactIds) { this.logger.info(`Cleaned up artifact ${artifactId}`); - } catch (err) { - errors.push(err); } + return []; + } catch (err) { + return [err]; } - return errors; } /** @@ -461,14 +517,18 @@ export class ManifestManager { public async buildNewManifest( baselineManifest: Manifest = ManifestManager.createDefaultManifest(this.schemaVersion) ): Promise { + const allPolicyIds = await this.listEndpointPolicyIds(); const results = await Promise.all([ - this.buildExceptionListArtifacts(), - this.buildTrustedAppsArtifacts(), - this.buildEventFiltersArtifacts(), - this.buildHostIsolationExceptionsArtifacts(), - this.buildBlocklistArtifacts(), + this.buildExceptionListArtifacts(allPolicyIds), + this.buildTrustedAppsArtifacts(allPolicyIds), + this.buildEventFiltersArtifacts(allPolicyIds), + this.buildHostIsolationExceptionsArtifacts(allPolicyIds), + this.buildBlocklistArtifacts(allPolicyIds), ]); + // Clear cache as the ManifestManager instance is reused on every run. + this.cachedExceptionsListsByOs.clear(); + const manifest = new Manifest({ schemaVersion: this.schemaVersion, semanticVersion: baselineManifest.getSemanticVersion(), @@ -476,7 +536,7 @@ export class ManifestManager { }); for (const result of results) { - await iterateArtifactsBuildResult(result, async (artifact, policyId) => { + iterateArtifactsBuildResult(result, (artifact, policyId) => { const artifactToAdd = baselineManifest.getArtifact(getArtifactId(artifact)) || artifact; if (!internalArtifactCompleteSchema.is(artifactToAdd)) { throw new EndpointError( @@ -500,62 +560,83 @@ export class ManifestManager { * @returns {Promise} Any errors encountered. */ public async tryDispatch(manifest: Manifest): Promise { - const errors: Error[] = []; - + const allPackagePolicies: PackagePolicy[] = []; await iterateAllListItems( - (page) => this.listEndpointPolicies(page), - async (packagePolicy) => { - // eslint-disable-next-line @typescript-eslint/naming-convention - const { id, revision, updated_at, updated_by, ...newPackagePolicy } = packagePolicy; - if (newPackagePolicy.inputs.length > 0 && newPackagePolicy.inputs[0].config !== undefined) { - const oldManifest = newPackagePolicy.inputs[0].config.artifact_manifest ?? { - value: {}, - }; - - const newManifestVersion = manifest.getSemanticVersion(); - if (semver.gt(newManifestVersion, oldManifest.value.manifest_version)) { - const serializedManifest = manifest.toPackagePolicyManifest(packagePolicy.id); - - if (!manifestDispatchSchema.is(serializedManifest)) { - errors.push( - new EndpointError( - `Invalid manifest for policy ${packagePolicy.id}`, - serializedManifest - ) - ); - } else if (!manifestsEqual(serializedManifest, oldManifest.value)) { - newPackagePolicy.inputs[0].config.artifact_manifest = { value: serializedManifest }; - - try { - await this.packagePolicyService.update( - this.savedObjectsClient, - // @ts-expect-error TS2345 - undefined, - id, - newPackagePolicy - ); - this.logger.debug( - `Updated package policy ${id} with manifest version ${manifest.getSemanticVersion()}` - ); - } catch (err) { - errors.push(err); - } - } else { - this.logger.debug( - `No change in manifest content for package policy: ${id}. Staying on old version` - ); - } + (page, perPage) => this.listEndpointPolicies(page, perPage), + (packagePoliciesBatch) => { + allPackagePolicies.push(...packagePoliciesBatch); + } + ); + + const packagePoliciesToUpdate: PackagePolicy[] = []; + + const errors: Error[] = []; + allPackagePolicies.forEach((packagePolicy) => { + const { id } = packagePolicy; + if (packagePolicy.inputs.length > 0 && packagePolicy.inputs[0].config !== undefined) { + const oldManifest = packagePolicy.inputs[0].config.artifact_manifest ?? { + value: {}, + }; + + const newManifestVersion = manifest.getSemanticVersion(); + if (semver.gt(newManifestVersion, oldManifest.value.manifest_version)) { + const serializedManifest = manifest.toPackagePolicyManifest(id); + + if (!manifestDispatchSchema.is(serializedManifest)) { + errors.push(new EndpointError(`Invalid manifest for policy ${id}`, serializedManifest)); + } else if (!manifestsEqual(serializedManifest, oldManifest.value)) { + packagePolicy.inputs[0].config.artifact_manifest = { value: serializedManifest }; + packagePoliciesToUpdate.push(packagePolicy); } else { - this.logger.debug(`No change in manifest version for package policy: ${id}`); + this.logger.debug( + `No change in manifest content for package policy: ${id}. Staying on old version` + ); } } else { - errors.push( - new EndpointError(`Package Policy ${id} has no 'inputs[0].config'`, newPackagePolicy) - ); + this.logger.debug(`No change in manifest version for package policy: ${id}`); } + } else { + errors.push( + new EndpointError(`Package Policy ${id} has no 'inputs[0].config'`, packagePolicy) + ); } + }); + + // Split updates in batches with batch size: packagerTaskPackagePolicyUpdateBatchSize + const updateBatches = chunk( + packagePoliciesToUpdate, + this.packagerTaskPackagePolicyUpdateBatchSize ); + for (const currentBatch of updateBatches) { + const response = await this.packagePolicyService.bulkUpdate( + this.savedObjectsClient, + this.esClient, + currentBatch + ); + + // Parse errors + if (!isEmpty(response.failedPolicies)) { + errors.push( + ...response.failedPolicies.map((failedPolicy) => { + if (failedPolicy.error instanceof Error) { + return failedPolicy.error; + } else { + return new Error(failedPolicy.error.message); + } + }) + ); + } + // Log success updates + for (const updatedPolicy of response.updatedPolicies || []) { + this.logger.debug( + `Updated package policy ${ + updatedPolicy.id + } with manifest version ${manifest.getSemanticVersion()}` + ); + } + } + return errors; } @@ -583,20 +664,29 @@ export class ManifestManager { this.logger.info(`Committed manifest ${manifest.getSemanticVersion()}`); } - private async listEndpointPolicies(page: number) { + private async listEndpointPolicies(page: number, perPage: number) { return this.packagePolicyService.list(this.savedObjectsClient, { page, - perPage: 20, + perPage, kuery: 'ingest-package-policies.package.name:endpoint', }); } - private async listEndpointPolicyIds(page: number) { - return this.packagePolicyService.listIds(this.savedObjectsClient, { - page, - perPage: 20, - kuery: 'ingest-package-policies.package.name:endpoint', - }); + private async listEndpointPolicyIds() { + const allPolicyIds: string[] = []; + await iterateAllListItems( + (page, perPage) => { + return this.packagePolicyService.listIds(this.savedObjectsClient, { + page, + perPage, + kuery: 'ingest-package-policies.package.name:endpoint', + }); + }, + (packagePolicyIdsBatch) => { + allPolicyIds.push(...packagePolicyIdsBatch); + } + ); + return allPolicyIds; } public getArtifactsClient(): EndpointArtifactClientInterface { @@ -635,6 +725,7 @@ export class ManifestManager { } const badArtifacts = []; + const badArtifactIds = []; const manifestArtifactsIds = manifest .getAllArtifacts() @@ -646,6 +737,7 @@ export class ManifestManager { if (!isArtifactInManifest) { badArtifacts.push(fleetArtifact); + badArtifactIds.push(artifactId); } } @@ -657,16 +749,7 @@ export class ManifestManager { new EndpointError(`Cleaning up ${badArtifacts.length} orphan artifacts`, badArtifacts) ); - await pMap( - badArtifacts, - async (badArtifact) => this.artifactClient.deleteArtifact(getArtifactId(badArtifact)), - { - concurrency: 5, - /** When set to false, instead of stopping when a promise rejects, it will wait for all the promises to - * settle and then reject with an aggregated error containing all the errors from the rejected promises. */ - stopOnError: false, - } - ); + await this.artifactClient.bulkDeleteArtifacts(badArtifactIds); this.logger.info(`All orphan artifacts has been removed successfully`); } catch (error) { diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/mocks.ts index 3d7b7b92f90c4..2acfa7b7b4794 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/mocks.ts @@ -62,6 +62,9 @@ export const createEndpointArtifactClientMock = ( listArtifacts: jest.fn((...args) => endpointArtifactClientMocked.listArtifacts(...args)), getArtifact: jest.fn((...args) => endpointArtifactClientMocked.getArtifact(...args)), deleteArtifact: jest.fn((...args) => endpointArtifactClientMocked.deleteArtifact(...args)), + bulkDeleteArtifacts: jest.fn(async (...args) => + endpointArtifactClientMocked.bulkDeleteArtifacts(...args) + ), _esClient: esClient, }; }; diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index f3a6ace3f2acd..badc35993ab03 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -459,6 +459,8 @@ export class Plugin implements ISecuritySolutionPlugin { packagePolicyService: plugins.fleet.packagePolicyService, logger, experimentalFeatures: config.experimentalFeatures, + packagerTaskPackagePolicyUpdateBatchSize: config.packagerTaskPackagePolicyUpdateBatchSize, + esClient: core.elasticsearch.client.asInternalUser, }); // Migrate artifacts to fleet and then start the minifest task after that is done From 5f5d5525c4dd64d58bcf5fc67c2469bccf7a4f70 Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Thu, 29 Jun 2023 15:17:27 +0300 Subject: [PATCH 03/41] [TSVB] Stabilize the functional test (#160847) ## Summary Closes https://github.com/elastic/kibana/issues/158972 I think this change is going to stabilize this test once and for all. Runner 100times https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/2532 --- .../visualize/group5/_tsvb_time_series.ts | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/test/functional/apps/visualize/group5/_tsvb_time_series.ts b/test/functional/apps/visualize/group5/_tsvb_time_series.ts index 81b653630159f..e344f7d9f8dd7 100644 --- a/test/functional/apps/visualize/group5/_tsvb_time_series.ts +++ b/test/functional/apps/visualize/group5/_tsvb_time_series.ts @@ -11,14 +11,16 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { - const { visualize, visualBuilder, timeToVisualize, dashboard, header, common } = getPageObjects([ - 'visualBuilder', - 'visualize', - 'timeToVisualize', - 'dashboard', - 'header', - 'common', - ]); + const { visualize, visualBuilder, timeToVisualize, dashboard, header, common, visChart } = + getPageObjects([ + 'visualBuilder', + 'visualize', + 'timeToVisualize', + 'dashboard', + 'header', + 'common', + 'visChart', + ]); const security = getService('security'); const testSubjects = getService('testSubjects'); const retry = getService('retry'); @@ -28,8 +30,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const browser = getService('browser'); const kibanaServer = getService('kibanaServer'); - // Failing: See https://github.com/elastic/kibana/issues/158972 - describe.skip('visual builder', function describeIndexTests() { + describe('visual builder', function describeIndexTests() { before(async () => { await security.testUser.setRoles([ 'kibana_admin', @@ -223,11 +224,14 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should create a filter for series with multiple split by terms fields one of which has formatting', async () => { const expectedFilterPills = ['0, win 7']; await visualBuilder.setMetricsGroupByTerms('bytes'); + await visChart.waitForVisualizationRenderingStabilized(); await header.waitUntilLoadingHasFinished(); await visualBuilder.setAnotherGroupByTermsField('machine.os.raw'); + await visChart.waitForVisualizationRenderingStabilized(); await header.waitUntilLoadingHasFinished(); await visualBuilder.clickSeriesOption(); await visualBuilder.setChartType('Bar'); + await visChart.waitForVisualizationRenderingStabilized(); await header.waitUntilLoadingHasFinished(); await visualBuilder.clickPanelOptions('timeSeries'); await visualBuilder.setIntervalValue('1w'); From a156e4819323817d337379f417dc5b55203b8085 Mon Sep 17 00:00:00 2001 From: Steph Milovic Date: Thu, 29 Jun 2023 06:35:28 -0600 Subject: [PATCH 04/41] [Security solution] Elastic AI Assistant Modal CSS Improvements (#160799) --- .../assistant/assistant_overlay/index.tsx | 9 +- .../impl/assistant/index.tsx | 208 ++++++------- .../connectorland/connector_setup/index.tsx | 274 +++++++++--------- 3 files changed, 248 insertions(+), 243 deletions(-) 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 91200fd57ceb7..2f75406439e2b 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 @@ -18,11 +18,10 @@ import { WELCOME_CONVERSATION_TITLE } from '../use_conversation/translations'; const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0; const StyledEuiModal = styled(EuiModal)` - min-width: 1200px; - max-height: 100%; - height: 100%; + ${({ theme }) => `margin-top: ${theme.eui.euiSizeXXL};`} + min-width: 95vw; + min-height: 25vh; `; - /** * 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. @@ -79,7 +78,7 @@ export const AssistantOverlay: React.FC = React.memo(() => { return ( <> {isModalVisible && ( - + )} 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 6ff45eadcaaa3..6e2765816b9de 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx @@ -14,16 +14,16 @@ import { EuiHorizontalRule, EuiCommentList, EuiToolTip, - EuiSplitPanel, EuiSwitchEvent, EuiSwitch, EuiCallOut, EuiIcon, - EuiTitle, + EuiModalFooter, + EuiModalHeader, + EuiModalBody, + EuiModalHeaderTitle, } from '@elastic/eui'; -// eslint-disable-next-line @kbn/eslint/module_migration -import styled from 'styled-components'; import { createPortal } from 'react-dom'; import { css } from '@emotion/react'; @@ -48,26 +48,10 @@ import { getCombinedMessage } from './prompt/helpers'; import * as i18n from './translations'; import { QuickPrompts } from './quick_prompts/quick_prompts'; import { useLoadConnectors } from '../connectorland/use_load_connectors'; -import { ConnectorSetup } from '../connectorland/connector_setup'; +import { useConnectorSetup } from '../connectorland/connector_setup'; import { WELCOME_CONVERSATION_TITLE } from './use_conversation/translations'; import { BASE_CONVERSATIONS } from './use_conversation/sample_conversations'; -const CommentsContainer = styled.div` - max-height: 600px; - max-width: 100%; - overflow-y: scroll; -`; - -const ChatOptionsFlexItem = styled(EuiFlexItem)` - left: -34px; - position: relative; - top: 11px; -`; - -const StyledCommentList = styled(EuiCommentList)` - margin-right: 20px; -`; - export interface Props { promptContextId?: string; conversationId?: string; @@ -131,6 +115,13 @@ const AssistantComponent: React.FC = ({ ); const isWelcomeSetup = (connectors?.length ?? 0) === 0; + + const { connectorDialog, connectorPrompt } = useConnectorSetup({ + actionTypeRegistry, + http, + refetchConnectors, + isConnectorConfigured: !!connectors?.length, + }); const currentTitle: { title: string | JSX.Element; titleIcon: string } = isWelcomeSetup && welcomeConversation.theme?.title && welcomeConversation.theme?.titleIcon ? { title: welcomeConversation.theme?.title, titleIcon: welcomeConversation.theme?.titleIcon } @@ -336,29 +327,49 @@ const AssistantComponent: React.FC = ({ setShowMissingConnectorCallout(!connectorExists); }, [connectors, currentConversation]); + const CodeBlockPortals = useMemo( + () => + messageCodeBlocks.map((codeBlocks: CodeBlockDetails[]) => { + return codeBlocks.map((codeBlock: CodeBlockDetails) => { + const element: Element = codeBlock.controlContainer as Element; + + return codeBlock.controlContainer != null ? ( + createPortal(codeBlock.button, element) + ) : ( + <> + ); + }); + }), + [messageCodeBlocks] + ); return ( - - + <> + {showTitle && ( <> - + - - - - - - - {currentTitle.title} - - - + + + + + + {currentTitle.title} + + + = ({ )} {/* Create portals for each EuiCodeBlock to add the `Investigate in Timeline` action */} - {messageCodeBlocks.map((codeBlocks: CodeBlockDetails[]) => { - return codeBlocks.map((codeBlock: CodeBlockDetails) => { - const element: Element = codeBlock.controlContainer as Element; - - return codeBlock.controlContainer != null ? ( - createPortal(codeBlock.button, element) - ) : ( - <> - ); - }); - })} + {CodeBlockPortals} {!isWelcomeSetup && ( <> @@ -446,43 +447,59 @@ const AssistantComponent: React.FC = ({ {Object.keys(promptContexts).length > 0 && } )} + + + {isWelcomeSetup ? ( + connectorDialog + ) : ( + <> + - {isWelcomeSetup && ( - - )} - - {!isWelcomeSetup && ( - - <> - - - - - {(currentConversation.messages.length === 0 || - Object.keys(selectedPromptContexts).length > 0) && ( - - )} + + + {(currentConversation.messages.length === 0 || + Object.keys(selectedPromptContexts).length > 0) && ( + + )} -
- - +
+ )} - - + + + + {isWelcomeSetup && {connectorPrompt}} + + = ({ /> - + = ({ /> - + - - {!isWelcomeSetup && ( - - - - )} - + {!isWelcomeSetup && } + + ); }; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx index 6229419a397cf..66c58e2b9ac61 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useCallback, useRef, useState } from 'react'; +import React, { useCallback, useMemo, useRef, useState } from 'react'; import type { EuiCommentProps } from '@elastic/eui'; import { EuiAvatar, @@ -21,7 +21,7 @@ import { ConnectorAddModal } from '@kbn/triggers-actions-ui-plugin/public/common import type { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; import { HttpSetup } from '@kbn/core-http-browser'; -import { ActionTypeRegistryContract } from '@kbn/triggers-actions-ui-plugin/public'; +import { ActionType, ActionTypeRegistryContract } from '@kbn/triggers-actions-ui-plugin/public'; import { GEN_AI_CONNECTOR_ID, OpenAiProviderType, @@ -39,11 +39,6 @@ import { WELCOME_CONVERSATION_TITLE } from '../../assistant/use_conversation/tra const MESSAGE_INDEX_BEFORE_CONNECTOR = 2; -const CommentsContainer = styled.div` - max-height: 600px; - overflow-y: scroll; -`; - const StyledCommentList = styled(EuiCommentList)` margin-right: 20px; `; @@ -69,137 +64,136 @@ export interface ConnectorSetupProps { refetchConnectors?: () => void; } -export const ConnectorSetup: React.FC = React.memo( - ({ - actionTypeRegistry, - conversation = BASE_CONVERSATIONS[WELCOME_CONVERSATION_TITLE], - http, - isConnectorConfigured = false, - onSetupComplete, - refetchConnectors, - }) => { - const { appendMessage, setApiConfig, setConversation } = useConversation(); - const lastCommentRef = useRef(null); - const bottomRef = useRef(null); - - // Access all conversations so we can add connector to all on initial setup - const { conversations } = useAssistantContext(); - - const [isConnectorModalVisible, setIsConnectorModalVisible] = useState(false); - const [showAddConnectorButton, setShowAddConnectorButton] = useState(() => { - // If no presentation data on messages, default to showing add connector button so it doesn't delay render and flash on screen - return conversationHasNoPresentationData(conversation); - }); - const { data: actionTypes } = useLoadActionTypes({ http }); - - const actionType = actionTypes?.find((at) => at.id === GEN_AI_CONNECTOR_ID) ?? { - enabledInConfig: true, - enabledInLicense: true, - minimumLicenseRequired: 'platinum', - supportedFeatureIds: ['general'], - id: '.gen-ai', - name: 'Generative AI', - enabled: true, - }; - - // User constants - const userName = conversation.theme?.user?.name ?? i18n.CONNECTOR_SETUP_USER_YOU; - const assistantName = - conversation.theme?.assistant?.name ?? i18n.CONNECTOR_SETUP_USER_ASSISTANT; - - const [currentMessageIndex, setCurrentMessageIndex] = useState( - // If connector is configured or conversation has already been replayed show all messages immediately - isConnectorConfigured || conversationHasNoPresentationData(conversation) - ? MESSAGE_INDEX_BEFORE_CONNECTOR - : 0 - ); - - // Once streaming of previous message is complete, proceed to next message - const onHandleMessageStreamingComplete = useCallback(() => { - const timeoutId = setTimeout( - () => setCurrentMessageIndex(currentMessageIndex + 1), - conversation.messages[currentMessageIndex].presentation?.delay ?? 0 - ); - - return () => clearTimeout(timeoutId); - }, [conversation.messages, currentMessageIndex]); - - // Show button to add connector after last message has finished streaming - const onHandleLastMessageStreamingComplete = useCallback(() => { - setShowAddConnectorButton(true); - onSetupComplete?.(); - setConversation({ conversation: clearPresentationData(conversation) }); - }, [conversation, onSetupComplete, setConversation]); - - // Show button to add connector after last message has finished streaming - const handleSkipSetup = useCallback(() => { - setCurrentMessageIndex(MESSAGE_INDEX_BEFORE_CONNECTOR); - }, [setCurrentMessageIndex]); - - // Create EuiCommentProps[] from conversation messages - const commentBody = useCallback( - (message: Message, index: number, length: number) => { - // If timestamp is not set, set it to current time (will update conversation at end of setup) - if (conversation.messages[index].timestamp.length === 0) { - conversation.messages[index].timestamp = new Date().toLocaleString(); - } - const isLastMessage = index === length - 1; - const enableStreaming = - (message.presentation?.stream ?? false) && currentMessageIndex !== length - 1; - return ( - - {(streamedText, isStreamingComplete) => ( - - {streamedText} - {isLastMessage && isStreamingComplete && } - - )} - - ); +export const useConnectorSetup = ({ + actionTypeRegistry, + conversation = BASE_CONVERSATIONS[WELCOME_CONVERSATION_TITLE], + http, + isConnectorConfigured = false, + onSetupComplete, + refetchConnectors, +}: ConnectorSetupProps): { + connectorDialog: React.ReactElement; + connectorPrompt: React.ReactElement; +} => { + const { appendMessage, setApiConfig, setConversation } = useConversation(); + const lastCommentRef = useRef(null); + + // Access all conversations so we can add connector to all on initial setup + const { conversations } = useAssistantContext(); + + const [isConnectorModalVisible, setIsConnectorModalVisible] = useState(false); + const [showAddConnectorButton, setShowAddConnectorButton] = useState(() => { + // If no presentation data on messages, default to showing add connector button so it doesn't delay render and flash on screen + return conversationHasNoPresentationData(conversation); + }); + const { data: actionTypes } = useLoadActionTypes({ http }); + const actionType: ActionType = useMemo( + () => + actionTypes?.find((at) => at.id === GEN_AI_CONNECTOR_ID) ?? { + enabledInConfig: true, + enabledInLicense: true, + minimumLicenseRequired: 'platinum', + supportedFeatureIds: ['general'], + id: '.gen-ai', + name: 'Generative AI', + enabled: true, }, - [ - conversation.messages, - currentMessageIndex, - onHandleLastMessageStreamingComplete, - onHandleMessageStreamingComplete, - ] + [actionTypes] + ); + + // User constants + const userName = conversation.theme?.user?.name ?? i18n.CONNECTOR_SETUP_USER_YOU; + const assistantName = conversation.theme?.assistant?.name ?? i18n.CONNECTOR_SETUP_USER_ASSISTANT; + + const [currentMessageIndex, setCurrentMessageIndex] = useState( + // If connector is configured or conversation has already been replayed show all messages immediately + isConnectorConfigured || conversationHasNoPresentationData(conversation) + ? MESSAGE_INDEX_BEFORE_CONNECTOR + : 0 + ); + + // Once streaming of previous message is complete, proceed to next message + const onHandleMessageStreamingComplete = useCallback(() => { + const timeoutId = setTimeout( + () => setCurrentMessageIndex(currentMessageIndex + 1), + conversation.messages[currentMessageIndex].presentation?.delay ?? 0 ); - return ( - <> - - { - const isUser = message.role === 'user'; - - const commentProps: EuiCommentProps = { - username: isUser ? userName : assistantName, - children: commentBody(message, index, conversation.messages.length), - timelineAvatar: ( - - ), - timestamp: `${i18n.CONNECTOR_SETUP_TIMESTAMP_AT}: ${message.timestamp}`, - }; - return commentProps; - })} - /> -
- + return () => clearTimeout(timeoutId); + }, [conversation.messages, currentMessageIndex]); + + // Show button to add connector after last message has finished streaming + const onHandleLastMessageStreamingComplete = useCallback(() => { + setShowAddConnectorButton(true); + onSetupComplete?.(); + setConversation({ conversation: clearPresentationData(conversation) }); + }, [conversation, onSetupComplete, setConversation]); + + // Show button to add connector after last message has finished streaming + const handleSkipSetup = useCallback(() => { + setCurrentMessageIndex(MESSAGE_INDEX_BEFORE_CONNECTOR); + }, [setCurrentMessageIndex]); + + // Create EuiCommentProps[] from conversation messages + const commentBody = useCallback( + (message: Message, index: number, length: number) => { + // If timestamp is not set, set it to current time (will update conversation at end of setup) + if (conversation.messages[index].timestamp.length === 0) { + conversation.messages[index].timestamp = new Date().toLocaleString(); + } + const isLastMessage = index === length - 1; + const enableStreaming = + (message.presentation?.stream ?? false) && currentMessageIndex !== length - 1; + return ( + + {(streamedText, isStreamingComplete) => ( + + {streamedText} + {isLastMessage && isStreamingComplete && } + + )} + + ); + }, + [ + conversation.messages, + currentMessageIndex, + onHandleLastMessageStreamingComplete, + onHandleMessageStreamingComplete, + ] + ); + + return { + connectorDialog: ( + { + const isUser = message.role === 'user'; + + const commentProps: EuiCommentProps = { + username: isUser ? userName : assistantName, + children: commentBody(message, index, conversation.messages.length), + timelineAvatar: ( + + ), + timestamp: `${i18n.CONNECTOR_SETUP_TIMESTAMP_AT}: ${message.timestamp}`, + }; + return commentProps; + })} + /> + ), + connectorPrompt: ( +
{(showAddConnectorButton || isConnectorConfigured) && ( = React.memo )} - {isConnectorModalVisible && ( = React.memo )} - - ); - } -); -ConnectorSetup.displayName = 'ConnectorSetup'; +
+ ), + }; +}; From 065ded6ff71d793183314db0cc72ddbf5bd6d88d Mon Sep 17 00:00:00 2001 From: Kevin Qualters <56408403+kqualters-elastic@users.noreply.github.com> Date: Thu, 29 Jun 2023 08:44:59 -0400 Subject: [PATCH 05/41] [Unified Search] Enable filtersBuilder depth of 1 (#160691) ## Summary Think the filters builder component does not allow a maxDepth of 1 correctly, as behavior in that state is indistinguishable from usage of the component with a maxDepth of 0, both states only allow top level ANDs only. With this change, it's possible to have 1 level of nesting of either type, but no deeper. The renderedLevel prop will never go above 0 without this change with 0 or 1 as well, it now matches maxDepth. After: image Before maxDepth 0: image (Or is never an option) Before maxDepth 1: image (Or is never an option) Before maxDepth 2: image Works as expected --- .../unified_search/public/filters_builder/filter_group.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/unified_search/public/filters_builder/filter_group.tsx b/src/plugins/unified_search/public/filters_builder/filter_group.tsx index cad3cee7a9063..73813e512a229 100644 --- a/src/plugins/unified_search/public/filters_builder/filter_group.tsx +++ b/src/plugins/unified_search/public/filters_builder/filter_group.tsx @@ -81,7 +81,7 @@ export const FilterGroup = ({ } = useContext(FiltersBuilderContextType); const pathInArray = getPathInArray(path); - const isDepthReached = maxDepth <= pathInArray.length; + const isDepthReached = maxDepth <= pathInArray.length && renderedLevel > 0; const orDisabled = hideOr || (isDepthReached && booleanRelation === BooleanRelation.AND); const andDisabled = isDepthReached && booleanRelation === BooleanRelation.OR; From a43ee939b535ce0187efee9d9b3308f6773c97e3 Mon Sep 17 00:00:00 2001 From: Tomasz Ciecierski Date: Thu, 29 Jun 2023 14:46:57 +0200 Subject: [PATCH 06/41] [Defend workflows] Fix action status on action list (#160758) --- .../data_generators/fleet_action_generator.ts | 2 +- .../components/actions_log_table.tsx | 5 +- .../services/actions/action_details_by_id.ts | 2 +- .../endpoint/services/actions/action_list.ts | 2 +- .../endpoint/services/actions/utils.test.ts | 177 ++++++++++++++---- .../server/endpoint/services/actions/utils.ts | 24 ++- 6 files changed, 167 insertions(+), 45 deletions(-) diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts b/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts index 1b60699e7c19f..d0baf3fbe2a7d 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts @@ -30,7 +30,7 @@ export class FleetActionGenerator extends BaseDataGenerator { expiration: this.randomFutureDate(timeStamp), type: 'INPUT_ACTION', input_type: 'endpoint', - agents: [this.seededUUIDv4()], + agents: overrides.agents ? overrides.agents : [this.seededUUIDv4()], user_id: 'elastic', data: { command: this.randomResponseActionCommand(), diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_table.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_table.tsx index a1b14f31bf57c..74ad9e92fec07 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_table.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_table.tsx @@ -212,11 +212,12 @@ const getResponseActionListTableColumns = ({ }, }, { + field: 'status', name: TABLE_COLUMN_NAMES.status, width: !showHostNames ? '15%' : '10%', - render: (action: ActionListApiResponse['data'][number]) => { - const _status = action.errors?.length ? 'failed' : action.status; + render: (_status: ActionListApiResponse['data'][number]['status']) => { const status = getActionStatus(_status); + return ( { }); it('should show complete `false` if no action ids', () => { - expect(getActionCompletionInfo([], [])).toEqual({ ...NOT_COMPLETED_OUTPUT, agentState: {} }); + expect( + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: [], + }) + ), + [] + ) + ).toEqual({ + ...NOT_COMPLETED_OUTPUT, + agentState: {}, + }); }); it('should show complete as `false` if no responses', () => { - expect(getActionCompletionInfo(['123'], [])).toEqual(NOT_COMPLETED_OUTPUT); + expect( + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: ['123'], + }) + ), + [] + ) + ).toEqual(NOT_COMPLETED_OUTPUT); }); it('should show complete as `false` if no Endpoint response', () => { expect( getActionCompletionInfo( - ['123'], + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: ['123'], + }) + ), [ fleetActionGenerator.generateActivityLogActionResponse({ item: { data: { action_id: '123' } }, @@ -156,7 +181,16 @@ describe('When using Actions service utilities', () => { }, }, }); - expect(getActionCompletionInfo(['123'], [endpointResponse])).toEqual({ + expect( + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: ['123'], + }) + ), + [endpointResponse] + ) + ).toEqual({ isCompleted: true, completedAt: COMPLETED_AT, errors: undefined, @@ -201,7 +235,16 @@ describe('When using Actions service utilities', () => { }, }, }); - expect(getActionCompletionInfo(['123'], [endpointResponse])).toEqual({ + expect( + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: ['123'], + }) + ), + [endpointResponse] + ) + ).toEqual({ isCompleted: true, completedAt: COMPLETED_AT, errors: undefined, @@ -255,7 +298,16 @@ describe('When using Actions service utilities', () => { }); it('should show `wasSuccessful` as `false` if endpoint action response has error', () => { - expect(getActionCompletionInfo(['123'], [endpointResponseAtError])).toEqual({ + expect( + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: ['123'], + }) + ), + [endpointResponseAtError] + ) + ).toEqual({ completedAt: endpointResponseAtError.item.data['@timestamp'], errors: ['Endpoint action response error: endpoint failed to apply'], isCompleted: true, @@ -273,7 +325,16 @@ describe('When using Actions service utilities', () => { }); it('should show `wasSuccessful` as `false` if fleet action response has error (no endpoint response)', () => { - expect(getActionCompletionInfo(['123'], [fleetResponseAtError])).toEqual({ + expect( + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: ['123'], + }) + ), + [fleetResponseAtError] + ) + ).toEqual({ completedAt: fleetResponseAtError.item.data.completed_at, errors: ['Fleet action response error: agent failed to deliver'], isCompleted: true, @@ -292,7 +353,14 @@ describe('When using Actions service utilities', () => { it('should include both fleet and endpoint errors if both responses returned failure', () => { expect( - getActionCompletionInfo(['123'], [fleetResponseAtError, endpointResponseAtError]) + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: ['123'], + }) + ), + [fleetResponseAtError, endpointResponseAtError] + ) ).toEqual({ completedAt: endpointResponseAtError.item.data['@timestamp'], errors: [ @@ -374,7 +442,16 @@ describe('When using Actions service utilities', () => { }); it('should show complete as `false` if no responses', () => { - expect(getActionCompletionInfo(agentIds, [])).toEqual({ + expect( + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: agentIds, + }) + ), + [] + ) + ).toEqual({ ...NOT_COMPLETED_OUTPUT, agentState: { ...NOT_COMPLETED_OUTPUT.agentState, @@ -396,14 +473,21 @@ describe('When using Actions service utilities', () => { it('should complete as `false` if at least one agent id has not received a response', () => { expect( - getActionCompletionInfo(agentIds, [ - ...action123Responses, - - // Action id: 456 === Not complete (only fleet response) - action456Responses[0], - - ...action789Responses, - ]) + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: agentIds, + }) + ), + [ + ...action123Responses, + + // Action id: 456 === Not complete (only fleet response) + action456Responses[0], + + ...action789Responses, + ] + ) ).toEqual({ ...NOT_COMPLETED_OUTPUT, outputs: expect.any(Object), @@ -432,11 +516,14 @@ describe('When using Actions service utilities', () => { it('should show complete as `true` if all agent response were received', () => { expect( - getActionCompletionInfo(agentIds, [ - ...action123Responses, - ...action456Responses, - ...action789Responses, - ]) + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: agentIds, + }) + ), + [...action123Responses, ...action456Responses, ...action789Responses] + ) ).toEqual({ isCompleted: true, completedAt: COMPLETED_AT, @@ -471,14 +558,21 @@ describe('When using Actions service utilities', () => { action456Responses[0].item.data['@timestamp'] = '2022-05-06T12:50:19.747Z'; expect( - getActionCompletionInfo(agentIds, [ - ...action123Responses, - - // Action id: 456 === is complete with only a fleet response that has `error` - action456Responses[0], - - ...action789Responses, - ]) + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: agentIds, + }) + ), + [ + ...action123Responses, + + // Action id: 456 === is complete with only a fleet response that has `error` + action456Responses[0], + + ...action789Responses, + ] + ) ).toEqual({ completedAt: '2022-05-06T12:50:19.747Z', errors: ['Fleet action response error: something is no good'], @@ -528,14 +622,21 @@ describe('When using Actions service utilities', () => { }; expect( - getActionCompletionInfo(agentIds, [ - ...action123Responses, - - // Action id: 456 === Not complete (only fleet response) - action456Responses[0], - - ...action789Responses, - ]) + getActionCompletionInfo( + mapToNormalizedActionRequest( + fleetActionGenerator.generate({ + agents: agentIds, + }) + ), + [ + ...action123Responses, + + // Action id: 456 === Not complete (only fleet response) + action456Responses[0], + + ...action789Responses, + ] + ) ).toEqual({ ...NOT_COMPLETED_OUTPUT, agentState: { diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.ts index 188e2b6153ede..1d16c944d2cef 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.ts @@ -115,11 +115,12 @@ type ActionCompletionInfo = Pick< >; export const getActionCompletionInfo = ( - /** List of agents that the action was sent to */ - agentIds: string[], + /** The normalized action request */ + action: NormalizedActionRequest, /** List of action Log responses received for the action */ actionResponses: Array ): ActionCompletionInfo => { + const agentIds = action.agents; const completedInfo: ActionCompletionInfo = { completedAt: undefined, errors: undefined, @@ -191,6 +192,25 @@ export const getActionCompletionInfo = ( } } + // If the action request has an Error, then we'll never get actual response from all of the agents + // to which this action sent. In this case, we adjust the completion information to all be "complete" + // and un-successful + if (action.error?.message) { + const errorMessage = action.error.message; + + completedInfo.completedAt = action.createdAt; + completedInfo.isCompleted = true; + completedInfo.wasSuccessful = false; + completedInfo.errors = [errorMessage]; + + Object.values(completedInfo.agentState).forEach((agentState) => { + agentState.completedAt = action.createdAt; + agentState.isCompleted = true; + agentState.wasSuccessful = false; + agentState.errors = [errorMessage]; + }); + } + return completedInfo; }; From 89b97a52ecfe81c80c4680db096c7f5680c94360 Mon Sep 17 00:00:00 2001 From: Pius Date: Thu, 29 Jun 2023 05:51:02 -0700 Subject: [PATCH 07/41] Add Fleet audit logging memory leak to 8.8.0-8.8.1 known issues (#160566) This PR adds Fleet audit logging memory leak to 8.8.0-8.8.1 known issues. Ref: https://github.com/elastic/kibana/pull/159807 Co-authored-by: James Rodewig Co-authored-by: David Kilfoyle <41695641+kilfoyle@users.noreply.github.com> --- docs/CHANGELOG.asciidoc | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc index 5f8d59b459a07..e90fe1cbc9a1a 100644 --- a/docs/CHANGELOG.asciidoc +++ b/docs/CHANGELOG.asciidoc @@ -105,6 +105,26 @@ Uptime:: Review the following information about the {kib} 8.8.1 release. +[float] +[[known-issues-8.8.1]] +=== Known issues + +// tag::known-issue-159807[] +[discrete] +.Memory leak in {fleet} audit logging. +[%collapsible] +==== +*Details* + +{fleet} introduced audit logging for various CRUD (create, read, update, and delete) operations in version 8.8.0. + +While audit logging is not enabled by default, we have identified an off-heap memory leak in the implementation of {fleet} audit logging that can result in poor {kib} performance, and in some cases {kib} instances being terminated by the OS kernel's oom-killer. This memory leak can occur even when {kib} audit logging is not explicitly enabled (regardless of whether `xpack.security.audit.enabled` is set in the `kibana.yml` settings file). + +*Impact* + +The version 8.8.2 release includes in {kibana-pull}159807[a fix] for this problem. If you are using {fleet} integrations +and {kib} audit logging in version 8.8.0 or 8.8.1, you should upgrade to 8.8.2 or above to obtain the fix. +==== +// end::known-issue-159807[] + [float] [[breaking-changes-8.8.1]] === Breaking changes @@ -196,6 +216,20 @@ The 8.8.1 release includes in {kibana-pull}158940[a fix] for this problem. Custo ==== // end::known-issue-158940[] +// tag::known-issue-159807[] +[discrete] +.Memory leak in {fleet} audit logging. +[%collapsible] +==== +*Details* + +{fleet} introduced audit logging for various CRUD (create, read, update, and delete) operations in version 8.8.0. +While audit logging is not enabled by default, we have identified an off-heap memory leak in the implementation of {fleet} audit logging that can result in poor {kib} performance, and in some cases {kib} instances being terminated by the OS kernel's oom-killer. This memory leak can occur even when {kib} audit logging is not explicitly enabled (regardless of whether `xpack.security.audit.enabled` is set in the `kibana.yml` settings file). +*Impact* + +The version 8.8.2 release includes in {kibana-pull}159807[a fix] for this problem. If you are using {fleet} integrations +and {kib} audit logging in version 8.8.0 or 8.8.1, you should upgrade to 8.8.2 or above to obtain the fix. +==== +// end::known-issue-159807[] + // tag::known-issue-155203[] [discrete] .Monitors in Synthetics may stop running From c30251c46aa4e1b96cbcf4ec89b0b009e6a3a00e Mon Sep 17 00:00:00 2001 From: Milton Hultgren Date: Thu, 29 Jun 2023 15:26:15 +0200 Subject: [PATCH 08/41] [synthtrace] Add support for Infra, Asset and Monitoring data (#160479) Closes #154081 In order to make it easier to test the Assets API signal source mode, we wanted an easy way to generate test data for the signals we consume. Since Synthtrace already produces test data for APM services and is integrated with FTR, we felt it was a good path to try to extend it with assets and infra data (which will benefit other teams as well in the future). This PR adds some barebones entities, and re-introduces the Monitoring entities that had been removed in the past (hopefully this time in a way that is unobtrusive). In order to accommodate these new entities, this PR also extracts a base client from the existing APM client, in order to share common code between the new entity clients. --- packages/kbn-apm-synthtrace-client/index.ts | 8 +- .../src/lib/apm/service.ts | 10 + .../src/lib/assets/index.ts | 55 ++++++ .../src/lib/infra/container.ts | 50 +++++ .../src/lib/infra/host.ts | 51 +++++ .../src/lib/infra/index.ts | 19 ++ .../src/lib/infra/pod.ts | 53 ++++++ .../src/lib/monitoring/cluster.ts | 34 ++++ .../src/lib/monitoring/cluster_stats.ts | 47 +++++ .../src/lib/monitoring/index.ts | 19 ++ .../src/lib/monitoring/kibana.ts | 37 ++++ .../src/lib/monitoring/kibana_stats.ts | 55 ++++++ packages/kbn-apm-synthtrace/index.ts | 6 + .../apm_synthtrace_es_client/apm_pipeline.ts | 59 ++++++ .../client/apm_synthtrace_es_client/index.ts | 178 ++---------------- .../lib/assets/assets_synthtrace_es_client.ts | 58 ++++++ .../lib/infra/infra_synthtrace_es_client.ts | 62 ++++++ .../monitoring_synthtrace_es_client.ts | 64 +++++++ .../src/lib/shared/base_client.ts | 128 +++++++++++++ .../get_dedot_transform.ts | 0 .../get_serialize_transform.ts | 0 .../apis/asset_manager/config.ts | 76 +++++++- .../apis/asset_manager/types.ts | 19 ++ 23 files changed, 920 insertions(+), 168 deletions(-) create mode 100644 packages/kbn-apm-synthtrace-client/src/lib/assets/index.ts create mode 100644 packages/kbn-apm-synthtrace-client/src/lib/infra/container.ts create mode 100644 packages/kbn-apm-synthtrace-client/src/lib/infra/host.ts create mode 100644 packages/kbn-apm-synthtrace-client/src/lib/infra/index.ts create mode 100644 packages/kbn-apm-synthtrace-client/src/lib/infra/pod.ts create mode 100644 packages/kbn-apm-synthtrace-client/src/lib/monitoring/cluster.ts create mode 100644 packages/kbn-apm-synthtrace-client/src/lib/monitoring/cluster_stats.ts create mode 100644 packages/kbn-apm-synthtrace-client/src/lib/monitoring/index.ts create mode 100644 packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana.ts create mode 100644 packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana_stats.ts create mode 100644 packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/apm_pipeline.ts create mode 100644 packages/kbn-apm-synthtrace/src/lib/assets/assets_synthtrace_es_client.ts create mode 100644 packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts create mode 100644 packages/kbn-apm-synthtrace/src/lib/monitoring/monitoring_synthtrace_es_client.ts create mode 100644 packages/kbn-apm-synthtrace/src/lib/shared/base_client.ts rename packages/kbn-apm-synthtrace/src/lib/{apm/client/apm_synthtrace_es_client => shared}/get_dedot_transform.ts (100%) rename packages/kbn-apm-synthtrace/src/lib/{apm/client/apm_synthtrace_es_client => shared}/get_serialize_transform.ts (100%) create mode 100644 x-pack/test/api_integration/apis/asset_manager/types.ts diff --git a/packages/kbn-apm-synthtrace-client/index.ts b/packages/kbn-apm-synthtrace-client/index.ts index 1868cb188582e..04bef11e3f657 100644 --- a/packages/kbn-apm-synthtrace-client/index.ts +++ b/packages/kbn-apm-synthtrace-client/index.ts @@ -19,15 +19,17 @@ export type { OSInfo, } from './src/lib/apm/mobile_device'; export { httpExitSpan } from './src/lib/apm/span'; +export { type AssetDocument } from './src/lib/assets'; export { DistributedTrace } from './src/lib/dsl/distributed_trace_client'; export { serviceMap } from './src/lib/dsl/service_map'; export type { Fields } from './src/lib/entity'; +export { infra, type InfraDocument } from './src/lib/infra'; +export { parseInterval } from './src/lib/interval'; +export { monitoring, type MonitoringDocument } from './src/lib/monitoring'; export type { Serializable } from './src/lib/serializable'; export { timerange } from './src/lib/timerange'; export type { Timerange } from './src/lib/timerange'; +export { dedot } from './src/lib/utils/dedot'; export { generateLongId, generateShortId } from './src/lib/utils/generate_id'; export { appendHash, hashKeysOf } from './src/lib/utils/hash'; -export { dedot } from './src/lib/utils/dedot'; export type { ESDocumentWithOperation, SynthtraceESAction, SynthtraceGenerator } from './src/types'; - -export { parseInterval } from './src/lib/interval'; diff --git a/packages/kbn-apm-synthtrace-client/src/lib/apm/service.ts b/packages/kbn-apm-synthtrace-client/src/lib/apm/service.ts index 1925c0cdcfd13..668834e73106e 100644 --- a/packages/kbn-apm-synthtrace-client/src/lib/apm/service.ts +++ b/packages/kbn-apm-synthtrace-client/src/lib/apm/service.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import { ServiceAsset } from '../assets'; import { Entity } from '../entity'; import { ApmFields } from './apm_fields'; import { Instance } from './instance'; @@ -18,6 +19,15 @@ export class Service extends Entity { 'host.name': instanceName, }); } + + asset() { + return new ServiceAsset({ + 'asset.kind': 'service', + 'asset.id': this.fields['service.name']!, + 'asset.name': this.fields['service.name'], + 'asset.ean': `service:${this.fields['service.name']}`, + }); + } } export function service(name: string, environment: string, agentName: string): Service; diff --git a/packages/kbn-apm-synthtrace-client/src/lib/assets/index.ts b/packages/kbn-apm-synthtrace-client/src/lib/assets/index.ts new file mode 100644 index 0000000000000..f449dd75972b7 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/assets/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 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. + */ + +// eslint-disable-next-line max-classes-per-file +import { Fields } from '../entity'; +import { Serializable } from '../serializable'; + +// Can I pull in types from asset-manager here? +type AssetKind = 'host' | 'pod' | 'container' | 'service'; + +export interface AssetKindDocument extends Fields { + 'asset.kind': T; + 'asset.ean': string; + 'asset.id': string; + 'asset.name'?: string; + 'asset.parents'?: string[]; + 'asset.children'?: string[]; + 'asset.references'?: string[]; +} + +// What is the best way to tie up relationships? +// With these setters we can go both ways but the entities might be able to produce +// pre-linked assets as well +class Asset extends Serializable> { + parents(parents: string[]) { + this.fields['asset.parents'] = parents; + } + + children(children: string[]) { + this.fields['asset.children'] = children; + } + + references(references: string[]) { + this.fields['asset.references'] = references; + } +} + +export class HostAsset extends Asset<'host'> {} + +export class PodAsset extends Asset<'pod'> {} + +export class ContainerAsset extends Asset<'container'> {} + +export class ServiceAsset extends Asset<'service'> {} + +export type AssetDocument = + | AssetKindDocument<'host'> + | AssetKindDocument<'pod'> + | AssetKindDocument<'container'> + | AssetKindDocument<'service'>; diff --git a/packages/kbn-apm-synthtrace-client/src/lib/infra/container.ts b/packages/kbn-apm-synthtrace-client/src/lib/infra/container.ts new file mode 100644 index 0000000000000..2df8aa2d71ea3 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/infra/container.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 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. + */ + +/* eslint-disable max-classes-per-file */ +import { ContainerAsset } from '../assets'; +import { Entity, Fields } from '../entity'; +import { Serializable } from '../serializable'; + +interface ContainerDocument extends Fields { + 'container.id': string; + 'kubernetes.pod.uid': string; + 'kubernetes.node.name': string; +} + +export class Container extends Entity { + metrics() { + return new ContainerMetrics({ + ...this.fields, + 'kubernetes.container.cpu.usage.limit.pct': 46, + }); + } + + asset() { + return new ContainerAsset({ + 'asset.kind': 'container', + 'asset.id': this.fields['container.id'], + 'asset.name': this.fields['container.id'], + 'asset.ean': `container:${this.fields['container.id']}`, + }); + } +} + +export interface ContainerMetricsDocument extends ContainerDocument { + 'kubernetes.container.cpu.usage.limit.pct': number; +} + +class ContainerMetrics extends Serializable {} + +export function container(id: string, uid: string, nodeName: string) { + return new Container({ + 'container.id': id, + 'kubernetes.pod.uid': uid, + 'kubernetes.node.name': nodeName, + }); +} diff --git a/packages/kbn-apm-synthtrace-client/src/lib/infra/host.ts b/packages/kbn-apm-synthtrace-client/src/lib/infra/host.ts new file mode 100644 index 0000000000000..8da22d5b140d7 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/infra/host.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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. + */ + +/* eslint-disable max-classes-per-file */ +import { HostAsset } from '../assets'; +import { Entity, Fields } from '../entity'; +import { Serializable } from '../serializable'; +import { pod } from './pod'; + +interface HostDocument extends Fields { + 'host.hostname': string; +} + +class Host extends Entity { + metrics() { + return new HostMetrics({ + ...this.fields, + 'system.cpu.total.norm.pct': 46, + }); + } + + asset() { + return new HostAsset({ + 'asset.kind': 'host', + 'asset.id': this.fields['host.hostname'], + 'asset.name': this.fields['host.hostname'], + 'asset.ean': `host:${this.fields['host.hostname']}`, + }); + } + + pod(uid: string) { + return pod(uid, this.fields['host.hostname']); + } +} + +export interface HostMetricsDocument extends HostDocument { + 'system.cpu.total.norm.pct': number; +} + +class HostMetrics extends Serializable {} + +export function host(name: string): Host { + return new Host({ + 'host.hostname': name, + }); +} diff --git a/packages/kbn-apm-synthtrace-client/src/lib/infra/index.ts b/packages/kbn-apm-synthtrace-client/src/lib/infra/index.ts new file mode 100644 index 0000000000000..961225670e27b --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/infra/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { container, ContainerMetricsDocument } from './container'; +import { host, HostMetricsDocument } from './host'; +import { pod, PodMetricsDocument } from './pod'; + +export type InfraDocument = HostMetricsDocument | PodMetricsDocument | ContainerMetricsDocument; + +export const infra = { + host, + pod, + container, +}; diff --git a/packages/kbn-apm-synthtrace-client/src/lib/infra/pod.ts b/packages/kbn-apm-synthtrace-client/src/lib/infra/pod.ts new file mode 100644 index 0000000000000..4876fd7291f53 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/infra/pod.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/* eslint-disable max-classes-per-file */ +import { PodAsset } from '../assets'; +import { Entity, Fields } from '../entity'; +import { Serializable } from '../serializable'; +import { container } from './container'; + +interface PodDocument extends Fields { + 'kubernetes.pod.uid': string; + 'kubernetes.node.name': string; +} + +export class Pod extends Entity { + metrics() { + return new PodMetrics({ + ...this.fields, + 'kubernetes.pod.cpu.usage.limit.pct': 46, + }); + } + + asset() { + return new PodAsset({ + 'asset.kind': 'pod', + 'asset.id': this.fields['kubernetes.pod.uid'], + 'asset.name': this.fields['kubernetes.pod.uid'], + 'asset.ean': `pod:${this.fields['kubernetes.pod.uid']}`, + }); + } + + container(id: string) { + return container(id, this.fields['kubernetes.pod.uid'], this.fields['kubernetes.node.name']); + } +} + +export interface PodMetricsDocument extends PodDocument { + 'kubernetes.pod.cpu.usage.limit.pct': number; +} + +class PodMetrics extends Serializable {} + +export function pod(uid: string, nodeName: string) { + return new Pod({ + 'kubernetes.pod.uid': uid, + 'kubernetes.node.name': nodeName, + }); +} diff --git a/packages/kbn-apm-synthtrace-client/src/lib/monitoring/cluster.ts b/packages/kbn-apm-synthtrace-client/src/lib/monitoring/cluster.ts new file mode 100644 index 0000000000000..a9e5c66571152 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/monitoring/cluster.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Entity, Fields } from '../entity'; +import { generateShortId } from '../utils/generate_id'; +import { clusterStats } from './cluster_stats'; +import { kibana } from './kibana'; + +interface ClusterDocument extends Fields { + cluster_name: string; + cluster_uuid: string; +} + +class Cluster extends Entity { + stats() { + return clusterStats(this.fields.cluster_name, this.fields.cluster_uuid); + } + + kibana(name: string, index: string = '.kibana') { + return kibana(name, generateShortId(), this.fields.cluster_uuid, index); + } +} + +export function cluster(name: string) { + return new Cluster({ + cluster_name: name, + cluster_uuid: generateShortId(), + }); +} diff --git a/packages/kbn-apm-synthtrace-client/src/lib/monitoring/cluster_stats.ts b/packages/kbn-apm-synthtrace-client/src/lib/monitoring/cluster_stats.ts new file mode 100644 index 0000000000000..7afabe8a30374 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/monitoring/cluster_stats.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { Fields } from '../entity'; +import { Serializable } from '../serializable'; + +export interface ClusterStatsDocument extends Fields { + cluster_name: string; + cluster_uuid: string; + type: 'cluster_stats'; + 'license.status'?: string; + 'cluster_stats.timestamp'?: string; + 'cluster_stats.indices.count'?: number; +} + +export class ClusterStats extends Serializable { + constructor(fields: ClusterStatsDocument) { + super(fields); + + this.fields.type = 'cluster_stats'; + this.fields['license.status'] = 'active'; + } + + timestamp(timestamp: number) { + super.timestamp(timestamp); + this.fields['cluster_stats.timestamp'] = new Date(timestamp).toISOString(); + return this; + } + + indices(count: number) { + this.fields['cluster_stats.indices.count'] = count; + return this; + } +} + +export function clusterStats(name: string, uuid: string) { + return new ClusterStats({ + cluster_name: name, + cluster_uuid: uuid, + type: 'cluster_stats', + }); +} diff --git a/packages/kbn-apm-synthtrace-client/src/lib/monitoring/index.ts b/packages/kbn-apm-synthtrace-client/src/lib/monitoring/index.ts new file mode 100644 index 0000000000000..d5ab83eb5773e --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/monitoring/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { cluster } from './cluster'; +import { ClusterStatsDocument } from './cluster_stats'; +import { kibana } from './kibana'; +import { KibanaStatsDocument } from './kibana_stats'; + +export type MonitoringDocument = ClusterStatsDocument | KibanaStatsDocument; + +export const monitoring = { + cluster, + kibana, +}; diff --git a/packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana.ts b/packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana.ts new file mode 100644 index 0000000000000..116a283a09e03 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana.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 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 { Entity, Fields } from '../entity'; +import { kibanaStats } from './kibana_stats'; + +interface KibanaDocument extends Fields { + cluster_uuid: string; + 'kibana_stats.kibana.name': string; + 'kibana_stats.kibana.uuid': string; + 'kibana_stats.kibana.index': string; +} + +export class Kibana extends Entity { + stats() { + return kibanaStats( + this.fields.cluster_uuid, + this.fields['kibana_stats.kibana.name'], + this.fields['kibana_stats.kibana.uuid'], + this.fields['kibana_stats.kibana.index'] + ); + } +} + +export function kibana(name: string, uuid: string, clusterUuid: string, index: string = '.kibana') { + return new Kibana({ + cluster_uuid: clusterUuid, + 'kibana_stats.kibana.name': name, + 'kibana_stats.kibana.uuid': uuid, + 'kibana_stats.kibana.index': index, + }); +} diff --git a/packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana_stats.ts b/packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana_stats.ts new file mode 100644 index 0000000000000..e517ba0c63ef6 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana_stats.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 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 { Fields } from '../entity'; +import { Serializable } from '../serializable'; + +export interface KibanaStatsDocument extends Fields { + type: 'kibana_stats'; + cluster_uuid: string; + 'kibana_stats.kibana.name': string; + 'kibana_stats.kibana.uuid': string; + 'kibana_stats.kibana.index': string; + 'kibana_stats.timestamp'?: string; + 'kibana_stats.response_times.max'?: number; + 'kibana_stats.kibana.status'?: string; + 'kibana_stats.requests.disconnects'?: number; + 'kibana_stats.requests.total'?: number; +} + +export class KibanaStats extends Serializable { + timestamp(timestamp: number) { + super.timestamp(timestamp); + this.fields['kibana_stats.timestamp'] = new Date(timestamp).toISOString(); + return this; + } + + status(status: string) { + this.fields['kibana_stats.kibana.status'] = status; + } + + responseTimes(max: number) { + this.fields['kibana_stats.response_times.max'] = max; + } + + requests(disconnects: number, total: number) { + this.fields['kibana_stats.requests.disconnects'] = disconnects; + this.fields['kibana_stats.requests.total'] = total; + return this; + } +} + +export function kibanaStats(name: string, uuid: string, clusterUuid: string, index: string) { + return new KibanaStats({ + type: 'kibana_stats', + cluster_uuid: clusterUuid, + 'kibana_stats.kibana.name': name, + 'kibana_stats.kibana.uuid': uuid, + 'kibana_stats.kibana.index': index, + }); +} diff --git a/packages/kbn-apm-synthtrace/index.ts b/packages/kbn-apm-synthtrace/index.ts index e5cc06872c3a8..abcf201bf96c2 100644 --- a/packages/kbn-apm-synthtrace/index.ts +++ b/packages/kbn-apm-synthtrace/index.ts @@ -10,3 +10,9 @@ export { createLogger, LogLevel } from './src/lib/utils/create_logger'; export { ApmSynthtraceEsClient } from './src/lib/apm/client/apm_synthtrace_es_client'; export { ApmSynthtraceKibanaClient } from './src/lib/apm/client/apm_synthtrace_kibana_client'; + +export { InfraSynthtraceEsClient } from './src/lib/infra/infra_synthtrace_es_client'; + +export { AssetsSynthtraceEsClient } from './src/lib/assets/assets_synthtrace_es_client'; + +export { MonitoringSynthtraceEsClient } from './src/lib/monitoring/monitoring_synthtrace_es_client'; diff --git a/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/apm_pipeline.ts b/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/apm_pipeline.ts new file mode 100644 index 0000000000000..bd6acc25431a7 --- /dev/null +++ b/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/apm_pipeline.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 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 { PassThrough, pipeline, Readable } from 'stream'; +import { getDedotTransform } from '../../../shared/get_dedot_transform'; +import { getSerializeTransform } from '../../../shared/get_serialize_transform'; +import { Logger } from '../../../utils/create_logger'; +import { fork } from '../../../utils/stream_utils'; +import { createBreakdownMetricsAggregator } from '../../aggregators/create_breakdown_metrics_aggregator'; +import { createServiceMetricsAggregator } from '../../aggregators/create_service_metrics_aggregator'; +import { createServiceSummaryMetricsAggregator } from '../../aggregators/create_service_summary_metrics_aggregator'; +import { createSpanMetricsAggregator } from '../../aggregators/create_span_metrics_aggregator'; +import { createTransactionMetricsAggregator } from '../../aggregators/create_transaction_metrics_aggregator'; +import { getApmServerMetadataTransform } from './get_apm_server_metadata_transform'; +import { getIntakeDefaultsTransform } from './get_intake_defaults_transform'; +import { getRoutingTransform } from './get_routing_transform'; + +export function apmPipeline(logger: Logger, version: string, includeSerialization: boolean = true) { + return (base: Readable) => { + const aggregators = [ + createTransactionMetricsAggregator('1m'), + createTransactionMetricsAggregator('10m'), + createTransactionMetricsAggregator('60m'), + createServiceMetricsAggregator('1m'), + createServiceMetricsAggregator('10m'), + createServiceMetricsAggregator('60m'), + createServiceSummaryMetricsAggregator('1m'), + createServiceSummaryMetricsAggregator('10m'), + createServiceSummaryMetricsAggregator('60m'), + createSpanMetricsAggregator('1m'), + createSpanMetricsAggregator('10m'), + createSpanMetricsAggregator('60m'), + ]; + + const serializationTransform = includeSerialization ? [getSerializeTransform()] : []; + + return pipeline( + // @ts-expect-error Some weird stuff here with the type definition for pipeline. We have tests! + base, + ...serializationTransform, + getIntakeDefaultsTransform(), + fork(new PassThrough({ objectMode: true }), ...aggregators), + createBreakdownMetricsAggregator('30s'), + getApmServerMetadataTransform(version), + getRoutingTransform(), + getDedotTransform(), + (err) => { + if (err) { + logger.error(err); + } + } + ); + }; +} diff --git a/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts b/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts index 21fd3a0ac7dcf..310c33c10483d 100644 --- a/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts +++ b/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts @@ -7,38 +7,11 @@ */ import { Client, estypes } from '@elastic/elasticsearch'; -import { - ApmFields, - ESDocumentWithOperation, - SynthtraceESAction, - SynthtraceGenerator, -} from '@kbn/apm-synthtrace-client'; -import { castArray } from 'lodash'; -import { PassThrough, pipeline, Readable, Transform } from 'stream'; -import { isGeneratorObject } from 'util/types'; +import { ApmFields } from '@kbn/apm-synthtrace-client'; import { ValuesType } from 'utility-types'; +import { SynthtraceEsClient, SynthtraceEsClientOptions } from '../../../shared/base_client'; import { Logger } from '../../../utils/create_logger'; -import { fork, sequential } from '../../../utils/stream_utils'; -import { createBreakdownMetricsAggregator } from '../../aggregators/create_breakdown_metrics_aggregator'; -import { createServiceMetricsAggregator } from '../../aggregators/create_service_metrics_aggregator'; -import { createServiceSummaryMetricsAggregator } from '../../aggregators/create_service_summary_metrics_aggregator'; -import { createSpanMetricsAggregator } from '../../aggregators/create_span_metrics_aggregator'; -import { createTransactionMetricsAggregator } from '../../aggregators/create_transaction_metrics_aggregator'; -import { getApmServerMetadataTransform } from './get_apm_server_metadata_transform'; -import { getDedotTransform } from './get_dedot_transform'; -import { getIntakeDefaultsTransform } from './get_intake_defaults_transform'; -import { getRoutingTransform } from './get_routing_transform'; -import { getSerializeTransform } from './get_serialize_transform'; - -export interface ApmSynthtraceEsClientOptions { - version: string; - concurrency?: number; - refreshAfterIndex?: boolean; -} - -type MaybeArray = T | T[]; - -const DATA_STREAMS = ['traces-apm*', 'metrics-apm*', 'logs-apm*']; +import { apmPipeline } from './apm_pipeline'; export enum ComponentTemplateName { LogsApp = 'logs-apm.app@custom', @@ -50,33 +23,20 @@ export enum ComponentTemplateName { TracesApmSampled = 'traces-apm.sampled@custom', } -export class ApmSynthtraceEsClient { - private readonly client: Client; - private readonly logger: Logger; - - private readonly concurrency: number; - - private readonly refreshAfterIndex: boolean; - - private readonly version: string; +export interface ApmSynthtraceEsClientOptions extends Omit { + version: string; +} - private pipelineCallback: (base: Readable) => NodeJS.WritableStream = this.getDefaultPipeline(); +export class ApmSynthtraceEsClient extends SynthtraceEsClient { + private version: string; constructor(options: { client: Client; logger: Logger } & ApmSynthtraceEsClientOptions) { - this.client = options.client; - this.logger = options.logger; - this.concurrency = options.concurrency ?? 1; - this.refreshAfterIndex = options.refreshAfterIndex ?? false; - this.version = options.version; - } - - async clean() { - this.logger.info(`Cleaning APM data streams ${DATA_STREAMS.join(',')}`); - - await this.client.indices.deleteDataStream({ - name: DATA_STREAMS.join(','), - expand_wildcards: ['open', 'hidden'], + super({ + ...options, + pipeline: apmPipeline(options.logger, options.version), }); + this.dataStreams = ['traces-apm*', 'metrics-apm*', 'logs-apm*']; + this.version = options.version; } async updateComponentTemplate( @@ -105,117 +65,7 @@ export class ApmSynthtraceEsClient { this.logger.info(`Updated component template: ${name}`); } - async refresh(dataStreams: string[] = DATA_STREAMS) { - this.logger.info(`Refreshing ${dataStreams.join(',')}`); - - return this.client.indices.refresh({ - index: dataStreams, - allow_no_indices: true, - ignore_unavailable: true, - expand_wildcards: ['open', 'hidden'], - }); - } - getDefaultPipeline(includeSerialization: boolean = true) { - return (base: Readable) => { - const aggregators = [ - createTransactionMetricsAggregator('1m'), - createTransactionMetricsAggregator('10m'), - createTransactionMetricsAggregator('60m'), - createServiceMetricsAggregator('1m'), - createServiceMetricsAggregator('10m'), - createServiceMetricsAggregator('60m'), - createServiceSummaryMetricsAggregator('1m'), - createServiceSummaryMetricsAggregator('10m'), - createServiceSummaryMetricsAggregator('60m'), - createSpanMetricsAggregator('1m'), - createSpanMetricsAggregator('10m'), - createSpanMetricsAggregator('60m'), - ]; - - const serializationTransform = includeSerialization ? [getSerializeTransform()] : []; - - return pipeline( - // @ts-expect-error Some weird stuff here with the type definition for pipeline. We have tests! - base, - ...serializationTransform, - getIntakeDefaultsTransform(), - fork(new PassThrough({ objectMode: true }), ...aggregators), - createBreakdownMetricsAggregator('30s'), - getApmServerMetadataTransform(this.version), - getRoutingTransform(), - getDedotTransform(), - (err) => { - if (err) { - this.logger.error(err); - } - } - ); - }; - } - - pipeline(cb: (base: Readable) => NodeJS.WritableStream) { - this.pipelineCallback = cb; - } - - getVersion() { - return this.version; - } - - async index(streamOrGenerator: MaybeArray>) { - this.logger.debug(`Bulk indexing ${castArray(streamOrGenerator).length} stream(s)`); - - const allStreams = castArray(streamOrGenerator).map((obj) => { - const base = isGeneratorObject(obj) ? Readable.from(obj) : obj; - - return this.pipelineCallback(base); - }) as Transform[]; - - let count: number = 0; - - const stream = sequential(...allStreams); - - await this.client.helpers.bulk({ - concurrency: this.concurrency, - refresh: false, - refreshOnCompletion: false, - flushBytes: 250000, - datasource: stream, - filter_path: 'errors,items.*.error,items.*.status', - onDocument: (doc: ESDocumentWithOperation) => { - let action: SynthtraceESAction; - count++; - - if (count % 100000 === 0) { - this.logger.info(`Indexed ${count} documents`); - } else if (count % 1000 === 0) { - this.logger.debug(`Indexed ${count} documents`); - } - - if (doc._action) { - action = doc._action!; - delete doc._action; - } else if (doc._index) { - action = { create: { _index: doc._index } }; - delete doc._index; - } else { - this.logger.debug(doc); - throw new Error( - `Could not determine operation: _index and _action not defined in document` - ); - } - - return action; - }, - onDrop: (doc) => { - this.logger.error(`Dropped document: ${JSON.stringify(doc, null, 2)}`); - }, - }); - - this.logger.info(`Produced ${count} events`); - - if (this.refreshAfterIndex) { - await this.refresh(); - } + return apmPipeline(this.logger, this.version, includeSerialization); } } diff --git a/packages/kbn-apm-synthtrace/src/lib/assets/assets_synthtrace_es_client.ts b/packages/kbn-apm-synthtrace/src/lib/assets/assets_synthtrace_es_client.ts new file mode 100644 index 0000000000000..3f74304119d78 --- /dev/null +++ b/packages/kbn-apm-synthtrace/src/lib/assets/assets_synthtrace_es_client.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 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 { Client } from '@elastic/elasticsearch'; +import { AssetDocument, ESDocumentWithOperation } from '@kbn/apm-synthtrace-client'; +import { pipeline, Readable, Transform } from 'stream'; +import { SynthtraceEsClient, SynthtraceEsClientOptions } from '../shared/base_client'; +import { getDedotTransform } from '../shared/get_dedot_transform'; +import { getSerializeTransform } from '../shared/get_serialize_transform'; +import { Logger } from '../utils/create_logger'; + +export type AssetsSynthtraceEsClientOptions = Omit; + +export class AssetsSynthtraceEsClient extends SynthtraceEsClient { + constructor(options: { client: Client; logger: Logger } & AssetsSynthtraceEsClientOptions) { + super({ + ...options, + pipeline: assetsPipeline(), + }); + this.dataStreams = ['assets-*']; + } +} + +function assetsPipeline() { + return (base: Readable) => { + return pipeline( + base, + getSerializeTransform(), + getRoutingTransform(), + getDedotTransform(), + (err: unknown) => { + if (err) { + throw err; + } + } + ); + }; +} + +function getRoutingTransform() { + return new Transform({ + objectMode: true, + transform(document: ESDocumentWithOperation, encoding, callback) { + if ('asset.kind' in document) { + document._index = `assets-${document['asset.kind']}-default`; + } else { + throw new Error('Cannot determine index for event'); + } + + callback(null, document); + }, + }); +} diff --git a/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts b/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts new file mode 100644 index 0000000000000..897d813ae6718 --- /dev/null +++ b/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.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 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 { Client } from '@elastic/elasticsearch'; +import { ESDocumentWithOperation, InfraDocument } from '@kbn/apm-synthtrace-client'; +import { pipeline, Readable, Transform } from 'stream'; +import { SynthtraceEsClient, SynthtraceEsClientOptions } from '../shared/base_client'; +import { getDedotTransform } from '../shared/get_dedot_transform'; +import { getSerializeTransform } from '../shared/get_serialize_transform'; +import { Logger } from '../utils/create_logger'; + +export type InfraSynthtraceEsClientOptions = Omit; + +export class InfraSynthtraceEsClient extends SynthtraceEsClient { + constructor(options: { client: Client; logger: Logger } & InfraSynthtraceEsClientOptions) { + super({ + ...options, + pipeline: infraPipeline(), + }); + this.dataStreams = ['metrics-*', 'logs-*']; + } +} + +function infraPipeline() { + return (base: Readable) => { + return pipeline( + base, + getSerializeTransform(), + getRoutingTransform(), + getDedotTransform(), + (err: unknown) => { + if (err) { + throw err; + } + } + ); + }; +} + +function getRoutingTransform() { + return new Transform({ + objectMode: true, + transform(document: ESDocumentWithOperation, encoding, callback) { + if ('host.hostname' in document) { + document._index = 'metrics-system.cpu-default'; + } else if ('container.id' in document) { + document._index = 'metrics-kubernetes.container-default'; + } else if ('kubernetes.pod.uid' in document) { + document._index = 'metrics-kubernetes.pod-default'; + } else { + throw new Error('Cannot determine index for event'); + } + + callback(null, document); + }, + }); +} diff --git a/packages/kbn-apm-synthtrace/src/lib/monitoring/monitoring_synthtrace_es_client.ts b/packages/kbn-apm-synthtrace/src/lib/monitoring/monitoring_synthtrace_es_client.ts new file mode 100644 index 0000000000000..6ef6d770ce6d4 --- /dev/null +++ b/packages/kbn-apm-synthtrace/src/lib/monitoring/monitoring_synthtrace_es_client.ts @@ -0,0 +1,64 @@ +/* + * Copyright 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 { Client } from '@elastic/elasticsearch'; +import { ESDocumentWithOperation, MonitoringDocument } from '@kbn/apm-synthtrace-client'; +import { pipeline, Readable, Transform } from 'stream'; +import { SynthtraceEsClient, SynthtraceEsClientOptions } from '../shared/base_client'; +import { getDedotTransform } from '../shared/get_dedot_transform'; +import { getSerializeTransform } from '../shared/get_serialize_transform'; +import { Logger } from '../utils/create_logger'; + +export type MonitoringSynthtraceEsClientOptions = Omit; + +export class MonitoringSynthtraceEsClient extends SynthtraceEsClient { + constructor(options: { client: Client; logger: Logger } & MonitoringSynthtraceEsClientOptions) { + super({ + ...options, + pipeline: monitoringPipeline(), + }); + this.dataStreams = ['.monitoring-*', 'metrics-*']; + } +} + +function monitoringPipeline() { + return (base: Readable) => { + return pipeline( + base, + getSerializeTransform(), + getRoutingTransform(), + getDedotTransform(), + (err: unknown) => { + if (err) { + throw err; + } + } + ); + }; +} + +function getRoutingTransform() { + return new Transform({ + objectMode: true, + transform(document: ESDocumentWithOperation, encoding, callback) { + if ('type' in document) { + if (document.type === 'cluster_stats') { + document._index = '.monitoring-es-7'; + } else if (document.type === 'kibana_stats') { + document._index = '.monitoring-kibana-7'; + } else { + throw new Error('Cannot determine index for event'); + } + } else { + throw new Error('Cannot determine index for event'); + } + + callback(null, document); + }, + }); +} diff --git a/packages/kbn-apm-synthtrace/src/lib/shared/base_client.ts b/packages/kbn-apm-synthtrace/src/lib/shared/base_client.ts new file mode 100644 index 0000000000000..4a3a79e2b78d9 --- /dev/null +++ b/packages/kbn-apm-synthtrace/src/lib/shared/base_client.ts @@ -0,0 +1,128 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { Client } from '@elastic/elasticsearch'; +import { + ESDocumentWithOperation, + Fields, + SynthtraceESAction, + SynthtraceGenerator, +} from '@kbn/apm-synthtrace-client'; +import { castArray } from 'lodash'; +import { Readable, Transform } from 'stream'; +import { isGeneratorObject } from 'util/types'; +import { Logger } from '../utils/create_logger'; +import { sequential } from '../utils/stream_utils'; + +export interface SynthtraceEsClientOptions { + concurrency?: number; + refreshAfterIndex?: boolean; + pipeline: (base: Readable) => NodeJS.WritableStream; +} + +type MaybeArray = T | T[]; + +export class SynthtraceEsClient { + protected readonly client: Client; + protected readonly logger: Logger; + + private readonly concurrency: number; + private readonly refreshAfterIndex: boolean; + + private pipelineCallback: (base: Readable) => NodeJS.WritableStream; + protected dataStreams: string[] = []; + + constructor(options: { client: Client; logger: Logger } & SynthtraceEsClientOptions) { + this.client = options.client; + this.logger = options.logger; + this.concurrency = options.concurrency ?? 1; + this.refreshAfterIndex = options.refreshAfterIndex ?? false; + this.pipelineCallback = options.pipeline; + } + + async clean() { + this.logger.info(`Cleaning data streams ${this.dataStreams.join(',')}`); + + await this.client.indices.deleteDataStream({ + name: this.dataStreams.join(','), + expand_wildcards: ['open', 'hidden'], + }); + } + + async refresh() { + this.logger.info(`Refreshing ${this.dataStreams.join(',')}`); + + return this.client.indices.refresh({ + index: this.dataStreams, + allow_no_indices: true, + ignore_unavailable: true, + expand_wildcards: ['open', 'hidden'], + }); + } + + pipeline(cb: (base: Readable) => NodeJS.WritableStream) { + this.pipelineCallback = cb; + } + + async index(streamOrGenerator: MaybeArray>) { + this.logger.debug(`Bulk indexing ${castArray(streamOrGenerator).length} stream(s)`); + + const allStreams = castArray(streamOrGenerator).map((obj) => { + const base = isGeneratorObject(obj) ? Readable.from(obj) : obj; + + return this.pipelineCallback(base); + }) as Transform[]; + + let count: number = 0; + + const stream = sequential(...allStreams); + + await this.client.helpers.bulk({ + concurrency: this.concurrency, + refresh: false, + refreshOnCompletion: false, + flushBytes: 250000, + datasource: stream, + filter_path: 'errors,items.*.error,items.*.status', + onDocument: (doc: ESDocumentWithOperation) => { + let action: SynthtraceESAction; + count++; + + if (count % 100000 === 0) { + this.logger.info(`Indexed ${count} documents`); + } else if (count % 1000 === 0) { + this.logger.debug(`Indexed ${count} documents`); + } + + if (doc._action) { + action = doc._action!; + delete doc._action; + } else if (doc._index) { + action = { create: { _index: doc._index } }; + delete doc._index; + } else { + this.logger.debug(doc); + throw new Error( + `Could not determine operation: _index and _action not defined in document` + ); + } + + return action; + }, + onDrop: (doc) => { + this.logger.error(`Dropped document: ${JSON.stringify(doc, null, 2)}`); + }, + }); + + this.logger.info(`Produced ${count} events`); + + if (this.refreshAfterIndex) { + await this.refresh(); + } + } +} diff --git a/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/get_dedot_transform.ts b/packages/kbn-apm-synthtrace/src/lib/shared/get_dedot_transform.ts similarity index 100% rename from packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/get_dedot_transform.ts rename to packages/kbn-apm-synthtrace/src/lib/shared/get_dedot_transform.ts diff --git a/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/get_serialize_transform.ts b/packages/kbn-apm-synthtrace/src/lib/shared/get_serialize_transform.ts similarity index 100% rename from packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/get_serialize_transform.ts rename to packages/kbn-apm-synthtrace/src/lib/shared/get_serialize_transform.ts diff --git a/x-pack/test/api_integration/apis/asset_manager/config.ts b/x-pack/test/api_integration/apis/asset_manager/config.ts index 0061b85f8c95c..647ebb8a1c5b2 100644 --- a/x-pack/test/api_integration/apis/asset_manager/config.ts +++ b/x-pack/test/api_integration/apis/asset_manager/config.ts @@ -5,14 +5,84 @@ * 2.0. */ +import { APM_TEST_PASSWORD } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/authentication'; +import { + ApmSynthtraceEsClient, + ApmSynthtraceKibanaClient, + AssetsSynthtraceEsClient, + createLogger, + InfraSynthtraceEsClient, + LogLevel, +} from '@kbn/apm-synthtrace'; import { FtrConfigProviderContext } from '@kbn/test'; +import url from 'url'; +import { FtrProviderContext as InheritedFtrProviderContext } from '../../ftr_provider_context'; +import { InheritedServices } from './types'; -export default async function ({ readConfigFile }: FtrConfigProviderContext) { +interface AssetManagerConfig { + services: InheritedServices & { + assetsSynthtraceEsClient: ( + context: InheritedFtrProviderContext + ) => Promise; + infraSynthtraceEsClient: ( + context: InheritedFtrProviderContext + ) => Promise; + apmSynthtraceEsClient: (context: InheritedFtrProviderContext) => Promise; + }; +} + +export default async function createTestConfig({ + readConfigFile, +}: FtrConfigProviderContext): Promise { const baseIntegrationTestsConfig = await readConfigFile(require.resolve('../../config.ts')); + const services = baseIntegrationTestsConfig.get('services'); return { ...baseIntegrationTestsConfig.getAll(), testFiles: [require.resolve('.')], + services: { + ...services, + assetsSynthtraceEsClient: (context: InheritedFtrProviderContext) => { + return new AssetsSynthtraceEsClient({ + client: context.getService('es'), + logger: createLogger(LogLevel.info), + refreshAfterIndex: true, + }); + }, + infraSynthtraceEsClient: (context: InheritedFtrProviderContext) => { + return new InfraSynthtraceEsClient({ + client: context.getService('es'), + logger: createLogger(LogLevel.info), + refreshAfterIndex: true, + }); + }, + apmSynthtraceEsClient: async (context: InheritedFtrProviderContext) => { + const servers = baseIntegrationTestsConfig.get('servers'); + + const kibanaServer = servers.kibana as url.UrlObject; + const kibanaServerUrl = url.format(kibanaServer); + const kibanaServerUrlWithAuth = url + .format({ + ...url.parse(kibanaServerUrl), + auth: `elastic:${APM_TEST_PASSWORD}`, + }) + .slice(0, -1); + + const kibanaClient = new ApmSynthtraceKibanaClient({ + target: kibanaServerUrlWithAuth, + logger: createLogger(LogLevel.debug), + }); + const kibanaVersion = await kibanaClient.fetchLatestApmPackageVersion(); + await kibanaClient.installApmPackage(kibanaVersion); + + return new ApmSynthtraceEsClient({ + client: context.getService('es'), + logger: createLogger(LogLevel.info), + version: kibanaVersion, + refreshAfterIndex: true, + }); + }, + }, kbnTestServer: { ...baseIntegrationTestsConfig.get('kbnTestServer'), serverArgs: [ @@ -22,3 +92,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { }, }; } + +export type CreateTestConfig = Awaited>; + +export type AssetManagerServices = CreateTestConfig['services']; diff --git a/x-pack/test/api_integration/apis/asset_manager/types.ts b/x-pack/test/api_integration/apis/asset_manager/types.ts new file mode 100644 index 0000000000000..2da488241ee47 --- /dev/null +++ b/x-pack/test/api_integration/apis/asset_manager/types.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { GenericFtrProviderContext } from '@kbn/test'; +import { FtrProviderContext as InheritedFtrProviderContext } from '../../ftr_provider_context'; +import { AssetManagerServices } from './config'; + +export type InheritedServices = InheritedFtrProviderContext extends GenericFtrProviderContext< + infer TServices, + {} +> + ? TServices + : {}; + +export type FtrProviderContext = GenericFtrProviderContext; From 2f03a25362c1bc6392b81c46a550631c458b6015 Mon Sep 17 00:00:00 2001 From: Juan Pablo Djeredjian Date: Thu, 29 Jun 2023 15:51:00 +0200 Subject: [PATCH 09/41] [Security Solution] Fix Add Rules Page not refetching rules after package installed in background (#160389) Fixes https://github.com/elastic/kibana/issues/160396 ## Summary - Invalidates cache after `security_detection_engine` package is installed in the background so rules available for installation and for upgrade are refetched, and their respective tables correctly populated with them. - Disable Install and Upgrade buttons in both tables while the package is being installed in the background to prevent the user from attempting to install/update outdated version. - Add a Loading Skeleton in the Add Elastic Rules when the user navigates to that page while the `security_detection_engine` is being installed for the first time, to prevent the user from seeing a flash of the "No available rules" component, before rules are loaded. ### Checklist Delete any items that are not applicable to this PR. - [ ] 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)) --- .../response_schema.ts | 3 +++ ...se_bulk_install_fleet_packages_mutation.ts | 6 ++++++ .../use_install_fleet_package_mutation.ts | 6 ++++++ .../add_prebuilt_rules_header_buttons.tsx | 7 ++++--- .../add_prebuilt_rules_table.tsx | 20 +++++++++++-------- .../add_prebuilt_rules_table_context.tsx | 19 ++++++++++++++++++ .../use_add_prebuilt_rules_table_columns.tsx | 20 ++++++++++++++----- .../upgrade_prebuilt_rules_table.tsx | 20 +++++++++++-------- .../upgrade_prebuilt_rules_table_buttons.tsx | 7 ++++--- .../upgrade_prebuilt_rules_table_context.tsx | 14 +++++++++---- ...e_upgrade_prebuilt_rules_table_columns.tsx | 20 ++++++++++++++----- .../get_prebuilt_rules_status_route.ts | 3 ++- .../rule_versions/get_version_buckets.ts | 12 +++++++++++ 13 files changed, 120 insertions(+), 37 deletions(-) diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/response_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/response_schema.ts index 3d899efdd04bd..e76ba63cfa17d 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/response_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/response_schema.ts @@ -20,6 +20,9 @@ export interface PrebuiltRulesStatusStats { /** Number of installed prebuilt rules available for upgrade (stock + customized) */ num_prebuilt_rules_to_upgrade: number; + /** Total number of prebuilt rules available in package (including already installed) */ + num_prebuilt_rules_total_in_package: number; + // In the future we could add more stats such as: // - number of installed prebuilt rules which were deprecated // - number of installed prebuilt rules which are not compatible with the current version of Kibana diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_install_fleet_packages_mutation.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_install_fleet_packages_mutation.ts index dff2bef7b39e7..d47f4799fcc30 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_install_fleet_packages_mutation.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_install_fleet_packages_mutation.ts @@ -11,7 +11,9 @@ import { useMutation } from '@tanstack/react-query'; import { PREBUILT_RULES_PACKAGE_NAME } from '../../../../../common/detection_engine/constants'; import type { BulkInstallFleetPackagesProps } from '../api'; import { bulkInstallFleetPackages } from '../api'; +import { useInvalidateFetchPrebuiltRulesInstallReviewQuery } from './prebuilt_rules/use_fetch_prebuilt_rules_install_review_query'; import { useInvalidateFetchPrebuiltRulesStatusQuery } from './prebuilt_rules/use_fetch_prebuilt_rules_status_query'; +import { useInvalidateFetchPrebuiltRulesUpgradeReviewQuery } from './prebuilt_rules/use_fetch_prebuilt_rules_upgrade_review_query'; export const BULK_INSTALL_FLEET_PACKAGES_MUTATION_KEY = [ 'POST', @@ -22,6 +24,8 @@ export const useBulkInstallFleetPackagesMutation = ( options?: UseMutationOptions ) => { const invalidatePrePackagedRulesStatus = useInvalidateFetchPrebuiltRulesStatusQuery(); + const invalidatePrebuiltRulesInstallReview = useInvalidateFetchPrebuiltRulesInstallReviewQuery(); + const invalidatePrebuiltRulesUpdateReview = useInvalidateFetchPrebuiltRulesUpgradeReviewQuery(); return useMutation((props: BulkInstallFleetPackagesProps) => bulkInstallFleetPackages(props), { ...options, @@ -34,6 +38,8 @@ export const useBulkInstallFleetPackagesMutation = ( if (rulesPackage && 'result' in rulesPackage && rulesPackage.result.status === 'installed') { // The rules package was installed/updated, so invalidate the pre-packaged rules status query invalidatePrePackagedRulesStatus(); + invalidatePrebuiltRulesInstallReview(); + invalidatePrebuiltRulesUpdateReview(); } if (options?.onSettled) { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_install_fleet_package_mutation.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_install_fleet_package_mutation.ts index 3ed308c860b3d..e4f88d8b9c3ef 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_install_fleet_package_mutation.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_install_fleet_package_mutation.ts @@ -11,7 +11,9 @@ import { useMutation } from '@tanstack/react-query'; import { PREBUILT_RULES_PACKAGE_NAME } from '../../../../../common/detection_engine/constants'; import type { InstallFleetPackageProps } from '../api'; import { installFleetPackage } from '../api'; +import { useInvalidateFetchPrebuiltRulesInstallReviewQuery } from './prebuilt_rules/use_fetch_prebuilt_rules_install_review_query'; import { useInvalidateFetchPrebuiltRulesStatusQuery } from './prebuilt_rules/use_fetch_prebuilt_rules_status_query'; +import { useInvalidateFetchPrebuiltRulesUpgradeReviewQuery } from './prebuilt_rules/use_fetch_prebuilt_rules_upgrade_review_query'; export const INSTALL_FLEET_PACKAGE_MUTATION_KEY = [ 'POST', @@ -22,6 +24,8 @@ export const useInstallFleetPackageMutation = ( options?: UseMutationOptions ) => { const invalidatePrePackagedRulesStatus = useInvalidateFetchPrebuiltRulesStatusQuery(); + const invalidatePrebuiltRulesInstallReview = useInvalidateFetchPrebuiltRulesInstallReviewQuery(); + const invalidatePrebuiltRulesUpdateReview = useInvalidateFetchPrebuiltRulesUpgradeReviewQuery(); return useMutation((props: InstallFleetPackageProps) => installFleetPackage(props), { ...options, @@ -31,6 +35,8 @@ export const useInstallFleetPackageMutation = ( if (packageName === PREBUILT_RULES_PACKAGE_NAME) { // Invalidate the pre-packaged rules status query as there might be new rules to install invalidatePrePackagedRulesStatus(); + invalidatePrebuiltRulesInstallReview(); + invalidatePrebuiltRulesUpdateReview(); } if (options?.onSettled) { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_header_buttons.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_header_buttons.tsx index ec9eb2f3fb2a9..b9fd334e9393c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_header_buttons.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_header_buttons.tsx @@ -12,7 +12,7 @@ import * as i18n from './translations'; export const AddPrebuiltRulesHeaderButtons = () => { const { - state: { rules, selectedRules, loadingRules }, + state: { rules, selectedRules, loadingRules, isRefetching, isUpgradingSecurityPackages }, actions: { installAllRules, installSelectedRules }, } = useAddPrebuiltRulesTableContext(); @@ -21,12 +21,13 @@ export const AddPrebuiltRulesHeaderButtons = () => { const shouldDisplayInstallSelectedRulesButton = numberOfSelectedRules > 0; const isRuleInstalling = loadingRules.length > 0; + const isRequestInProgress = isRuleInstalling || isRefetching || isUpgradingSecurityPackages; return ( {shouldDisplayInstallSelectedRulesButton ? ( - + {i18n.INSTALL_SELECTED_RULES(numberOfSelectedRules)} {isRuleInstalling ? : undefined} @@ -38,7 +39,7 @@ export const AddPrebuiltRulesHeaderButtons = () => { iconType="plusInCircle" data-test-subj="installAllRulesButton" onClick={installAllRules} - disabled={!isRulesAvailableForInstall || isRuleInstalling} + disabled={!isRulesAvailableForInstall || isRequestInProgress} > {i18n.INSTALL_ALL} {isRuleInstalling ? : undefined} 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.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.tsx index b131704bf8be7..7c8b397f1badd 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.tsx @@ -14,7 +14,6 @@ import { } from '@elastic/eui'; import React from 'react'; -import { useIsUpgradingSecurityPackages } from '../../../../rule_management/logic/use_upgrade_security_packages'; import { RULES_TABLE_INITIAL_PAGE_SIZE, RULES_TABLE_PAGE_SIZE_OPTIONS } from '../constants'; import { AddPrebuiltRulesTableNoItemsMessage } from './add_prebuilt_rules_no_items_message'; import { useAddPrebuiltRulesTableContext } from './add_prebuilt_rules_table_context'; @@ -25,24 +24,29 @@ import { useAddPrebuiltRulesTableColumns } from './use_add_prebuilt_rules_table_ * Table Component for displaying new rules that are available to be installed */ export const AddPrebuiltRulesTable = React.memo(() => { - const isUpgradingSecurityPackages = useIsUpgradingSecurityPackages(); - const addRulesTableContext = useAddPrebuiltRulesTableContext(); const { - state: { rules, filteredRules, isFetched, isLoading, isRefetching, selectedRules }, + state: { + rules, + filteredRules, + isFetched, + isLoading, + isRefetching, + selectedRules, + isUpgradingSecurityPackages, + }, actions: { selectRules }, } = addRulesTableContext; const rulesColumns = useAddPrebuiltRulesTableColumns(); const isTableEmpty = isFetched && rules.length === 0; - const shouldShowLinearProgress = (isFetched && isRefetching) || isUpgradingSecurityPackages; - const shouldShowLoadingOverlay = !isFetched && isRefetching; + const shouldShowProgress = isUpgradingSecurityPackages || isRefetching; return ( <> - {shouldShowLinearProgress && ( + {shouldShowProgress && ( { /> )} 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 6691eb7598070..b84134b3827da 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 @@ -7,6 +7,8 @@ import type { Dispatch, SetStateAction } from 'react'; import React, { createContext, useCallback, useContext, useMemo, useState } from 'react'; +import { useFetchPrebuiltRulesStatusQuery } from '../../../../rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_status_query'; +import { useIsUpgradingSecurityPackages } from '../../../../rule_management/logic/use_upgrade_security_packages'; import type { RuleInstallationInfoForReview } from '../../../../../../common/detection_engine/prebuilt_rules/api/review_rule_installation/response_schema'; import type { RuleSignatureId } from '../../../../../../common/detection_engine/rule_schema'; import { invariant } from '../../../../../../common/utils/invariant'; @@ -47,6 +49,11 @@ export interface AddPrebuiltRulesTableState { * Is true whenever a background refetch is in-flight, which does not include initial loading */ isRefetching: boolean; + /** + * Is true when installing security_detection_rules + * package in background + */ + isUpgradingSecurityPackages: boolean; /** * List of rule IDs that are currently being upgraded */ @@ -92,6 +99,10 @@ export const AddPrebuiltRulesTableContextProvider = ({ tags: [], }); + const { data: prebuiltRulesStatus } = useFetchPrebuiltRulesStatusQuery(); + + const isUpgradingSecurityPackages = useIsUpgradingSecurityPackages(); + const { data: { rules, stats: { tags } } = { rules: [], @@ -105,6 +116,12 @@ export const AddPrebuiltRulesTableContextProvider = ({ } = usePrebuiltRulesInstallReview({ refetchInterval: 60000, // Refetch available rules for installation every minute keepPreviousData: true, // Use this option so that the state doesn't jump between "success" and "loading" on page change + // Fetch rules to install only after background installation of security_detection_rules package is complete + enabled: Boolean( + !isUpgradingSecurityPackages && + prebuiltRulesStatus && + prebuiltRulesStatus.num_prebuilt_rules_total_in_package > 0 + ), }); const { mutateAsync: installAllRulesRequest } = usePerformInstallAllRules(); @@ -175,6 +192,7 @@ export const AddPrebuiltRulesTableContextProvider = ({ isLoading, loadingRules, isRefetching, + isUpgradingSecurityPackages, selectedRules, lastUpdated: dataUpdatedAt, }, @@ -189,6 +207,7 @@ export const AddPrebuiltRulesTableContextProvider = ({ isLoading, loadingRules, isRefetching, + isUpgradingSecurityPackages, selectedRules, dataUpdatedAt, actions, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx index d21fd175ed60c..91acd8e01f1cd 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx @@ -85,14 +85,20 @@ const INTEGRATIONS_COLUMN: TableColumn = { const createInstallButtonColumn = ( installOneRule: AddPrebuiltRulesTableActions['installOneRule'], - loadingRules: RuleSignatureId[] + loadingRules: RuleSignatureId[], + isDisabled: boolean ): TableColumn => ({ field: 'rule_id', name: '', render: (ruleId: RuleSignatureId) => { const isRuleInstalling = loadingRules.includes(ruleId); + const isInstallButtonDisabled = isRuleInstalling || isDisabled; return ( - installOneRule(ruleId)}> + installOneRule(ruleId)} + > {isRuleInstalling ? : i18n.INSTALL_RULE_BUTTON} ); @@ -106,10 +112,12 @@ export const useAddPrebuiltRulesTableColumns = (): TableColumn[] => { const hasCRUDPermissions = hasUserCRUDPermission(canUserCRUD); const [showRelatedIntegrations] = useUiSetting$(SHOW_RELATED_INTEGRATIONS_SETTING); const { - state: { loadingRules }, + state: { loadingRules, isRefetching, isUpgradingSecurityPackages }, actions: { installOneRule }, } = useAddPrebuiltRulesTableContext(); + const isDisabled = isRefetching || isUpgradingSecurityPackages; + return useMemo( () => [ RULE_NAME_COLUMN, @@ -135,8 +143,10 @@ export const useAddPrebuiltRulesTableColumns = (): TableColumn[] => { truncateText: true, width: '12%', }, - ...(hasCRUDPermissions ? [createInstallButtonColumn(installOneRule, loadingRules)] : []), + ...(hasCRUDPermissions + ? [createInstallButtonColumn(installOneRule, loadingRules, isDisabled)] + : []), ], - [hasCRUDPermissions, installOneRule, loadingRules, showRelatedIntegrations] + [hasCRUDPermissions, installOneRule, loadingRules, isDisabled, showRelatedIntegrations] ); }; 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.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx index e6afcb08c16bb..b7848eb5379e7 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx @@ -17,7 +17,6 @@ import { } from '@elastic/eui'; import React from 'react'; import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations'; -import { useIsUpgradingSecurityPackages } from '../../../../rule_management/logic/use_upgrade_security_packages'; import { RULES_TABLE_INITIAL_PAGE_SIZE, RULES_TABLE_PAGE_SIZE_OPTIONS } from '../constants'; import { UpgradePrebuiltRulesTableButtons } from './upgrade_prebuilt_rules_table_buttons'; import { useUpgradePrebuiltRulesTableContext } from './upgrade_prebuilt_rules_table_context'; @@ -36,24 +35,29 @@ const NO_ITEMS_MESSAGE = ( * Table Component for displaying rules that have available updates */ export const UpgradePrebuiltRulesTable = React.memo(() => { - const isUpgradingSecurityPackages = useIsUpgradingSecurityPackages(); - const upgradeRulesTableContext = useUpgradePrebuiltRulesTableContext(); const { - state: { rules, filteredRules, isFetched, isLoading, isRefetching, selectedRules }, + state: { + rules, + filteredRules, + isFetched, + isLoading, + selectedRules, + isRefetching, + isUpgradingSecurityPackages, + }, actions: { selectRules }, } = upgradeRulesTableContext; const rulesColumns = useUpgradePrebuiltRulesTableColumns(); const isTableEmpty = isFetched && rules.length === 0; - const shouldShowLinearProgress = (isFetched && isRefetching) || isUpgradingSecurityPackages; - const shouldShowLoadingOverlay = !isFetched && isRefetching; + const shouldShowProgress = isUpgradingSecurityPackages || isRefetching; return ( <> - {shouldShowLinearProgress && ( + {shouldShowProgress && ( { /> )} 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_buttons.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_buttons.tsx index 640fb5a74f9cf..5dfff6c5fc462 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_buttons.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_buttons.tsx @@ -12,7 +12,7 @@ import { useUpgradePrebuiltRulesTableContext } from './upgrade_prebuilt_rules_ta export const UpgradePrebuiltRulesTableButtons = () => { const { - state: { rules, selectedRules, loadingRules }, + state: { rules, selectedRules, loadingRules, isRefetching, isUpgradingSecurityPackages }, actions: { upgradeAllRules, upgradeSelectedRules }, } = useUpgradePrebuiltRulesTableContext(); @@ -21,12 +21,13 @@ export const UpgradePrebuiltRulesTableButtons = () => { const shouldDisplayUpgradeSelectedRulesButton = numberOfSelectedRules > 0; const isRuleUpgrading = loadingRules.length > 0; + const isRequestInProgress = isRuleUpgrading || isRefetching || isUpgradingSecurityPackages; return ( {shouldDisplayUpgradeSelectedRulesButton ? ( - + <> {i18n.UPDATE_SELECTED_RULES(numberOfSelectedRules)} {isRuleUpgrading ? : undefined} @@ -39,7 +40,7 @@ export const UpgradePrebuiltRulesTableButtons = () => { fill iconType="plusInCircle" onClick={upgradeAllRules} - disabled={!isRulesAvailableForUpgrade || isRuleUpgrading} + disabled={!isRulesAvailableForUpgrade || isRequestInProgress} > {i18n.UPDATE_ALL} {isRuleUpgrading ? : undefined} 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 1e4af49c53254..ce4d99d440e82 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 @@ -7,6 +7,7 @@ import type { Dispatch, SetStateAction } from 'react'; import React, { createContext, useCallback, useContext, useMemo, useState } from 'react'; +import { useIsUpgradingSecurityPackages } from '../../../../rule_management/logic/use_upgrade_security_packages'; import { useInstalledSecurityJobs } from '../../../../../common/components/ml/hooks/use_installed_security_jobs'; import { useBoolState } from '../../../../../common/hooks/use_bool_state'; import { affectedJobIds } from '../../../../../detections/components/callouts/ml_job_compatibility_callout/affected_job_ids'; @@ -53,6 +54,11 @@ export interface UpgradePrebuiltRulesTableState { * Is true whenever a background refetch is in-flight, which does not include initial loading */ isRefetching: boolean; + /** + * Is true when installing security_detection_rules + * package in background + */ + isUpgradingSecurityPackages: boolean; /** * List of rule IDs that are currently being upgraded */ @@ -100,6 +106,8 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ tags: [], }); + const isUpgradingSecurityPackages = useIsUpgradingSecurityPackages(); + const { data: { rules, stats: { tags } } = { rules: [], @@ -211,11 +219,10 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ isFetched, isLoading: isLoading && loadingJobs, isRefetching, + isUpgradingSecurityPackages, selectedRules, loadingRules, lastUpdated: dataUpdatedAt, - legacyJobsInstalled, - isUpgradeModalVisible, }, actions, }; @@ -228,11 +235,10 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ isLoading, loadingJobs, isRefetching, + isUpgradingSecurityPackages, selectedRules, loadingRules, dataUpdatedAt, - legacyJobsInstalled, - isUpgradeModalVisible, actions, ]); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx index 603d06c821fa6..9434ae72b8b08 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx @@ -85,14 +85,20 @@ const INTEGRATIONS_COLUMN: TableColumn = { const createUpgradeButtonColumn = ( upgradeOneRule: UpgradePrebuiltRulesTableActions['upgradeOneRule'], - loadingRules: RuleSignatureId[] + loadingRules: RuleSignatureId[], + isDisabled: boolean ): TableColumn => ({ field: 'rule_id', name: '', render: (ruleId: RuleUpgradeInfoForReview['rule_id']) => { const isRuleUpgrading = loadingRules.includes(ruleId); + const isUpgradeButtonDisabled = isRuleUpgrading || isDisabled; return ( - upgradeOneRule(ruleId)}> + upgradeOneRule(ruleId)} + > {isRuleUpgrading ? : i18n.UPDATE_RULE_BUTTON} ); @@ -106,10 +112,12 @@ export const useUpgradePrebuiltRulesTableColumns = (): TableColumn[] => { const hasCRUDPermissions = hasUserCRUDPermission(canUserCRUD); const [showRelatedIntegrations] = useUiSetting$(SHOW_RELATED_INTEGRATIONS_SETTING); const { - state: { loadingRules }, + state: { loadingRules, isRefetching, isUpgradingSecurityPackages }, actions: { upgradeOneRule }, } = useUpgradePrebuiltRulesTableContext(); + const isDisabled = isRefetching || isUpgradingSecurityPackages; + return useMemo( () => [ RULE_NAME_COLUMN, @@ -136,8 +144,10 @@ export const useUpgradePrebuiltRulesTableColumns = (): TableColumn[] => { truncateText: true, width: '12%', }, - ...(hasCRUDPermissions ? [createUpgradeButtonColumn(upgradeOneRule, loadingRules)] : []), + ...(hasCRUDPermissions + ? [createUpgradeButtonColumn(upgradeOneRule, loadingRules, isDisabled)] + : []), ], - [hasCRUDPermissions, loadingRules, showRelatedIntegrations, upgradeOneRule] + [hasCRUDPermissions, loadingRules, isDisabled, showRelatedIntegrations, upgradeOneRule] ); }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts index 0c64c496e5611..92180b723703f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts @@ -38,7 +38,7 @@ export const getPrebuiltRulesStatusRoute = (router: SecuritySolutionPluginRouter ruleAssetsClient, ruleObjectsClient, }); - const { currentRules, installableRules, upgradeableRules } = + const { currentRules, installableRules, upgradeableRules, totalAvailableRules } = getVersionBuckets(ruleVersionsMap); const body: GetPrebuiltRulesStatusResponseBody = { @@ -46,6 +46,7 @@ export const getPrebuiltRulesStatusRoute = (router: SecuritySolutionPluginRouter num_prebuilt_rules_installed: currentRules.length, num_prebuilt_rules_to_install: installableRules.length, num_prebuilt_rules_to_upgrade: upgradeableRules.length, + num_prebuilt_rules_total_in_package: totalAvailableRules.length, }, }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_versions/get_version_buckets.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_versions/get_version_buckets.ts index 96e1f76248da6..754d0ec4330e2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_versions/get_version_buckets.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_versions/get_version_buckets.ts @@ -31,14 +31,25 @@ export interface VersionBuckets { */ target: PrebuiltRuleAsset; }>; + /** + * All available rules + * (installed and not installed) + */ + totalAvailableRules: PrebuiltRuleAsset[]; } export const getVersionBuckets = (ruleVersionsMap: Map): VersionBuckets => { const currentRules: RuleResponse[] = []; const installableRules: PrebuiltRuleAsset[] = []; + const totalAvailableRules: PrebuiltRuleAsset[] = []; const upgradeableRules: VersionBuckets['upgradeableRules'] = []; ruleVersionsMap.forEach(({ current, target }) => { + if (target != null) { + // If this rule is available in the package + totalAvailableRules.push(target); + } + if (current != null) { // If this rule is installed currentRules.push(current); @@ -62,5 +73,6 @@ export const getVersionBuckets = (ruleVersionsMap: Map): V currentRules, installableRules, upgradeableRules, + totalAvailableRules, }; }; From 9f73f9479c1ff77fbada8305e618931b57d65796 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Thu, 29 Jun 2023 07:55:16 -0600 Subject: [PATCH 10/41] [Content management] fix table list flashes table interface when empty (#160650) Closes https://github.com/elastic/kibana/issues/159507 Closes https://github.com/elastic/kibana/issues/148557 Flaky test runner https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/2508 ### Test instructions * Install sample web logs data set * Delete dashboard that ships with sample data set * switch to another app, like visualize * Use debugger tools to throttle network connection to "slow 3g" * Open dashboard application again * Verify empty table view is never displayed and there is no flickering between views. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../table_list_view/src/table_list_view.tsx | 14 ++++++++------ .../src/table_list_view.test.tsx | 19 ++++++++++++++++--- .../src/table_list_view_table.tsx | 18 ++++++++++++------ test/accessibility/apps/dashboard.ts | 2 +- test/functional/services/listing_table.ts | 4 ++++ .../apps/dashboard/group2/sync_colors.ts | 4 ++-- 6 files changed, 43 insertions(+), 18 deletions(-) diff --git a/packages/content-management/table_list_view/src/table_list_view.tsx b/packages/content-management/table_list_view/src/table_list_view.tsx index 59fbe67a4a4c5..71b08f82174bb 100644 --- a/packages/content-management/table_list_view/src/table_list_view.tsx +++ b/packages/content-management/table_list_view/src/table_list_view.tsx @@ -7,7 +7,7 @@ */ import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; -import React, { ReactNode, useState } from 'react'; +import React, { ReactNode, useCallback, useState } from 'react'; import { TableListViewTable, type TableListViewTableProps, @@ -81,6 +81,12 @@ export const TableListView = ({ const [hasInitialFetchReturned, setHasInitialFetchReturned] = useState(false); const [pageDataTestSubject, setPageDataTestSubject] = useState(); + const onFetchSuccess = useCallback(() => { + if (!hasInitialFetchReturned) { + setHasInitialFetchReturned(true); + } + }, [hasInitialFetchReturned]); + return ( ({ contentEditor={contentEditor} titleColumnName={titleColumnName} withoutPageTemplateWrapper={withoutPageTemplateWrapper} - onFetchSuccess={() => { - if (!hasInitialFetchReturned) { - setHasInitialFetchReturned(true); - } - }} + onFetchSuccess={onFetchSuccess} setPageDataTestSubject={setPageDataTestSubject} /> diff --git a/packages/content-management/table_list_view_table/src/table_list_view.test.tsx b/packages/content-management/table_list_view_table/src/table_list_view.test.tsx index f03ab50c5234b..408d22bd48ecf 100644 --- a/packages/content-management/table_list_view_table/src/table_list_view.test.tsx +++ b/packages/content-management/table_list_view_table/src/table_list_view.test.tsx @@ -1197,10 +1197,23 @@ describe('TableList', () => { } ); - it('refreshes the list when the bouncer changes', async () => { + it('refreshes the list when "refreshListBouncer" changes', async () => { let testBed: TestBed; - const findItems = jest.fn().mockResolvedValue({ total: 0, hits: [] }); + const originalHits: UserContentCommonSchema[] = [ + { + id: `item`, + type: 'dashboard', + updatedAt: 'original timestamp', + attributes: { + title: `Original title`, + }, + references: [], + }, + ]; + const findItems = jest + .fn() + .mockResolvedValue({ total: originalHits.length, hits: originalHits }); await act(async () => { testBed = setup({ findItems }); @@ -1215,7 +1228,7 @@ describe('TableList', () => { { id: `item`, type: 'dashboard', - updatedAt: 'some date', + updatedAt: 'updated timestamp', attributes: { title: `Updated title`, }, diff --git a/packages/content-management/table_list_view_table/src/table_list_view_table.tsx b/packages/content-management/table_list_view_table/src/table_list_view_table.tsx index a0d544de5687e..2b0307c5d6f8e 100644 --- a/packages/content-management/table_list_view_table/src/table_list_view_table.tsx +++ b/packages/content-management/table_list_view_table/src/table_list_view_table.tsx @@ -369,7 +369,7 @@ function TableListViewTableComp({ } = state; const hasQuery = searchQuery.text !== ''; - const hasNoItems = !isFetchingItems && items.length === 0 && !hasQuery; + const hasNoItems = hasInitialFetchReturned && items.length === 0 && !hasQuery; const showFetchError = Boolean(fetchError); const showLimitError = !showFetchError && totalItems > listingLimit; @@ -411,10 +411,6 @@ function TableListViewTableComp({ } }, [searchQueryParser, searchQuery.text, findItems, onFetchSuccess]); - useEffect(() => { - fetchItems(); - }, [fetchItems, refreshListBouncer]); - const updateQuery = useCallback( (query: Query) => { if (urlStateEnabled) { @@ -800,7 +796,17 @@ function TableListViewTableComp({ // ------------ // Effects // ------------ - useDebounce(fetchItems, 300, [fetchItems]); + useDebounce( + () => { + // Do not call fetchItems on dependency changes when initial fetch does not load any items + // to avoid flashing between empty table and no items view + if (!hasNoItems) { + fetchItems(); + } + }, + 300, + [fetchItems, refreshListBouncer] + ); useEffect(() => { if (!urlStateEnabled) { diff --git a/test/accessibility/apps/dashboard.ts b/test/accessibility/apps/dashboard.ts index 37c2bb2ba4586..8c2924a0901c1 100644 --- a/test/accessibility/apps/dashboard.ts +++ b/test/accessibility/apps/dashboard.ts @@ -148,7 +148,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await listingTable.clickDeleteSelected(); await a11y.testAppSnapshot(); await PageObjects.common.clickConfirmOnModal(); - await listingTable.searchForItemWithName(''); + await listingTable.isShowingEmptyPromptCreateNewButton(); }); }); } diff --git a/test/functional/services/listing_table.ts b/test/functional/services/listing_table.ts index 9bd2eb80132a8..414e8147e66ea 100644 --- a/test/functional/services/listing_table.ts +++ b/test/functional/services/listing_table.ts @@ -256,6 +256,10 @@ export class ListingTableService extends FtrService { await this.testSubjects.click('newItemButton'); } + public async isShowingEmptyPromptCreateNewButton(): Promise { + await this.testSubjects.existOrFail('newItemButton'); + } + public async onListingPage(appName: AppName) { return await this.testSubjects.exists(`${appName}LandingPage`, { timeout: 5000, diff --git a/x-pack/test/functional/apps/dashboard/group2/sync_colors.ts b/x-pack/test/functional/apps/dashboard/group2/sync_colors.ts index 16d551485b467..2692c40af0adf 100644 --- a/x-pack/test/functional/apps/dashboard/group2/sync_colors.ts +++ b/x-pack/test/functional/apps/dashboard/group2/sync_colors.ts @@ -34,8 +34,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { return colorMapping; } - // Failing: See https://github.com/elastic/kibana/issues/148557 - describe.skip('sync colors', function () { + + describe('sync colors', function () { before(async function () { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.importExport.load( From 1932c7936cd0e2adea20c5a516bb00e243ee49a5 Mon Sep 17 00:00:00 2001 From: Christos Nasikas Date: Thu, 29 Jun 2023 16:56:03 +0300 Subject: [PATCH 11/41] [Cases] Version `configure` domain object and API (#160605) ## Summary This PR versions the `configure` domain object and its corresponding APIs. Specifically: - Initiate the folder structure for the other domain objects. ``` common types api configure latest.ts v1.ts index.ts domain configure latest.ts v1.ts index.ts ``` - Version the domain types of the `configure` - Version the APIs of the `configure` ### Checklist Delete any items that are not applicable to this PR. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios ### For maintainers - [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) --- .../plugins/cases/common/api/cases/index.ts | 1 - .../common/types/api/configure/latest.ts | 8 ++ .../api/configure/v1.test.ts} | 107 +--------------- .../cases/common/types/api/configure/v1.ts | 38 ++++++ .../plugins/cases/common/types/api/index.ts | 12 ++ .../common/types/domain/configure/latest.ts | 8 ++ .../common/types/domain/configure/v1.test.ts | 119 ++++++++++++++++++ .../domain/configure/v1.ts} | 30 +---- .../cases/common/types/domain/index.ts | 12 ++ .../containers/configure/__mocks__/api.ts | 8 +- .../cases/public/containers/configure/api.ts | 11 +- .../cases/public/containers/configure/mock.ts | 3 +- .../public/containers/configure/types.ts | 3 +- .../plugins/cases/public/containers/utils.ts | 6 +- .../plugins/cases/server/client/cases/push.ts | 2 +- .../cases/server/client/configure/client.ts | 23 ++-- .../cases/server/common/types/configure.ts | 6 +- .../routes/api/configure/get_configure.ts | 8 +- .../routes/api/configure/patch_configure.ts | 13 +- .../routes/api/configure/post_configure.ts | 7 +- .../migrations/configuration.test.ts | 2 +- .../server/services/configure/index.test.ts | 8 +- .../cases/server/services/configure/index.ts | 2 +- .../cases/server/services/configure/types.ts | 2 +- .../common/lib/api/configuration.ts | 9 +- .../common/lib/api/connectors.ts | 2 +- .../common/lib/api/index.ts | 5 +- 27 files changed, 257 insertions(+), 198 deletions(-) create mode 100644 x-pack/plugins/cases/common/types/api/configure/latest.ts rename x-pack/plugins/cases/common/{api/cases/configure.test.ts => types/api/configure/v1.test.ts} (53%) create mode 100644 x-pack/plugins/cases/common/types/api/configure/v1.ts create mode 100644 x-pack/plugins/cases/common/types/api/index.ts create mode 100644 x-pack/plugins/cases/common/types/domain/configure/latest.ts create mode 100644 x-pack/plugins/cases/common/types/domain/configure/v1.test.ts rename x-pack/plugins/cases/common/{api/cases/configure.ts => types/domain/configure/v1.ts} (60%) create mode 100644 x-pack/plugins/cases/common/types/domain/index.ts diff --git a/x-pack/plugins/cases/common/api/cases/index.ts b/x-pack/plugins/cases/common/api/cases/index.ts index 2b561a1dff124..c45893d6affcc 100644 --- a/x-pack/plugins/cases/common/api/cases/index.ts +++ b/x-pack/plugins/cases/common/api/cases/index.ts @@ -6,7 +6,6 @@ */ export * from './case'; -export * from './configure'; export * from './comment'; export * from './status'; export * from './user_actions'; diff --git a/x-pack/plugins/cases/common/types/api/configure/latest.ts b/x-pack/plugins/cases/common/types/api/configure/latest.ts new file mode 100644 index 0000000000000..25300c97a6d2e --- /dev/null +++ b/x-pack/plugins/cases/common/types/api/configure/latest.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './v1'; diff --git a/x-pack/plugins/cases/common/api/cases/configure.test.ts b/x-pack/plugins/cases/common/types/api/configure/v1.test.ts similarity index 53% rename from x-pack/plugins/cases/common/api/cases/configure.test.ts rename to x-pack/plugins/cases/common/types/api/configure/v1.test.ts index f1b462bd97ace..213706c73cceb 100644 --- a/x-pack/plugins/cases/common/api/cases/configure.test.ts +++ b/x-pack/plugins/cases/common/types/api/configure/v1.test.ts @@ -5,15 +5,13 @@ * 2.0. */ -import { ConnectorTypes } from '../connectors'; +import { ConnectorTypes } from '../../../api'; import { - ConfigurationAttributesRt, CaseConfigureRequestParamsRt, - ConfigurationRt, ConfigurationPatchRequestRt, ConfigurationRequestRt, GetConfigurationFindRequestRt, -} from './configure'; +} from './v1'; describe('configure', () => { const serviceNow = { @@ -23,13 +21,6 @@ describe('configure', () => { fields: null, }; - const resilient = { - id: 'resilient-2', - name: 'Resilient', - type: ConnectorTypes.resilient, - fields: null, - }; - describe('ConfigurationRequestRt', () => { const defaultRequest = { connector: serviceNow, @@ -82,100 +73,6 @@ describe('configure', () => { }); }); - describe('ConfigurationAttributesRt', () => { - const defaultRequest = { - connector: resilient, - closure_type: 'close-by-user', - owner: 'cases', - created_at: '2020-02-19T23:06:33.798Z', - created_by: { - full_name: 'Leslie Knope', - username: 'lknope', - email: 'leslie.knope@elastic.co', - }, - updated_at: '2020-02-19T23:06:33.798Z', - updated_by: { - full_name: 'Leslie Knope', - username: 'lknope', - email: 'leslie.knope@elastic.co', - }, - }; - - it('has expected attributes in request', () => { - const query = ConfigurationAttributesRt.decode(defaultRequest); - - expect(query).toStrictEqual({ - _tag: 'Right', - right: defaultRequest, - }); - }); - - it('removes foo:bar attributes from request', () => { - const query = ConfigurationAttributesRt.decode({ ...defaultRequest, foo: 'bar' }); - - expect(query).toStrictEqual({ - _tag: 'Right', - right: defaultRequest, - }); - }); - }); - - describe('ConfigurationRt', () => { - const defaultRequest = { - connector: serviceNow, - closure_type: 'close-by-user', - created_at: '2020-02-19T23:06:33.798Z', - created_by: { - full_name: 'Leslie Knope', - username: 'lknope', - email: 'leslie.knope@elastic.co', - }, - updated_at: '2020-02-19T23:06:33.798Z', - updated_by: null, - mappings: [ - { - source: 'description', - target: 'description', - action_type: 'overwrite', - }, - ], - owner: 'cases', - version: 'WzQ3LDFd', - id: 'case-id', - error: null, - }; - - it('has expected attributes in request', () => { - const query = ConfigurationRt.decode(defaultRequest); - - expect(query).toStrictEqual({ - _tag: 'Right', - right: defaultRequest, - }); - }); - - it('removes foo:bar attributes from request', () => { - const query = ConfigurationRt.decode({ ...defaultRequest, foo: 'bar' }); - - expect(query).toStrictEqual({ - _tag: 'Right', - right: defaultRequest, - }); - }); - - it('removes foo:bar attributes from mappings', () => { - const query = ConfigurationRt.decode({ - ...defaultRequest, - mappings: [{ ...defaultRequest.mappings[0], foo: 'bar' }], - }); - - expect(query).toStrictEqual({ - _tag: 'Right', - right: defaultRequest, - }); - }); - }); - describe('GetConfigurationFindRequestRt', () => { const defaultRequest = { owner: ['cases'], diff --git a/x-pack/plugins/cases/common/types/api/configure/v1.ts b/x-pack/plugins/cases/common/types/api/configure/v1.ts new file mode 100644 index 0000000000000..fffff5310f6af --- /dev/null +++ b/x-pack/plugins/cases/common/types/api/configure/v1.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 * as rt from 'io-ts'; +import type { Configurations, Configuration } from '../../domain/configure/v1'; +import { ConfigurationBasicWithoutOwnerRt, CasesConfigureBasicRt } from '../../domain/configure/v1'; + +export const ConfigurationRequestRt = CasesConfigureBasicRt; + +export const GetConfigurationFindRequestRt = rt.exact( + rt.partial({ + /** + * The configuration plugin owner to filter the search by. If this is left empty the results will include all configurations + * that the user has permissions to access + */ + owner: rt.union([rt.array(rt.string), rt.string]), + }) +); + +export const CaseConfigureRequestParamsRt = rt.strict({ + configuration_id: rt.string, +}); + +export const ConfigurationPatchRequestRt = rt.intersection([ + rt.exact(rt.partial(ConfigurationBasicWithoutOwnerRt.type.props)), + rt.strict({ version: rt.string }), +]); + +export type ConfigurationRequest = rt.TypeOf; +export type ConfigurationPatchRequest = rt.TypeOf; +export type GetConfigurationFindRequest = rt.TypeOf; +export type GetConfigureResponse = Configurations; +export type CreateConfigureResponse = Configuration; +export type UpdateConfigureResponse = Configuration; diff --git a/x-pack/plugins/cases/common/types/api/index.ts b/x-pack/plugins/cases/common/types/api/index.ts new file mode 100644 index 0000000000000..7a9b19ba2250d --- /dev/null +++ b/x-pack/plugins/cases/common/types/api/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. + */ + +// Latest +export * from './configure/latest'; + +// V1 +export * as configureApiV1 from './configure/v1'; diff --git a/x-pack/plugins/cases/common/types/domain/configure/latest.ts b/x-pack/plugins/cases/common/types/domain/configure/latest.ts new file mode 100644 index 0000000000000..25300c97a6d2e --- /dev/null +++ b/x-pack/plugins/cases/common/types/domain/configure/latest.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './v1'; diff --git a/x-pack/plugins/cases/common/types/domain/configure/v1.test.ts b/x-pack/plugins/cases/common/types/domain/configure/v1.test.ts new file mode 100644 index 0000000000000..f27db54b784f5 --- /dev/null +++ b/x-pack/plugins/cases/common/types/domain/configure/v1.test.ts @@ -0,0 +1,119 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ConnectorTypes } from '../../../api'; +import { ConfigurationAttributesRt, ConfigurationRt } from './v1'; + +describe('configure', () => { + const serviceNow = { + id: 'servicenow-1', + name: 'SN 1', + type: ConnectorTypes.serviceNowITSM, + fields: null, + }; + + const resilient = { + id: 'resilient-2', + name: 'Resilient', + type: ConnectorTypes.resilient, + fields: null, + }; + + describe('ConfigurationAttributesRt', () => { + const defaultRequest = { + connector: resilient, + closure_type: 'close-by-user', + owner: 'cases', + created_at: '2020-02-19T23:06:33.798Z', + created_by: { + full_name: 'Leslie Knope', + username: 'lknope', + email: 'leslie.knope@elastic.co', + }, + updated_at: '2020-02-19T23:06:33.798Z', + updated_by: { + full_name: 'Leslie Knope', + username: 'lknope', + email: 'leslie.knope@elastic.co', + }, + }; + + it('has expected attributes in request', () => { + const query = ConfigurationAttributesRt.decode(defaultRequest); + + expect(query).toStrictEqual({ + _tag: 'Right', + right: defaultRequest, + }); + }); + + it('removes foo:bar attributes from request', () => { + const query = ConfigurationAttributesRt.decode({ ...defaultRequest, foo: 'bar' }); + + expect(query).toStrictEqual({ + _tag: 'Right', + right: defaultRequest, + }); + }); + }); + + describe('ConfigurationRt', () => { + const defaultRequest = { + connector: serviceNow, + closure_type: 'close-by-user', + created_at: '2020-02-19T23:06:33.798Z', + created_by: { + full_name: 'Leslie Knope', + username: 'lknope', + email: 'leslie.knope@elastic.co', + }, + updated_at: '2020-02-19T23:06:33.798Z', + updated_by: null, + mappings: [ + { + source: 'description', + target: 'description', + action_type: 'overwrite', + }, + ], + owner: 'cases', + version: 'WzQ3LDFd', + id: 'case-id', + error: null, + }; + + it('has expected attributes in request', () => { + const query = ConfigurationRt.decode(defaultRequest); + + expect(query).toStrictEqual({ + _tag: 'Right', + right: defaultRequest, + }); + }); + + it('removes foo:bar attributes from request', () => { + const query = ConfigurationRt.decode({ ...defaultRequest, foo: 'bar' }); + + expect(query).toStrictEqual({ + _tag: 'Right', + right: defaultRequest, + }); + }); + + it('removes foo:bar attributes from mappings', () => { + const query = ConfigurationRt.decode({ + ...defaultRequest, + mappings: [{ ...defaultRequest.mappings[0], foo: 'bar' }], + }); + + expect(query).toStrictEqual({ + _tag: 'Right', + right: defaultRequest, + }); + }); + }); +}); diff --git a/x-pack/plugins/cases/common/api/cases/configure.ts b/x-pack/plugins/cases/common/types/domain/configure/v1.ts similarity index 60% rename from x-pack/plugins/cases/common/api/cases/configure.ts rename to x-pack/plugins/cases/common/types/domain/configure/v1.ts index 9a24241c424ab..080d971026afc 100644 --- a/x-pack/plugins/cases/common/api/cases/configure.ts +++ b/x-pack/plugins/cases/common/types/domain/configure/v1.ts @@ -6,9 +6,7 @@ */ import * as rt from 'io-ts'; -import { CaseConnectorRt } from '../connectors/connector'; -import { ConnectorMappingsRt } from '../connectors/mappings'; -import { UserRt } from '../user'; +import { CaseConnectorRt, UserRt, ConnectorMappingsRt } from '../../../api'; const ClosureTypeRt = rt.union([rt.literal('close-by-user'), rt.literal('close-by-pushing')]); @@ -23,7 +21,7 @@ export const ConfigurationBasicWithoutOwnerRt = rt.strict({ closure_type: ClosureTypeRt, }); -const CasesConfigureBasicRt = rt.intersection([ +export const CasesConfigureBasicRt = rt.intersection([ ConfigurationBasicWithoutOwnerRt, rt.strict({ /** @@ -33,12 +31,6 @@ const CasesConfigureBasicRt = rt.intersection([ }), ]); -export const ConfigurationRequestRt = CasesConfigureBasicRt; -export const ConfigurationPatchRequestRt = rt.intersection([ - rt.exact(rt.partial(ConfigurationBasicWithoutOwnerRt.type.props)), - rt.strict({ version: rt.string }), -]); - export const ConfigurationActivityFieldsRt = rt.strict({ created_at: rt.string, created_by: UserRt, @@ -62,27 +54,9 @@ export const ConfigurationRt = rt.intersection([ }), ]); -export const GetConfigurationFindRequestRt = rt.exact( - rt.partial({ - /** - * The configuration plugin owner to filter the search by. If this is left empty the results will include all configurations - * that the user has permissions to access - */ - owner: rt.union([rt.array(rt.string), rt.string]), - }) -); - -export const CaseConfigureRequestParamsRt = rt.strict({ - configuration_id: rt.string, -}); - export const ConfigurationsRt = rt.array(ConfigurationRt); export type ClosureType = rt.TypeOf; -export type ConfigurationRequest = rt.TypeOf; -export type ConfigurationPatchRequest = rt.TypeOf; export type ConfigurationAttributes = rt.TypeOf; export type Configuration = rt.TypeOf; export type Configurations = rt.TypeOf; - -export type GetConfigurationFindRequest = rt.TypeOf; diff --git a/x-pack/plugins/cases/common/types/domain/index.ts b/x-pack/plugins/cases/common/types/domain/index.ts new file mode 100644 index 0000000000000..2c5169582c1da --- /dev/null +++ b/x-pack/plugins/cases/common/types/domain/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. + */ + +// Latest +export * from './configure/latest'; + +// V1 +export * as configureDomainV1 from './configure/v1'; diff --git a/x-pack/plugins/cases/public/containers/configure/__mocks__/api.ts b/x-pack/plugins/cases/public/containers/configure/__mocks__/api.ts index 2826f47b3213b..3737b26cf11c1 100644 --- a/x-pack/plugins/cases/public/containers/configure/__mocks__/api.ts +++ b/x-pack/plugins/cases/public/containers/configure/__mocks__/api.ts @@ -5,17 +5,13 @@ * 2.0. */ -import type { - ConfigurationPatchRequest, - ConfigurationRequest, - ActionConnector, - ActionTypeConnector, -} from '../../../../common/api'; +import type { ActionConnector, ActionTypeConnector } from '../../../../common/api'; import type { ApiProps } from '../../types'; import type { CaseConfigure } from '../types'; import { caseConfigurationCamelCaseResponseMock } from '../mock'; import { actionTypesMock, connectorsMock } from '../../../common/mock/connectors'; +import type { ConfigurationPatchRequest, ConfigurationRequest } from '../../../../common/types/api'; export const getSupportedActionConnectors = async ({ signal, diff --git a/x-pack/plugins/cases/public/containers/configure/api.ts b/x-pack/plugins/cases/public/containers/configure/api.ts index 3405bbabf64b8..7ca6481a417cf 100644 --- a/x-pack/plugins/cases/public/containers/configure/api.ts +++ b/x-pack/plugins/cases/public/containers/configure/api.ts @@ -7,15 +7,10 @@ import { isEmpty } from 'lodash/fp'; import { CasesConnectorFeatureId } from '@kbn/actions-plugin/common'; +import type { ConfigurationPatchRequest, ConfigurationRequest } from '../../../common/types/api'; +import type { Configuration, Configurations } from '../../../common/types/domain'; import { getAllConnectorTypesUrl } from '../../../common/utils/connectors_api'; -import type { - ActionConnector, - ActionTypeConnector, - ConfigurationPatchRequest, - ConfigurationRequest, - Configuration, - Configurations, -} from '../../../common/api'; +import type { ActionConnector, ActionTypeConnector } from '../../../common/api'; import { getCaseConfigurationDetailsUrl } from '../../../common/api'; import { CASE_CONFIGURE_CONNECTORS_URL, CASE_CONFIGURE_URL } from '../../../common/constants'; import { KibanaServices } from '../../common/lib/kibana'; diff --git a/x-pack/plugins/cases/public/containers/configure/mock.ts b/x-pack/plugins/cases/public/containers/configure/mock.ts index c350b70c58632..51bdb2117f4de 100644 --- a/x-pack/plugins/cases/public/containers/configure/mock.ts +++ b/x-pack/plugins/cases/public/containers/configure/mock.ts @@ -5,7 +5,8 @@ * 2.0. */ -import type { Configuration, ConfigurationRequest } from '../../../common/api'; +import type { ConfigurationRequest } from '../../../common/types/api'; +import type { Configuration } from '../../../common/types/domain'; import { ConnectorTypes } from '../../../common/api'; import { SECURITY_SOLUTION_OWNER } from '../../../common/constants'; import type { CaseConfigure, CaseConnectorMapping } from './types'; diff --git a/x-pack/plugins/cases/public/containers/configure/types.ts b/x-pack/plugins/cases/public/containers/configure/types.ts index 1dec01523d0f7..ca0a6d14bea91 100644 --- a/x-pack/plugins/cases/public/containers/configure/types.ts +++ b/x-pack/plugins/cases/public/containers/configure/types.ts @@ -5,6 +5,7 @@ * 2.0. */ +import type { ClosureType, ConfigurationAttributes } from '../../../common/types/domain'; import type { CaseUser } from '../types'; import type { ActionConnector, @@ -12,9 +13,7 @@ import type { ActionType, CaseConnector, CaseField, - ClosureType, ThirdPartyField, - ConfigurationAttributes, } from '../../../common/api'; export type { diff --git a/x-pack/plugins/cases/public/containers/utils.ts b/x-pack/plugins/cases/public/containers/utils.ts index 2d59f38149506..cbeaff9b2c873 100644 --- a/x-pack/plugins/cases/public/containers/utils.ts +++ b/x-pack/plugins/cases/public/containers/utils.ts @@ -11,10 +11,10 @@ import { identity } from 'fp-ts/lib/function'; import { pipe } from 'fp-ts/lib/pipeable'; import type { ToastInputFields } from '@kbn/core/public'; +import type { Configuration, Configurations } from '../../common/types/domain'; +import { ConfigurationRt, ConfigurationsRt } from '../../common/types/domain'; import { NO_ASSIGNEES_FILTERING_KEYWORD } from '../../common/constants'; import type { - Configurations, - Configuration, UserActions, CasePatchRequest, CaseResolveResponse, @@ -28,8 +28,6 @@ import { CaseRt, CasesRt, throwErrors, - ConfigurationsRt, - ConfigurationRt, UserActionsRt, CommentType, CaseResolveResponseRt, diff --git a/x-pack/plugins/cases/server/client/cases/push.ts b/x-pack/plugins/cases/server/client/cases/push.ts index 07b14a14a9d58..03d7c09024e71 100644 --- a/x-pack/plugins/cases/server/client/cases/push.ts +++ b/x-pack/plugins/cases/server/client/cases/push.ts @@ -12,11 +12,11 @@ import type { SavedObjectsFindResponse } from '@kbn/core/server'; import type { UserProfile } from '@kbn/security-plugin/common'; import type { SecurityPluginStart } from '@kbn/security-plugin/server'; import { asSavedObjectExecutionSource } from '@kbn/actions-plugin/server'; +import type { ConfigurationAttributes } from '../../../common/types/domain'; import type { ActionConnector, Case, ExternalServiceResponse, - ConfigurationAttributes, CommentRequestAlertType, CommentAttributes, } from '../../../common/api'; diff --git a/x-pack/plugins/cases/server/client/configure/client.ts b/x-pack/plugins/cases/server/client/configure/client.ts index 0cc69b42608e4..b645fae2dbac9 100644 --- a/x-pack/plugins/cases/server/client/configure/client.ts +++ b/x-pack/plugins/cases/server/client/configure/client.ts @@ -14,24 +14,22 @@ import type { FindActionResult } from '@kbn/actions-plugin/server/types'; import type { ActionType } from '@kbn/actions-plugin/common'; import { CasesConnectorFeatureId } from '@kbn/actions-plugin/common'; import type { - Configurations, + Configuration, ConfigurationAttributes, + Configurations, +} from '../../../common/types/domain'; +import type { ConfigurationPatchRequest, ConfigurationRequest, - Configuration, - ConnectorMappings, GetConfigurationFindRequest, - ConnectorMappingResponse, -} from '../../../common/api'; +} from '../../../common/types/api'; import { - ConfigurationsRt, ConfigurationPatchRequestRt, - GetConfigurationFindRequestRt, - ConfigurationRt, - FindActionConnectorResponseRt, - decodeWithExcessOrThrow, ConfigurationRequestRt, -} from '../../../common/api'; + GetConfigurationFindRequestRt, +} from '../../../common/types/api'; +import type { ConnectorMappings, ConnectorMappingResponse } from '../../../common/api'; +import { FindActionConnectorResponseRt, decodeWithExcessOrThrow } from '../../../common/api'; import { MAX_CONCURRENT_SEARCHES } from '../../../common/constants'; import { createCaseError } from '../../common/error'; import type { CasesClientInternal } from '../client_internal'; @@ -44,6 +42,7 @@ import type { MappingsArgs, CreateMappingsArgs, UpdateMappingsArgs } from './typ import { createMappings } from './create_mappings'; import { updateMappings } from './update_mappings'; import { decodeOrThrow } from '../../../common/api/runtime_types'; +import { ConfigurationRt, ConfigurationsRt } from '../../../common/types/domain'; /** * Defines the internal helper functions. @@ -63,7 +62,7 @@ export interface ConfigureSubClient { /** * Retrieves the external connector configuration for a particular case owner. */ - get(params: GetConfigurationFindRequest): Promise; + get(params: GetConfigurationFindRequest): Promise; /** * Retrieves the valid external connectors supported by the cases plugin. */ diff --git a/x-pack/plugins/cases/server/common/types/configure.ts b/x-pack/plugins/cases/server/common/types/configure.ts index ae1b5fc0764f3..7f615a9fd5e09 100644 --- a/x-pack/plugins/cases/server/common/types/configure.ts +++ b/x-pack/plugins/cases/server/common/types/configure.ts @@ -8,12 +8,12 @@ import * as rt from 'io-ts'; import type { SavedObject } from '@kbn/core/server'; -import type { ConfigurationAttributes } from '../../../common/api'; +import type { ConfigurationAttributes } from '../../../common/types/domain'; import { ConfigurationActivityFieldsRt, - ConfigurationBasicWithoutOwnerRt, ConfigurationAttributesRt, -} from '../../../common/api'; + ConfigurationBasicWithoutOwnerRt, +} from '../../../common/types/domain'; import type { ConnectorPersisted } from './connectors'; import type { User } from './user'; diff --git a/x-pack/plugins/cases/server/routes/api/configure/get_configure.ts b/x-pack/plugins/cases/server/routes/api/configure/get_configure.ts index 123a3b987bc07..27e453993e994 100644 --- a/x-pack/plugins/cases/server/routes/api/configure/get_configure.ts +++ b/x-pack/plugins/cases/server/routes/api/configure/get_configure.ts @@ -6,9 +6,9 @@ */ import { CASE_CONFIGURE_URL } from '../../../../common/constants'; -import type { GetConfigurationFindRequest } from '../../../../common/api'; import { createCaseError } from '../../../common/error'; import { createCasesRoute } from '../create_cases_route'; +import type { configureApiV1 } from '../../../../common/types/api'; export const getCaseConfigureRoute = createCasesRoute({ method: 'get', @@ -17,10 +17,12 @@ export const getCaseConfigureRoute = createCasesRoute({ try { const caseContext = await context.cases; const client = await caseContext.getCasesClient(); - const options = request.query as GetConfigurationFindRequest; + const options = request.query as configureApiV1.GetConfigurationFindRequest; + + const res: configureApiV1.GetConfigureResponse = await client.configure.get({ ...options }); return response.ok({ - body: await client.configure.get({ ...options }), + body: res, }); } catch (error) { throw createCaseError({ diff --git a/x-pack/plugins/cases/server/routes/api/configure/patch_configure.ts b/x-pack/plugins/cases/server/routes/api/configure/patch_configure.ts index 55e7ede2abd06..2ab05277891ed 100644 --- a/x-pack/plugins/cases/server/routes/api/configure/patch_configure.ts +++ b/x-pack/plugins/cases/server/routes/api/configure/patch_configure.ts @@ -5,11 +5,12 @@ * 2.0. */ -import type { ConfigurationPatchRequest } from '../../../../common/api'; -import { CaseConfigureRequestParamsRt, decodeWithExcessOrThrow } from '../../../../common/api'; +import { CaseConfigureRequestParamsRt } from '../../../../common/types/api'; +import { decodeWithExcessOrThrow } from '../../../../common/api'; import { CASE_CONFIGURE_DETAILS_URL } from '../../../../common/constants'; import { createCaseError } from '../../../common/error'; import { createCasesRoute } from '../create_cases_route'; +import type { configureApiV1 } from '../../../../common/types/api'; export const patchCaseConfigureRoute = createCasesRoute({ method: 'patch', @@ -20,10 +21,14 @@ export const patchCaseConfigureRoute = createCasesRoute({ const caseContext = await context.cases; const client = await caseContext.getCasesClient(); - const configuration = request.body as ConfigurationPatchRequest; + const configuration = request.body as configureApiV1.ConfigurationPatchRequest; + const res: configureApiV1.UpdateConfigureResponse = await client.configure.update( + params.configuration_id, + configuration + ); return response.ok({ - body: await client.configure.update(params.configuration_id, configuration), + body: res, }); } catch (error) { throw createCaseError({ diff --git a/x-pack/plugins/cases/server/routes/api/configure/post_configure.ts b/x-pack/plugins/cases/server/routes/api/configure/post_configure.ts index bb15059f541b1..b4d831df75537 100644 --- a/x-pack/plugins/cases/server/routes/api/configure/post_configure.ts +++ b/x-pack/plugins/cases/server/routes/api/configure/post_configure.ts @@ -5,10 +5,12 @@ * 2.0. */ -import { ConfigurationRequestRt, decodeWithExcessOrThrow } from '../../../../common/api'; +import { ConfigurationRequestRt } from '../../../../common/types/api'; +import { decodeWithExcessOrThrow } from '../../../../common/api'; import { CASE_CONFIGURE_URL } from '../../../../common/constants'; import { createCaseError } from '../../../common/error'; import { createCasesRoute } from '../create_cases_route'; +import type { configureApiV1 } from '../../../../common/types/api'; export const postCaseConfigureRoute = createCasesRoute({ method: 'post', @@ -19,9 +21,10 @@ export const postCaseConfigureRoute = createCasesRoute({ const caseContext = await context.cases; const client = await caseContext.getCasesClient(); + const res: configureApiV1.CreateConfigureResponse = await client.configure.create(query); return response.ok({ - body: await client.configure.create(query), + body: res, }); } catch (error) { throw createCaseError({ diff --git a/x-pack/plugins/cases/server/saved_object_types/migrations/configuration.test.ts b/x-pack/plugins/cases/server/saved_object_types/migrations/configuration.test.ts index 2d3ffbc38242f..a5285817b2688 100644 --- a/x-pack/plugins/cases/server/saved_object_types/migrations/configuration.test.ts +++ b/x-pack/plugins/cases/server/saved_object_types/migrations/configuration.test.ts @@ -7,7 +7,6 @@ import type { SavedObjectSanitizedDoc, SavedObjectUnsanitizedDoc } from '@kbn/core/server'; import { ACTION_SAVED_OBJECT_TYPE } from '@kbn/actions-plugin/server'; -import type { ConfigurationAttributes } from '../../../common/api'; import { ConnectorTypes } from '../../../common/api'; import { CASE_CONFIGURE_SAVED_OBJECT, SECURITY_SOLUTION_OWNER } from '../../../common/constants'; import { CONNECTOR_ID_REFERENCE_NAME } from '../../common/constants'; @@ -16,6 +15,7 @@ import type { ESCaseConnectorWithId } from '../../services/test_utils'; import type { UnsanitizedConfigureConnector } from './configuration'; import { createConnectorAttributeMigration, configureConnectorIdMigration } from './configuration'; import type { ConfigurationPersistedAttributes } from '../../common/types/configure'; +import type { ConfigurationAttributes } from '../../../common/types/domain'; // eslint-disable-next-line @typescript-eslint/naming-convention const create_7_14_0_configSchema = (connector?: ESCaseConnectorWithId) => ({ diff --git a/x-pack/plugins/cases/server/services/configure/index.test.ts b/x-pack/plugins/cases/server/services/configure/index.test.ts index ff7d37d861c38..ce9c3f68a604f 100644 --- a/x-pack/plugins/cases/server/services/configure/index.test.ts +++ b/x-pack/plugins/cases/server/services/configure/index.test.ts @@ -5,11 +5,7 @@ * 2.0. */ -import type { - CaseConnector, - ConfigurationAttributes, - ConfigurationPatchRequest, -} from '../../../common/api'; +import type { CaseConnector } from '../../../common/api'; import { ConnectorTypes } from '../../../common/api'; import { CASE_CONFIGURE_SAVED_OBJECT, SECURITY_SOLUTION_OWNER } from '../../../common/constants'; import { savedObjectsClientMock } from '@kbn/core/server/mocks'; @@ -30,6 +26,8 @@ import type { ESCaseConnectorWithId } from '../test_utils'; import { createESJiraConnector, createJiraConnector } from '../test_utils'; import type { ConfigurationPersistedAttributes } from '../../common/types/configure'; import { unset } from 'lodash'; +import type { ConfigurationPatchRequest } from '../../../common/types/api'; +import type { ConfigurationAttributes } from '../../../common/types/domain'; const basicConfigFields = { closure_type: 'close-by-pushing' as const, diff --git a/x-pack/plugins/cases/server/services/configure/index.ts b/x-pack/plugins/cases/server/services/configure/index.ts index 083d7aeb19ce2..6860f9edc940d 100644 --- a/x-pack/plugins/cases/server/services/configure/index.ts +++ b/x-pack/plugins/cases/server/services/configure/index.ts @@ -13,8 +13,8 @@ import type { } from '@kbn/core/server'; import { ACTION_SAVED_OBJECT_TYPE } from '@kbn/actions-plugin/server'; +import type { ConfigurationAttributes } from '../../../common/types/domain'; import { CONNECTOR_ID_REFERENCE_NAME } from '../../common/constants'; -import type { ConfigurationAttributes } from '../../../common/api'; import { decodeOrThrow } from '../../../common/api'; import { CASE_CONFIGURE_SAVED_OBJECT } from '../../../common/constants'; import { diff --git a/x-pack/plugins/cases/server/services/configure/types.ts b/x-pack/plugins/cases/server/services/configure/types.ts index 2697d02c84c80..f6f325d0280e5 100644 --- a/x-pack/plugins/cases/server/services/configure/types.ts +++ b/x-pack/plugins/cases/server/services/configure/types.ts @@ -6,7 +6,7 @@ */ import type { SavedObject, SavedObjectsClientContract } from '@kbn/core/server'; -import type { ConfigurationAttributes } from '../../../common/api'; +import type { ConfigurationAttributes } from '../../../common/types/domain'; import type { IndexRefresh } from '../types'; import type { SavedObjectFindOptionsKueryNode } from '../../common/types'; diff --git a/x-pack/test/cases_api_integration/common/lib/api/configuration.ts b/x-pack/test/cases_api_integration/common/lib/api/configuration.ts index 17c6e1f6eadbb..2d3f7312af474 100644 --- a/x-pack/test/cases_api_integration/common/lib/api/configuration.ts +++ b/x-pack/test/cases_api_integration/common/lib/api/configuration.ts @@ -5,13 +5,10 @@ * 2.0. */ -import { - CaseConnector, - ConfigurationRequest, - Configuration, - ConnectorTypes, -} from '@kbn/cases-plugin/common/api'; +import { CaseConnector, ConnectorTypes } from '@kbn/cases-plugin/common/api'; import { CASE_CONFIGURE_URL } from '@kbn/cases-plugin/common/constants'; +import { ConfigurationRequest } from '@kbn/cases-plugin/common/types/api'; +import { Configuration } from '@kbn/cases-plugin/common/types/domain'; import type SuperTest from 'supertest'; import { User } from '../authentication/types'; diff --git a/x-pack/test/cases_api_integration/common/lib/api/connectors.ts b/x-pack/test/cases_api_integration/common/lib/api/connectors.ts index 9c5c9506cffb3..3e5f499c2314b 100644 --- a/x-pack/test/cases_api_integration/common/lib/api/connectors.ts +++ b/x-pack/test/cases_api_integration/common/lib/api/connectors.ts @@ -11,7 +11,6 @@ import http from 'http'; import type SuperTest from 'supertest'; import { CASE_CONFIGURE_CONNECTORS_URL } from '@kbn/cases-plugin/common/constants'; import { - Configuration, CaseConnector, ConnectorTypes, CasePostRequest, @@ -22,6 +21,7 @@ import { import { ActionResult, FindActionResult } from '@kbn/actions-plugin/server/types'; import { getServiceNowServer } from '@kbn/actions-simulators-plugin/server/plugin'; import { RecordingServiceNowSimulator } from '@kbn/actions-simulators-plugin/server/servicenow_simulation'; +import { Configuration } from '@kbn/cases-plugin/common/types/domain'; import { User } from '../authentication/types'; import { superUser } from '../authentication/users'; import { getPostCaseRequest } from '../mock'; diff --git a/x-pack/test/cases_api_integration/common/lib/api/index.ts b/x-pack/test/cases_api_integration/common/lib/api/index.ts index 70489015c1777..1a758f2ddbea8 100644 --- a/x-pack/test/cases_api_integration/common/lib/api/index.ts +++ b/x-pack/test/cases_api_integration/common/lib/api/index.ts @@ -27,15 +27,12 @@ import { INTERNAL_GET_CASE_CATEGORIES_URL, } from '@kbn/cases-plugin/common/constants'; import { - Configuration, Case, CaseStatuses, Cases, CasesFindResponse, CasesPatchRequest, - ConfigurationPatchRequest, CasesStatusResponse, - Configurations, AlertResponse, ConnectorMappingsAttributes, CasesByAlertId, @@ -49,6 +46,8 @@ import { ActionResult } from '@kbn/actions-plugin/server/types'; import { CasePersistedAttributes } from '@kbn/cases-plugin/server/common/types/case'; import type { SavedObjectsRawDocSource } from '@kbn/core/server'; import type { ConfigurationPersistedAttributes } from '@kbn/cases-plugin/server/common/types/configure'; +import { Configurations, Configuration } from '@kbn/cases-plugin/common/types/domain'; +import { ConfigurationPatchRequest } from '@kbn/cases-plugin/common/types/api'; import { User } from '../authentication/types'; import { superUser } from '../authentication/users'; import { getSpaceUrlPrefix, setupAuth } from './helpers'; From d9744464dc4d8d3c0f891b94871eb8f3fe341c4d Mon Sep 17 00:00:00 2001 From: Davis McPhee Date: Thu, 29 Jun 2023 11:39:04 -0300 Subject: [PATCH 12/41] [Discover] Fix documents request missing pinned filters (#160693) ## Summary This PR fixes a bug where pinned filters were not being applied to the Discover documents request. Fixes #160579. ### Checklist - [ ] ~Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)~ - [ ] ~[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials~ - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] ~Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/))~ - [ ] ~Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))~ - [ ] ~If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~ - [ ] ~This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))~ - [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) --- .../services/discover_app_state_container.ts | 2 - .../discover_global_state_container.ts | 26 +++++ .../discover_saved_search_container.test.ts | 35 ++++--- .../discover_saved_search_container.ts | 28 ++++-- .../main/services/discover_state.ts | 29 +++--- .../main/utils/update_saved_search.test.ts | 96 +++++++++++++++++++ .../main/utils/update_saved_search.ts | 43 +++++---- .../apps/discover/group1/_filter_editor.ts | 43 ++++++++- 8 files changed, 247 insertions(+), 55 deletions(-) create mode 100644 src/plugins/discover/public/application/main/services/discover_global_state_container.ts create mode 100644 src/plugins/discover/public/application/main/utils/update_saved_search.test.ts diff --git a/src/plugins/discover/public/application/main/services/discover_app_state_container.ts b/src/plugins/discover/public/application/main/services/discover_app_state_container.ts index 9913ac716100e..75cf23e3320db 100644 --- a/src/plugins/discover/public/application/main/services/discover_app_state_container.ts +++ b/src/plugins/discover/public/application/main/services/discover_app_state_container.ts @@ -259,8 +259,6 @@ export interface AppStateUrl extends Omit { sort?: string[][] | [string, string]; } -export const GLOBAL_STATE_URL_KEY = '_g'; - export function getInitialState( stateStorage: IKbnUrlStateStorage | undefined, savedSearch: SavedSearch, diff --git a/src/plugins/discover/public/application/main/services/discover_global_state_container.ts b/src/plugins/discover/public/application/main/services/discover_global_state_container.ts new file mode 100644 index 0000000000000..39e099653039f --- /dev/null +++ b/src/plugins/discover/public/application/main/services/discover_global_state_container.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 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 { QueryState } from '@kbn/data-plugin/common'; +import type { IKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; + +export interface DiscoverGlobalStateContainer { + get: () => QueryState | null; + set: (state: QueryState) => Promise; +} + +const GLOBAL_STATE_URL_KEY = '_g'; + +export const getDiscoverGlobalStateContainer = ( + stateStorage: IKbnUrlStateStorage +): DiscoverGlobalStateContainer => ({ + get: () => stateStorage.get(GLOBAL_STATE_URL_KEY), + set: async (state: QueryState) => { + await stateStorage.set(GLOBAL_STATE_URL_KEY, state, { replace: true }); + }, +}); diff --git a/src/plugins/discover/public/application/main/services/discover_saved_search_container.test.ts b/src/plugins/discover/public/application/main/services/discover_saved_search_container.test.ts index bf74e58346ebf..fe575f9c6dfc8 100644 --- a/src/plugins/discover/public/application/main/services/discover_saved_search_container.test.ts +++ b/src/plugins/discover/public/application/main/services/discover_saved_search_container.test.ts @@ -12,19 +12,22 @@ import { discoverServiceMock } from '../../../__mocks__/services'; import { savedSearchMock, savedSearchMockWithTimeField } from '../../../__mocks__/saved_search'; import { dataViewMock } from '../../../__mocks__/data_view'; import { dataViewComplexMock } from '../../../__mocks__/data_view_complex'; +import { getDiscoverGlobalStateContainer } from './discover_global_state_container'; +import { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; describe('DiscoverSavedSearchContainer', () => { const savedSearch = savedSearchMock; const services = discoverServiceMock; + const globalStateContainer = getDiscoverGlobalStateContainer(createKbnUrlStateStorage()); describe('getTitle', () => { it('returns undefined for new saved searches', () => { - const container = getSavedSearchContainer({ services }); + const container = getSavedSearchContainer({ services, globalStateContainer }); expect(container.getTitle()).toBe(undefined); }); it('returns the title of a persisted saved searches', () => { - const container = getSavedSearchContainer({ services }); + const container = getSavedSearchContainer({ services, globalStateContainer }); container.set(savedSearch); expect(container.getTitle()).toBe(savedSearch.title); }); @@ -32,7 +35,7 @@ describe('DiscoverSavedSearchContainer', () => { describe('set', () => { it('should update the current and initial state of the saved search', () => { - const container = getSavedSearchContainer({ services }); + const container = getSavedSearchContainer({ services, globalStateContainer }); const newSavedSearch: SavedSearch = { ...savedSearch, title: 'New title' }; const result = container.set(newSavedSearch); @@ -45,7 +48,7 @@ describe('DiscoverSavedSearchContainer', () => { }); it('should reset hasChanged$ to false', () => { - const container = getSavedSearchContainer({ services }); + const container = getSavedSearchContainer({ services, globalStateContainer }); const newSavedSearch: SavedSearch = { ...savedSearch, title: 'New title' }; container.set(newSavedSearch); @@ -55,7 +58,7 @@ describe('DiscoverSavedSearchContainer', () => { describe('new', () => { it('should create a new saved search', async () => { - const container = getSavedSearchContainer({ services }); + const container = getSavedSearchContainer({ services, globalStateContainer }); const result = await container.new(dataViewMock); expect(result.title).toBeUndefined(); @@ -68,7 +71,7 @@ describe('DiscoverSavedSearchContainer', () => { }); it('should create a new saved search with provided DataView', async () => { - const container = getSavedSearchContainer({ services }); + const container = getSavedSearchContainer({ services, globalStateContainer }); const result = await container.new(dataViewMock); expect(result.title).toBeUndefined(); expect(result.id).toBeUndefined(); @@ -86,6 +89,7 @@ describe('DiscoverSavedSearchContainer', () => { it('loads a saved search', async () => { const savedSearchContainer = getSavedSearchContainer({ services: discoverServiceMock, + globalStateContainer, }); await savedSearchContainer.load('the-saved-search-id'); expect(savedSearchContainer.getInitial$().getValue().id).toEqual('the-saved-search-id'); @@ -100,6 +104,7 @@ describe('DiscoverSavedSearchContainer', () => { it('calls saveSavedSearch with the given saved search and save options', async () => { const savedSearchContainer = getSavedSearchContainer({ services: discoverServiceMock, + globalStateContainer, }); const savedSearchToPersist = { ...savedSearchMockWithTimeField, @@ -124,6 +129,7 @@ describe('DiscoverSavedSearchContainer', () => { const savedSearchContainer = getSavedSearchContainer({ services: discoverServiceMock, + globalStateContainer, }); const result = await savedSearchContainer.persist(persistedSavedSearch, saveOptions); @@ -135,6 +141,7 @@ describe('DiscoverSavedSearchContainer', () => { it('emits false to the hasChanged$ BehaviorSubject', async () => { const savedSearchContainer = getSavedSearchContainer({ services: discoverServiceMock, + globalStateContainer, }); const savedSearchToPersist = { ...savedSearchMockWithTimeField, @@ -153,6 +160,7 @@ describe('DiscoverSavedSearchContainer', () => { })); const savedSearchContainer = getSavedSearchContainer({ services: discoverServiceMock, + globalStateContainer, }); const savedSearchToPersist = { ...savedSearchMockWithTimeField, @@ -176,6 +184,7 @@ describe('DiscoverSavedSearchContainer', () => { const savedSearchContainer = getSavedSearchContainer({ services: discoverServiceMock, + globalStateContainer, }); savedSearchContainer.set(savedSearch); savedSearchContainer.update({ nextState: { hideChart: true } }); @@ -196,28 +205,30 @@ describe('DiscoverSavedSearchContainer', () => { it('updates a saved search by app state providing hideChart', async () => { const savedSearchContainer = getSavedSearchContainer({ services: discoverServiceMock, + globalStateContainer, }); savedSearchContainer.set(savedSearch); - const updated = await savedSearchContainer.update({ nextState: { hideChart: true } }); + const updated = savedSearchContainer.update({ nextState: { hideChart: true } }); expect(savedSearchContainer.getHasChanged$().getValue()).toBe(true); savedSearchContainer.set(updated); expect(savedSearchContainer.getHasChanged$().getValue()).toBe(false); - await savedSearchContainer.update({ nextState: { hideChart: false } }); + savedSearchContainer.update({ nextState: { hideChart: false } }); expect(savedSearchContainer.getHasChanged$().getValue()).toBe(true); - await savedSearchContainer.update({ nextState: { hideChart: true } }); + savedSearchContainer.update({ nextState: { hideChart: true } }); expect(savedSearchContainer.getHasChanged$().getValue()).toBe(false); }); it('updates a saved search by data view', async () => { const savedSearchContainer = getSavedSearchContainer({ services: discoverServiceMock, + globalStateContainer, }); - const updated = await savedSearchContainer.update({ nextDataView: dataViewMock }); + const updated = savedSearchContainer.update({ nextDataView: dataViewMock }); expect(savedSearchContainer.getHasChanged$().getValue()).toBe(true); savedSearchContainer.set(updated); expect(savedSearchContainer.getHasChanged$().getValue()).toBe(false); - await savedSearchContainer.update({ nextDataView: dataViewComplexMock }); + savedSearchContainer.update({ nextDataView: dataViewComplexMock }); expect(savedSearchContainer.getHasChanged$().getValue()).toBe(true); - await savedSearchContainer.update({ nextDataView: dataViewMock }); + savedSearchContainer.update({ nextDataView: dataViewMock }); expect(savedSearchContainer.getHasChanged$().getValue()).toBe(false); }); }); diff --git a/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts b/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts index cad0170cf874d..b47ddd10c4149 100644 --- a/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts +++ b/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts @@ -18,6 +18,7 @@ import { handleSourceColumnState } from '../../../utils/state_helpers'; import { DiscoverAppState } from './discover_app_state_container'; import { DiscoverServices } from '../../../build_services'; import { getStateDefaults } from '../utils/get_state_defaults'; +import type { DiscoverGlobalStateContainer } from './discover_global_state_container'; export interface UpdateParams { /** @@ -106,8 +107,10 @@ export interface DiscoverSavedSearchContainer { export function getSavedSearchContainer({ services, + globalStateContainer, }: { services: DiscoverServices; + globalStateContainer: DiscoverGlobalStateContainer; }): DiscoverSavedSearchContainer { const initialSavedSearch = services.savedSearch.getNew(); const savedSearchInitial$ = new BehaviorSubject(initialSavedSearch); @@ -137,6 +140,7 @@ export function getSavedSearchContainer({ savedSearch: { ...nextSavedSearch }, dataView, state: newAppState, + globalStateContainer, services, }); return set(nextSavedSearchToSet); @@ -144,7 +148,12 @@ export function getSavedSearchContainer({ const persist = async (nextSavedSearch: SavedSearch, saveOptions?: SavedObjectSaveOpts) => { addLog('[savedSearch] persist', { nextSavedSearch, saveOptions }); - updateSavedSearch({ savedSearch: nextSavedSearch, services }, true); + updateSavedSearch({ + savedSearch: nextSavedSearch, + globalStateContainer, + services, + useFilterAndQueryServices: true, + }); const id = await services.savedSearch.save(nextSavedSearch, saveOptions || {}); @@ -161,15 +170,14 @@ export function getSavedSearchContainer({ ? nextDataView : previousSavedSearch.searchSource.getField('index')!; - const nextSavedSearch = updateSavedSearch( - { - savedSearch: { ...previousSavedSearch }, - dataView, - state: nextState || {}, - services, - }, - useFilterAndQueryServices - ); + const nextSavedSearch = updateSavedSearch({ + savedSearch: { ...previousSavedSearch }, + dataView, + state: nextState || {}, + globalStateContainer, + services, + useFilterAndQueryServices, + }); const hasChanged = !isEqualSavedSearch(savedSearchInitial$.getValue(), nextSavedSearch); hasChanged$.next(hasChanged); diff --git a/src/plugins/discover/public/application/main/services/discover_state.ts b/src/plugins/discover/public/application/main/services/discover_state.ts index d670878e2f45e..79eea9eed9964 100644 --- a/src/plugins/discover/public/application/main/services/discover_state.ts +++ b/src/plugins/discover/public/application/main/services/discover_state.ts @@ -16,7 +16,6 @@ import { import { DataPublicPluginStart, noSearchSessionStorageCapabilityMessage, - QueryState, SearchSessionInfoProvider, } from '@kbn/data-plugin/public'; import { DataView, DataViewSpec, DataViewType } from '@kbn/data-views-plugin/public'; @@ -38,7 +37,6 @@ import { DiscoverAppState, DiscoverAppStateContainer, getDiscoverAppStateContainer, - GLOBAL_STATE_URL_KEY, } from './discover_app_state_container'; import { DiscoverInternalStateContainer, @@ -51,6 +49,7 @@ import { DiscoverSavedSearchContainer, } from './discover_saved_search_container'; import { updateFiltersReferences } from '../utils/update_filter_references'; +import { getDiscoverGlobalStateContainer } from './discover_global_state_container'; interface DiscoverStateContainerParams { /** * Browser history @@ -192,6 +191,7 @@ export function getDiscoverStateContainer({ }: DiscoverStateContainerParams): DiscoverStateContainer { const storeInSessionStorage = services.uiSettings.get('state:storeInSessionStorage'); const toasts = services.core.notifications.toasts; + /** * state storage for state in the URL */ @@ -208,11 +208,18 @@ export function getDiscoverStateContainer({ history, session: services.data.search.session, }); + + /** + * Global State Container, synced with the _g part URL + */ + const globalStateContainer = getDiscoverGlobalStateContainer(stateStorage); + /** * Saved Search State Container, the persisted saved object of Discover */ const savedSearchContainer = getSavedSearchContainer({ services, + globalStateContainer, }); /** @@ -223,6 +230,7 @@ export function getDiscoverStateContainer({ savedSearch: savedSearchContainer.getState(), services, }); + /** * Internal State Container, state that's not persisted and not part of the URL */ @@ -230,13 +238,12 @@ export function getDiscoverStateContainer({ const pauseAutoRefreshInterval = async (dataView: DataView) => { if (dataView && (!dataView.isTimeBased() || dataView.type === DataViewType.ROLLUP)) { - const state = stateStorage.get(GLOBAL_STATE_URL_KEY); + const state = globalStateContainer.get(); if (state?.refreshInterval && !state.refreshInterval.pause) { - await stateStorage.set( - GLOBAL_STATE_URL_KEY, - { ...state, refreshInterval: { ...state?.refreshInterval, pause: true } }, - { replace: true } - ); + await globalStateContainer.set({ + ...state, + refreshInterval: { ...state?.refreshInterval, pause: true }, + }); } } }; @@ -351,8 +358,8 @@ export function getDiscoverStateContainer({ const unsubscribeData = dataStateContainer.subscribe(); // updates saved search when query or filters change, triggers data fetching - const filterUnsubscribe = merge(services.filterManager.getFetches$()).subscribe(async () => { - await savedSearchContainer.update({ + const filterUnsubscribe = merge(services.filterManager.getFetches$()).subscribe(() => { + savedSearchContainer.update({ nextDataView: internalStateContainer.getState().dataView, nextState: appStateContainer.getState(), useFilterAndQueryServices: true, @@ -424,7 +431,7 @@ export function getDiscoverStateContainer({ const undoSavedSearchChanges = async () => { addLog('undoSavedSearchChanges'); const nextSavedSearch = savedSearchContainer.getInitial$().getValue(); - await savedSearchContainer.set(nextSavedSearch); + savedSearchContainer.set(nextSavedSearch); restoreStateFromSavedSearch({ savedSearch: nextSavedSearch, timefilter: services.timefilter, diff --git a/src/plugins/discover/public/application/main/utils/update_saved_search.test.ts b/src/plugins/discover/public/application/main/utils/update_saved_search.test.ts new file mode 100644 index 0000000000000..8c8d48cd9105b --- /dev/null +++ b/src/plugins/discover/public/application/main/utils/update_saved_search.test.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 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 { savedSearchMock } from '../../../__mocks__/saved_search'; +import { discoverServiceMock } from '../../../__mocks__/services'; +import { Filter, FilterStateStore, Query } from '@kbn/es-query'; +import { updateSavedSearch } from './update_saved_search'; + +describe('updateSavedSearch', () => { + const query: Query = { + query: 'extension:jpg', + language: 'kuery', + }; + const appFilter: Filter = { + meta: {}, + query: { + match_phrase: { + extension: { + query: 'jpg', + type: 'phrase', + }, + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + }; + const globalFilter: Filter = { + meta: {}, + query: { + match_phrase: { + extension: { + query: 'png', + type: 'phrase', + }, + }, + }, + $state: { + store: FilterStateStore.GLOBAL_STATE, + }, + }; + const createGlobalStateContainer = () => ({ + get: jest.fn(() => ({ filters: [globalFilter] })), + set: jest.fn(), + }); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should set query and filters from appState and globalState', async () => { + const savedSearch = { + ...savedSearchMock, + searchSource: savedSearchMock.searchSource.createCopy(), + }; + expect(savedSearch.searchSource.getField('query')).toBeUndefined(); + expect(savedSearch.searchSource.getField('filter')).toBeUndefined(); + updateSavedSearch({ + savedSearch, + globalStateContainer: createGlobalStateContainer(), + services: discoverServiceMock, + state: { + query, + filters: [appFilter], + }, + }); + expect(savedSearch.searchSource.getField('query')).toEqual(query); + expect(savedSearch.searchSource.getField('filter')).toEqual([appFilter, globalFilter]); + }); + + it('should set query and filters from services', async () => { + const savedSearch = { + ...savedSearchMock, + searchSource: savedSearchMock.searchSource.createCopy(), + }; + expect(savedSearch.searchSource.getField('query')).toBeUndefined(); + expect(savedSearch.searchSource.getField('filter')).toBeUndefined(); + jest + .spyOn(discoverServiceMock.data.query.filterManager, 'getFilters') + .mockReturnValue([appFilter, globalFilter]); + jest.spyOn(discoverServiceMock.data.query.queryString, 'getQuery').mockReturnValue(query); + updateSavedSearch({ + savedSearch, + globalStateContainer: createGlobalStateContainer(), + services: discoverServiceMock, + useFilterAndQueryServices: true, + }); + expect(savedSearch.searchSource.getField('query')).toEqual(query); + expect(savedSearch.searchSource.getField('filter')).toEqual([appFilter, globalFilter]); + }); +}); diff --git a/src/plugins/discover/public/application/main/utils/update_saved_search.ts b/src/plugins/discover/public/application/main/utils/update_saved_search.ts index 733bf5ed2a0b8..dc5e5307f5fe0 100644 --- a/src/plugins/discover/public/application/main/utils/update_saved_search.ts +++ b/src/plugins/discover/public/application/main/utils/update_saved_search.ts @@ -5,12 +5,13 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { SavedSearch, SortOrder } from '@kbn/saved-search-plugin/public'; -import { DataView } from '@kbn/data-views-plugin/common'; +import type { SavedSearch, SortOrder } from '@kbn/saved-search-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/common'; import { cloneDeep } from 'lodash'; import { isTextBasedQuery } from './is_text_based_query'; -import { DiscoverAppState } from '../services/discover_app_state_container'; -import { DiscoverServices } from '../../../build_services'; +import type { DiscoverAppState } from '../services/discover_app_state_container'; +import type { DiscoverServices } from '../../../build_services'; +import type { DiscoverGlobalStateContainer } from '../services/discover_global_state_container'; /** * Updates the saved search with a given data view & Appstate @@ -22,20 +23,21 @@ import { DiscoverServices } from '../../../build_services'; * @param services * @param useFilterAndQueryServices - when true data services are being used for updating filter + query */ -export function updateSavedSearch( - { - savedSearch, - dataView, - state, - services, - }: { - savedSearch: SavedSearch; - dataView?: DataView; - state?: DiscoverAppState; - services: DiscoverServices; - }, - useFilterAndQueryServices: boolean = false -) { +export function updateSavedSearch({ + savedSearch, + dataView, + state, + globalStateContainer, + services, + useFilterAndQueryServices = false, +}: { + savedSearch: SavedSearch; + dataView?: DataView; + state?: DiscoverAppState; + globalStateContainer: DiscoverGlobalStateContainer; + services: DiscoverServices; + useFilterAndQueryServices?: boolean; +}) { if (dataView) { savedSearch.searchSource.setField('index', dataView); savedSearch.usesAdHocDataView = !dataView.isPersisted(); @@ -45,9 +47,12 @@ export function updateSavedSearch( .setField('query', services.data.query.queryString.getQuery()) .setField('filter', services.data.query.filterManager.getFilters()); } else if (state) { + const appFilters = state.filters ? cloneDeep(state.filters) : []; + const globalFilters = globalStateContainer.get()?.filters ?? []; + savedSearch.searchSource .setField('query', state.query ?? undefined) - .setField('filter', state.filters ? cloneDeep(state.filters) : []); + .setField('filter', [...appFilters, ...globalFilters]); } if (state) { savedSearch.columns = state.columns || []; diff --git a/test/functional/apps/discover/group1/_filter_editor.ts b/test/functional/apps/discover/group1/_filter_editor.ts index 1f212a5dd8d63..fdc21921833f4 100644 --- a/test/functional/apps/discover/group1/_filter_editor.ts +++ b/test/functional/apps/discover/group1/_filter_editor.ts @@ -17,7 +17,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); const filterBar = getService('filterBar'); const security = getService('security'); - const PageObjects = getPageObjects(['common', 'discover', 'timePicker']); + const browser = getService('browser'); + const dataGrid = getService('dataGrid'); + const PageObjects = getPageObjects(['common', 'discover', 'timePicker', 'unifiedFieldList']); const defaultSettings = { defaultIndex: 'logstash-*', }; @@ -124,6 +126,45 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); }); + + const runFilterTest = async (pinned = false) => { + await filterBar.removeAllFilters(); + await PageObjects.unifiedFieldList.clickFieldListItemAdd('extension'); + await retry.try(async function () { + const cell = await dataGrid.getCellElement(0, 3); + expect(await cell.getVisibleText()).to.be('jpg'); + expect(await PageObjects.discover.getHitCount()).to.be('14,004'); + }); + await filterBar.addFilter({ + field: 'extension.raw', + operation: 'is', + value: 'css', + }); + if (pinned) { + await filterBar.toggleFilterPinned('extension.raw'); + } + await retry.try(async function () { + expect(await filterBar.hasFilter('extension.raw', 'css', true, pinned)).to.be(true); + const cell = await dataGrid.getCellElement(0, 3); + expect(await cell.getVisibleText()).to.be('css'); + expect(await PageObjects.discover.getHitCount()).to.be('2,159'); + }); + await browser.refresh(); + await retry.try(async function () { + expect(await filterBar.hasFilter('extension.raw', 'css', true, pinned)).to.be(true); + expect(await PageObjects.discover.getHitCount()).to.be('2,159'); + const cell = await dataGrid.getCellElement(0, 3); + expect(await cell.getVisibleText()).to.be('css'); + }); + }; + + it('should support app filters in histogram/total hits and data grid', async function () { + await runFilterTest(); + }); + + it('should support pinned filters in histogram/total hits and data grid', async function () { + await runFilterTest(true); + }); }); after(async () => { From 6310e8c6fd091a030e675dba50098d32fd36e4fd Mon Sep 17 00:00:00 2001 From: Davis McPhee Date: Thu, 29 Jun 2023 11:52:51 -0300 Subject: [PATCH 13/41] [Data Views] Fix flaky test #156129 (#160472) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves: #156129. Flaky test runs: - x100: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/2472 🟥 - x100: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/2487 ✅ --- .../has_user_index_pattern.ts | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/test/api_integration/apis/data_views/has_user_index_pattern/has_user_index_pattern.ts b/test/api_integration/apis/data_views/has_user_index_pattern/has_user_index_pattern.ts index 18bd36c1e6258..cad10b122a927 100644 --- a/test/api_integration/apis/data_views/has_user_index_pattern/has_user_index_pattern.ts +++ b/test/api_integration/apis/data_views/has_user_index_pattern/has_user_index_pattern.ts @@ -6,6 +6,11 @@ * Side Public License, v 1. */ +import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; +import { + INITIAL_REST_VERSION, + INITIAL_REST_VERSION_INTERNAL, +} from '@kbn/data-views-plugin/server/constants'; import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; import { configArray } from '../constants'; @@ -15,8 +20,7 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const es = getService('es'); - // FLAKY: https://github.com/elastic/kibana/issues/156129 - describe.skip('has user index pattern API', () => { + describe('has user index pattern API', () => { configArray.forEach((config) => { describe(config.name, () => { beforeEach(async () => { @@ -33,7 +37,11 @@ export default function ({ getService }: FtrProviderContext) { const servicePath = `${config.basePath}/has_user_${config.serviceKey}`; it('should return false if no index patterns', async () => { - const response = await supertest.get(servicePath); + // Make sure all saved objects including data views are cleared + await esArchiver.emptyKibanaIndex(); + const response = await supertest + .get(servicePath) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_REST_VERSION_INTERNAL); expect(response.status).to.be(200); expect(response.body.result).to.be(false); }); @@ -42,14 +50,19 @@ export default function ({ getService }: FtrProviderContext) { await esArchiver.load( 'test/api_integration/fixtures/es_archiver/index_patterns/basic_index' ); - await supertest.post(config.path).send({ - override: true, - [config.serviceKey]: { - title: 'basic_index', - }, - }); + await supertest + .post(config.path) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_REST_VERSION) + .send({ + override: true, + [config.serviceKey]: { + title: 'basic_index', + }, + }); - const response = await supertest.get(servicePath); + const response = await supertest + .get(servicePath) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_REST_VERSION_INTERNAL); expect(response.status).to.be(200); expect(response.body.result).to.be(true); @@ -59,15 +72,20 @@ export default function ({ getService }: FtrProviderContext) { }); it('should return true if has user index pattern without data', async () => { - await supertest.post(config.path).send({ - override: true, - [config.serviceKey]: { - title: 'basic_index', - allowNoIndex: true, - }, - }); + await supertest + .post(config.path) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_REST_VERSION) + .send({ + override: true, + [config.serviceKey]: { + title: 'basic_index', + allowNoIndex: true, + }, + }); - const response = await supertest.get(servicePath); + const response = await supertest + .get(servicePath) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_REST_VERSION_INTERNAL); expect(response.status).to.be(200); expect(response.body.result).to.be(true); }); From 35f115ded0eea75b7e0dc7b57b045d5b43c876e8 Mon Sep 17 00:00:00 2001 From: Brandon Morelli Date: Thu, 29 Jun 2023 08:03:26 -0700 Subject: [PATCH 14/41] [APM] Update agent explorer text (#160823) ### Summary While working on https://github.com/elastic/observability-docs/issues/2886, I noticed that Agent Explorer is now in Beta. The UI is currently confusing because it shows both "Technical Preview" and "Beta" for this feature: Screenshot 2023-06-28 at 3 02 42 PM It looks like https://github.com/elastic/kibana/pull/156470 missed updating the text. --- .../apm/public/components/app/settings/agent_explorer/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/apm/public/components/app/settings/agent_explorer/index.tsx b/x-pack/plugins/apm/public/components/app/settings/agent_explorer/index.tsx index 318457537f5d9..6e70edf641b8a 100644 --- a/x-pack/plugins/apm/public/components/app/settings/agent_explorer/index.tsx +++ b/x-pack/plugins/apm/public/components/app/settings/agent_explorer/index.tsx @@ -163,7 +163,7 @@ export function AgentExplorer() { {i18n.translate('xpack.apm.settings.agentExplorer.descriptionText', { defaultMessage: - 'Agent Explorer Technical Preview provides an inventory and details of deployed Agents.', + 'Agent Explorer provides an inventory and details of deployed Agents.', })} From bf13430a83be3d1427b851295271e021ffe535ac Mon Sep 17 00:00:00 2001 From: Shahzad Date: Thu, 29 Jun 2023 17:36:52 +0200 Subject: [PATCH 15/41] [Synthetics] Schedule test now run for getting started monitor (#160839) --- .../common/types/synthetics_monitor.ts | 14 +--- .../getting_started/use_simple_monitor.ts | 4 +- .../test_now_mode/test_now_mode_flyout.tsx | 4 +- .../state/manual_test_runs/index.ts | 4 +- .../apps/synthetics/state/monitor_list/api.ts | 6 +- .../synthetics/state/monitor_list/index.ts | 2 +- .../default_alerts/enable_default_alert.ts | 17 +--- .../routes/monitor_cruds/add_monitor.ts | 51 +++++++---- .../synthetics_service/test_now_monitor.ts | 84 ++++++++++--------- 9 files changed, 94 insertions(+), 92 deletions(-) diff --git a/x-pack/plugins/synthetics/common/types/synthetics_monitor.ts b/x-pack/plugins/synthetics/common/types/synthetics_monitor.ts index 29afd67b7f6bb..65d466a5ab2f8 100644 --- a/x-pack/plugins/synthetics/common/types/synthetics_monitor.ts +++ b/x-pack/plugins/synthetics/common/types/synthetics_monitor.ts @@ -5,28 +5,18 @@ * 2.0. */ -import type { SimpleSavedObject } from '@kbn/core/public'; import { - Locations, MonitorFields, ServiceLocationErrors, SyntheticsMonitor, SyntheticsMonitorSchedule, } from '../runtime_types'; -export interface MonitorIdParam { - monitorId: string; -} - -export type DecryptedSyntheticsMonitorSavedObject = SimpleSavedObject & { - updated_at: string; -}; - export interface TestNowResponse { schedule: SyntheticsMonitorSchedule; - locations: Locations; + locations: MonitorFields['locations']; errors?: ServiceLocationErrors; testRunId: string; configId: string; - monitor: MonitorFields; + monitor: SyntheticsMonitor; } diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts index a0a50cb88fdb3..92488a8adbd66 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts @@ -12,7 +12,7 @@ import { useDispatch, useSelector } from 'react-redux'; import { useSyntheticsRefreshContext } from '../../contexts'; import { cleanMonitorListState, selectServiceLocationsState } from '../../state'; import { showSyncErrors } from '../monitors_page/management/show_sync_errors'; -import { fetchCreateMonitor } from '../../state'; +import { createGettingStartedMonitor } from '../../state'; import { DEFAULT_FIELDS } from '../../../../../common/constants/monitor_defaults'; import { ConfigKey } from '../../../../../common/constants/monitor_management'; import { @@ -41,7 +41,7 @@ export const useSimpleMonitor = ({ monitorData }: { monitorData?: SimpleFormData } const { urls, locations } = monitorData; - return fetchCreateMonitor({ + return createGettingStartedMonitor({ monitor: { ...DEFAULT_FIELDS.browser, 'source.inline.script': `step('Go to ${urls}', async () => { diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx index cfb9348954624..57806ba4fdbe0 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx @@ -20,13 +20,13 @@ import { } from '@elastic/eui'; import { LoadingState } from '../monitors_page/overview/overview/monitor_detail_flyout'; -import { MonitorFields, ServiceLocationErrors } from '../../../../../common/runtime_types'; +import { ServiceLocationErrors, SyntheticsMonitor } from '../../../../../common/runtime_types'; import { TestNowMode } from './test_now_mode'; export interface TestRun { id: string; name: string; - monitor: MonitorFields; + monitor: SyntheticsMonitor; } export function TestNowModeFlyout({ diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts index 936efc6ada6ca..73f6ec9f76a22 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts @@ -19,7 +19,7 @@ import { toggleTestNowFlyoutAction, } from './actions'; import { - Locations, + MonitorFields, ScheduleUnit, ServiceLocationErrors, SyntheticsMonitorSchedule, @@ -40,7 +40,7 @@ export interface ManualTestRun { testRunId?: string; status: TestRunStatus; schedule: SyntheticsMonitorSchedule; - locations: Locations; + locations: MonitorFields['locations']; errors?: ServiceLocationErrors; fetchError?: { name: string; message: string }; isTestNowFlyoutOpen: boolean; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts index 1f1eb7dd74976..47737966a5a12 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts @@ -71,12 +71,14 @@ export const fetchUpsertMonitor = async ({ } }; -export const fetchCreateMonitor = async ({ +export const createGettingStartedMonitor = async ({ monitor, }: { monitor: SyntheticsMonitor | EncryptedSyntheticsMonitor; }): Promise<{ attributes: { errors: ServiceLocationErrors } } | SyntheticsMonitor> => { - return await apiService.post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS, monitor); + return await apiService.post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS, monitor, undefined, { + gettingStarted: true, + }); }; export const fetchMonitorFilters = async (): Promise => { diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts index 4041df5a3862f..8865439e0dcc4 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts @@ -137,4 +137,4 @@ export * from './actions'; export * from './effects'; export * from './selectors'; export * from './helpers'; -export { fetchDeleteMonitor, fetchUpsertMonitor, fetchCreateMonitor } from './api'; +export { fetchDeleteMonitor, fetchUpsertMonitor, createGettingStartedMonitor } from './api'; diff --git a/x-pack/plugins/synthetics/server/routes/default_alerts/enable_default_alert.ts b/x-pack/plugins/synthetics/server/routes/default_alerts/enable_default_alert.ts index f27abba13e822..49481a4347a1d 100644 --- a/x-pack/plugins/synthetics/server/routes/default_alerts/enable_default_alert.ts +++ b/x-pack/plugins/synthetics/server/routes/default_alerts/enable_default_alert.ts @@ -17,21 +17,6 @@ export const enableDefaultAlertingRoute: SyntheticsRestApiRouteFactory = () => ( handler: async ({ context, server, savedObjectsClient }): Promise => { const defaultAlertService = new DefaultAlertService(context, server, savedObjectsClient); - const [statusRule, tlsRule] = await Promise.allSettled([ - defaultAlertService.setupStatusRule(), - defaultAlertService.setupTlsRule(), - ]); - - if (statusRule.status === 'rejected') { - throw statusRule.reason; - } - if (tlsRule.status === 'rejected') { - throw tlsRule.reason; - } - - return { - statusRule: statusRule.status === 'fulfilled' ? statusRule.value : null, - tlsRule: tlsRule.status === 'fulfilled' ? tlsRule.value : null, - }; + return defaultAlertService.setupDefaultAlerts(); }, }); diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts index fac69c862db26..8ff63923aba16 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts @@ -15,6 +15,7 @@ import { import { isValidNamespace } from '@kbn/fleet-plugin/common'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; import { DefaultAlertService } from '../default_alerts/default_alert_service'; +import { triggerTestNow } from '../synthetics_service/test_now_monitor'; import { SyntheticsServerSetup } from '../../types'; import { RouteContext, SyntheticsRestApiRouteFactory } from '../types'; import { syntheticsMonitorType } from '../../../common/types/saved_objects'; @@ -45,11 +46,12 @@ export const addSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () => ({ query: schema.object({ id: schema.maybe(schema.string()), preserve_namespace: schema.maybe(schema.boolean()), + gettingStarted: schema.maybe(schema.boolean()), }), }, writeAccess: true, handler: async (routeContext): Promise => { - const { context, request, response, savedObjectsClient, server } = routeContext; + const { request, response, savedObjectsClient, server } = routeContext; // usually id is auto generated, but this is useful for testing const { id } = request.query; @@ -91,20 +93,8 @@ export const addSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () => ({ }, }); } - - try { - // we do this async, so we don't block the user, error handling will be done on the UI via separate api - const defaultAlertService = new DefaultAlertService(context, server, savedObjectsClient); - defaultAlertService.setupDefaultAlerts().then(() => { - server.logger.debug( - `Successfully created default alert for monitor: ${newMonitor.attributes.name}` - ); - }); - } catch (e) { - server.logger.error( - `Error creating default alert: ${e} for monitor: ${newMonitor.attributes.name}` - ); - } + initDefaultAlerts(newMonitor.attributes.name, routeContext); + setupGettingStarted(newMonitor.id, routeContext); return response.ok({ body: newMonitor }); } catch (getErr) { @@ -304,3 +294,34 @@ export const getMonitorNamespace = ( } return namespace; }; + +const initDefaultAlerts = (name: string, routeContext: RouteContext) => { + const { server, savedObjectsClient, context } = routeContext; + try { + // we do this async, so we don't block the user, error handling will be done on the UI via separate api + const defaultAlertService = new DefaultAlertService(context, server, savedObjectsClient); + defaultAlertService.setupDefaultAlerts().then(() => { + server.logger.debug(`Successfully created default alert for monitor: ${name}`); + }); + } catch (e) { + server.logger.error(`Error creating default alert: ${e} for monitor: ${name}`); + } +}; + +const setupGettingStarted = (configId: string, routeContext: RouteContext) => { + const { server, request } = routeContext; + + try { + const { gettingStarted } = request.query; + + if (gettingStarted) { + // ignore await, since we don't want to block the response + triggerTestNow(configId, routeContext).then(() => { + server.logger.debug(`Successfully triggered test for monitor: ${configId}`); + }); + } + } catch (e) { + server.logger.info(`Error triggering test for getting started monitor: ${configId}`); + server.logger.error(e); + } +}; diff --git a/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts b/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts index 0300c81ed3e8f..22fc903055eba 100644 --- a/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts +++ b/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts @@ -6,8 +6,7 @@ */ import { schema } from '@kbn/config-schema'; import { v4 as uuidv4 } from 'uuid'; -import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; -import { SyntheticsRestApiRouteFactory } from '../types'; +import { RouteContext, SyntheticsRestApiRouteFactory } from '../types'; import { syntheticsMonitorType } from '../../../common/types/saved_objects'; import { TestNowResponse } from '../../../common/types'; import { @@ -18,7 +17,7 @@ import { import { SYNTHETICS_API_URLS } from '../../../common/constants'; import { normalizeSecrets } from '../../synthetics_service/utils/secrets'; -export const testNowMonitorRoute: SyntheticsRestApiRouteFactory = () => ({ +export const testNowMonitorRoute: SyntheticsRestApiRouteFactory = () => ({ method: 'GET', path: SYNTHETICS_API_URLS.TRIGGER_MONITOR + '/{monitorId}', validate: { @@ -26,54 +25,59 @@ export const testNowMonitorRoute: SyntheticsRestApiRouteFactory = () => ({ monitorId: schema.string({ minLength: 1, maxLength: 1024 }), }), }, - handler: async ({ request, server, syntheticsMonitorClient }): Promise => { - const { monitorId } = request.params; - const encryptedClient = server.encryptedSavedObjects.getClient(); - - const monitorWithSecrets = - await encryptedClient.getDecryptedAsInternalUser( - syntheticsMonitorType, - monitorId - ); - const normalizedMonitor = normalizeSecrets(monitorWithSecrets); + handler: async (routeContext) => { + const { monitorId } = routeContext.request.params; + return triggerTestNow(monitorId, routeContext); + }, +}); - const { [ConfigKey.SCHEDULE]: schedule, [ConfigKey.LOCATIONS]: locations } = - monitorWithSecrets.attributes; +export const triggerTestNow = async ( + monitorId: string, + { server, spaceId, syntheticsMonitorClient }: RouteContext +): Promise => { + const encryptedClient = server.encryptedSavedObjects.getClient(); - const { syntheticsService } = syntheticsMonitorClient; + const monitorWithSecrets = + await encryptedClient.getDecryptedAsInternalUser( + syntheticsMonitorType, + monitorId + ); + const normalizedMonitor = normalizeSecrets(monitorWithSecrets); - const testRunId = uuidv4(); + const { [ConfigKey.SCHEDULE]: schedule, [ConfigKey.LOCATIONS]: locations } = + monitorWithSecrets.attributes; - const spaceId = server.spaces?.spacesService.getSpaceId(request) ?? DEFAULT_SPACE_ID; + const { syntheticsService } = syntheticsMonitorClient; - const paramsBySpace = await syntheticsService.getSyntheticsParams({ spaceId }); + const testRunId = uuidv4(); - const errors = await syntheticsService.runOnceConfigs({ - // making it enabled, even if it's disabled in the UI - monitor: { ...normalizedMonitor.attributes, enabled: true }, - configId: monitorId, - heartbeatId: (normalizedMonitor.attributes as MonitorFields)[ConfigKey.MONITOR_QUERY_ID], - testRunId, - params: paramsBySpace[spaceId], - }); + const paramsBySpace = await syntheticsService.getSyntheticsParams({ spaceId }); - if (errors && errors?.length > 0) { - return { - errors, - testRunId, - schedule, - locations, - configId: monitorId, - monitor: normalizedMonitor.attributes, - } as TestNowResponse; - } + const errors = await syntheticsService.runOnceConfigs({ + // making it enabled, even if it's disabled in the UI + monitor: { ...normalizedMonitor.attributes, enabled: true }, + configId: monitorId, + heartbeatId: (normalizedMonitor.attributes as MonitorFields)[ConfigKey.MONITOR_QUERY_ID], + testRunId, + params: paramsBySpace[spaceId], + }); + if (errors && errors?.length > 0) { return { + errors, testRunId, schedule, locations, configId: monitorId, monitor: normalizedMonitor.attributes, - } as TestNowResponse; - }, -}); + }; + } + + return { + testRunId, + schedule, + locations, + configId: monitorId, + monitor: normalizedMonitor.attributes, + }; +}; From 3d0a4ba1d36b06b16c3351cf4478a17b3ff26bdd Mon Sep 17 00:00:00 2001 From: Shahzad Date: Thu, 29 Jun 2023 17:39:06 +0200 Subject: [PATCH 16/41] [Synthetics] Fix certs query for empty space with no monitors (#160901) --- .../synthetics/server/routes/certs/get_certificates.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/x-pack/plugins/synthetics/server/routes/certs/get_certificates.ts b/x-pack/plugins/synthetics/server/routes/certs/get_certificates.ts index 0054e4cf9d73b..982d9f60f90ff 100644 --- a/x-pack/plugins/synthetics/server/routes/certs/get_certificates.ts +++ b/x-pack/plugins/synthetics/server/routes/certs/get_certificates.ts @@ -48,6 +48,15 @@ export const getSyntheticsCertsRoute: SyntheticsRestApiRouteFactory< filter: `${monitorAttributes}.${AlertConfigKey.STATUS_ENABLED}: true`, }); + if (monitors.length === 0) { + return { + data: { + certs: [], + total: 0, + }, + }; + } + const { enabledMonitorQueryIds } = await processMonitors( monitors, server, From 8a1902c66eb1c5748a2300fd2e00f0a7b1bc5c76 Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Thu, 29 Jun 2023 08:41:58 -0700 Subject: [PATCH 17/41] [OAS] Add default spaces to case paths (#160831) --- .../cases/case-apis-passthru.asciidoc | 2843 ++++++++++++++--- .../plugins/cases/docs/openapi/bundled.json | 2554 +++++++++++++-- .../plugins/cases/docs/openapi/bundled.yaml | 1609 ++++++++-- .../components/parameters/assignees.yaml | 12 + .../components/parameters/category.yaml | 11 + .../parameters/defaultSearchOperator.yaml | 7 + .../openapi/components/parameters/from.yaml | 10 + .../openapi/components/parameters/ids.yaml | 12 + .../parameters/includeComments.yaml | 7 + .../components/parameters/reporters.yaml | 10 + .../openapi/components/parameters/search.yaml | 5 + .../components/parameters/searchFields.yaml | 9 + ...arch_fields.yaml => searchFieldsType.yaml} | 0 .../components/parameters/sortField.yaml | 10 + .../openapi/components/parameters/status.yaml | 10 + .../openapi/components/parameters/tags.yaml | 10 + .../openapi/components/parameters/to.yaml | 10 + .../parameters/user_action_types.yaml | 24 + .../set_case_configuration_request.yaml | 32 + .../update_case_configuration_request.yaml | 24 + .../cases/docs/openapi/entrypoint.yaml | 34 + .../cases/docs/openapi/paths/api@cases.yaml | 106 + .../docs/openapi/paths/api@cases@_find.yaml | 63 + .../paths/api@cases@alerts@{alertid}.yaml | 42 + .../openapi/paths/api@cases@configure.yaml | 74 + .../api@cases@configure@connectors@_find.yaml | 33 + ...api@cases@configure@{configurationid}.yaml | 39 + .../openapi/paths/api@cases@reporters.yaml | 35 + .../docs/openapi/paths/api@cases@status.yaml | 40 + .../docs/openapi/paths/api@cases@tags.yaml | 31 + .../openapi/paths/api@cases@{caseid}.yaml | 32 + .../paths/api@cases@{caseid}@alerts.yaml | 34 + .../paths/api@cases@{caseid}@comments.yaml | 138 + ...i@cases@{caseid}@comments@{commentid}.yaml | 59 + ...caseid}@connector@{connectorid}@_push.yaml | 38 + .../api@cases@{caseid}@user_actions.yaml | 35 + ...api@cases@{caseid}@user_actions@_find.yaml | 46 + .../openapi/paths/s@{spaceid}@api@cases.yaml | 8 +- .../paths/s@{spaceid}@api@cases@_find.yaml | 115 +- .../s@{spaceid}@api@cases@configure.yaml | 31 +- ...api@cases@configure@{configurationid}.yaml | 23 +- .../paths/s@{spaceid}@api@cases@tags.yaml | 10 +- .../paths/s@{spaceid}@api@cases@{caseid}.yaml | 10 +- ...api@cases@{caseid}@user_actions@_find.yaml | 25 +- 44 files changed, 7069 insertions(+), 1241 deletions(-) create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/assignees.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/category.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/defaultSearchOperator.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/from.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/ids.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/includeComments.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/reporters.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/search.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/searchFields.yaml rename x-pack/plugins/cases/docs/openapi/components/parameters/{search_fields.yaml => searchFieldsType.yaml} (100%) create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/sortField.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/status.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/tags.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/to.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/user_action_types.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/schemas/set_case_configuration_request.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/schemas/update_case_configuration_request.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@_find.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@alerts@{alertid}.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@configure.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@configure@connectors@_find.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@configure@{configurationid}.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@reporters.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@status.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@tags.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@alerts.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@comments.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@comments@{commentid}.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@user_actions.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@user_actions@_find.yaml diff --git a/docs/api-generated/cases/case-apis-passthru.asciidoc b/docs/api-generated/cases/case-apis-passthru.asciidoc index f007882af237c..f35863d23eb88 100644 --- a/docs/api-generated/cases/case-apis-passthru.asciidoc +++ b/docs/api-generated/cases/case-apis-passthru.asciidoc @@ -19,29 +19,52 @@ Any modifications made to this file will be overwritten.

Cases

Cases

@@ -85,6 +108,126 @@ Any modifications made to this file will be overwritten. +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "owner" : "cases",
+  "totalComment" : 0,
+  "settings" : {
+    "syncAlerts" : true
+  },
+  "totalAlerts" : 0,
+  "closed_at" : "2000-01-23T04:56:07.000+00:00",
+  "comments" : [ null, null ],
+  "assignees" : [ {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  }, {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  } ],
+  "created_at" : "2022-05-13T09:16:17.416Z",
+  "description" : "A case description.",
+  "title" : "Case title 1",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzUzMiwxXQ==",
+  "closed_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "tags" : [ "tag-1" ],
+  "duration" : 120,
+  "updated_at" : "2000-01-23T04:56:07.000+00:00",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
+  "external_service" : {
+    "external_title" : "external_title",
+    "pushed_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "external_url" : "external_url",
+    "pushed_at" : "2000-01-23T04:56:07.000+00:00",
+    "connector_id" : "connector_id",
+    "external_id" : "external_id",
+    "connector_name" : "connector_name"
+  }
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + case_response_properties +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
post /api/cases/{caseId}/comments
+
Adds a comment or alert to a case in the default space. (addCaseCommentDefaultSpace)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're creating. NOTE: Each case can have a maximum of 1,000 alerts.
+ +

Path parameters

+
+
caseId (required)
+ +
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
+
+ +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ +

Request body

+
+
add_case_comment_request add_case_comment_request (required)
+ +
Body Parameter
+ +
+ +

Request headers

+
+
kbn-xsrf (required)
+ +
Header Parameter — Cross-site request forgery protection default: null
+ +
+ + +

Return type

case_response_properties @@ -205,6 +348,120 @@ Any modifications made to this file will be overwritten. +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "owner" : "cases",
+  "totalComment" : 0,
+  "settings" : {
+    "syncAlerts" : true
+  },
+  "totalAlerts" : 0,
+  "closed_at" : "2000-01-23T04:56:07.000+00:00",
+  "comments" : [ null, null ],
+  "assignees" : [ {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  }, {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  } ],
+  "created_at" : "2022-05-13T09:16:17.416Z",
+  "description" : "A case description.",
+  "title" : "Case title 1",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzUzMiwxXQ==",
+  "closed_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "tags" : [ "tag-1" ],
+  "duration" : 120,
+  "updated_at" : "2000-01-23T04:56:07.000+00:00",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
+  "external_service" : {
+    "external_title" : "external_title",
+    "pushed_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "external_url" : "external_url",
+    "pushed_at" : "2000-01-23T04:56:07.000+00:00",
+    "connector_id" : "connector_id",
+    "external_id" : "external_id",
+    "connector_name" : "connector_name"
+  }
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + case_response_properties +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
post /api/cases
+
Creates a case in the default space. (createCaseDefaultSpace)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're creating.
+ + +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ +

Request body

+
+
create_case_request create_case_request (required)
+ +
Body Parameter
+ +
+ +

Request headers

+
+
kbn-xsrf (required)
+ +
Header Parameter — Cross-site request forgery protection default: null
+ +
+ + +

Return type

case_response_properties @@ -389,20 +646,20 @@ Any modifications made to this file will be overwritten. 4xx_response

-
+
Up -
delete /s/{spaceId}/api/cases/{caseId}/comments
-
Deletes all comments and alerts from a case. (deleteCaseComments)
+
delete /api/cases/{caseId}/comments/{commentId}
+
Deletes a comment or alert from a case in the default space. (deleteCaseCommentDefaultSpace)
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're deleting.

Path parameters

caseId (required)
-
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
spaceId (required)
+
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
commentId (required)
-
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
Path Parameter — The identifier for the comment. To retrieve comment IDs, use the get case or find cases APIs. default: null
@@ -437,12 +694,12 @@ Any modifications made to this file will be overwritten. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/{caseId}/user_actions/_find
-
Finds user activity for a case. (findCaseActivity)
-
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're seeking.
+
delete /s/{spaceId}/api/cases/{caseId}/comments
+
Deletes all comments and alerts from a case. (deleteCaseComments)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're deleting.

Path parameters

@@ -455,25 +712,257 @@ Any modifications made to this file will be overwritten. - -

Query parameters

+

Request headers

-
page (optional)
+
kbn-xsrf (required)
-
Query Parameter — The page number to return. default: 1
perPage (optional)
+
Header Parameter — Cross-site request forgery protection default: null
-
Query Parameter — The number of items to return. default: 20
sortOrder (optional)
+
-
Query Parameter — Determines the sort order. default: desc
types (optional)
-
Query Parameter — Determines the types of user actions to return. default: null
-
-

Return type

-
- findCaseActivity_200_response - + + + +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

204

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
delete /api/cases/{caseId}/comments
+
Deletes all comments and alerts from a case in the default space. (deleteCaseCommentsDefaultSpace)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're deleting.
+ +

Path parameters

+
+
caseId (required)
+ +
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
+
+ + + +

Request headers

+
+
kbn-xsrf (required)
+ +
Header Parameter — Cross-site request forgery protection default: null
+ +
+ + + + + + + +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

204

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
delete /api/cases
+
Deletes one or more cases in the default space. (deleteCaseDefaultSpace)
+
You must have read or all privileges and the delete sub-feature privilege for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're deleting.
+ + + + +

Request headers

+
+
kbn-xsrf (required)
+ +
Header Parameter — Cross-site request forgery protection default: null
+ +
+ +

Query parameters

+
+
ids (required)
+ +
Query Parameter — The cases that you want to removed. All non-ASCII characters must be URL encoded. default: null
+
+ + + + + + +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

204

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /s/{spaceId}/api/cases/{caseId}/user_actions/_find
+
Finds user activity for a case. (findCaseActivity)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're seeking.
+ +

Path parameters

+
+
caseId (required)
+ +
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
spaceId (required)
+ +
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
+ + + + +

Query parameters

+
+
page (optional)
+ +
Query Parameter — The page number to return. default: 1
perPage (optional)
+ +
Query Parameter — The number of items to return. default: 20
sortOrder (optional)
+ +
Query Parameter — Determines the sort order. default: desc
types (optional)
+ +
Query Parameter — Determines the types of user actions to return. default: null
+
+ + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "userActions" : [ {
+    "owner" : "cases",
+    "action" : "create",
+    "created_at" : "2022-05-13T09:16:17.416Z",
+    "id" : "22fd3e30-03b1-11ed-920c-974bfa104448",
+    "comment_id" : "578608d0-03b1-11ed-920c-974bfa104448",
+    "type" : "create_case",
+    "created_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "version" : "WzM1ODg4LDFd"
+  }, {
+    "owner" : "cases",
+    "action" : "create",
+    "created_at" : "2022-05-13T09:16:17.416Z",
+    "id" : "22fd3e30-03b1-11ed-920c-974bfa104448",
+    "comment_id" : "578608d0-03b1-11ed-920c-974bfa104448",
+    "type" : "create_case",
+    "created_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "version" : "WzM1ODg4LDFd"
+  } ],
+  "total" : 1,
+  "perPage" : 6,
+  "page" : 0
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + findCaseActivityDefaultSpace_200_response +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /api/cases/{caseId}/user_actions/_find
+
Finds user activity for a case in the default space. (findCaseActivityDefaultSpace)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're seeking.
+ +

Path parameters

+
+
caseId (required)
+ +
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
+
+ + + + +

Query parameters

+
+
page (optional)
+ +
Query Parameter — The page number to return. default: 1
perPage (optional)
+ +
Query Parameter — The number of items to return. default: 20
sortOrder (optional)
+ +
Query Parameter — Determines the sort order. default: desc
types (optional)
+ +
Query Parameter — Determines the types of user actions to return. default: null
+
+ + +

Return type

+ @@ -525,7 +1014,7 @@ Any modifications made to this file will be overwritten.

Responses

200

Indicates a successful call. - findCaseActivity_200_response + findCaseActivityDefaultSpace_200_response

401

Authorization information is missing or invalid. 4xx_response @@ -665,7 +1154,7 @@ Any modifications made to this file will be overwritten.

Return type

@@ -703,42 +1192,288 @@ Any modifications made to this file will be overwritten. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/_find
-
Retrieves a paginated subset of cases. (findCases)
-
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
- -

Path parameters

-
-
spaceId (required)
- -
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
-
- - - - -

Query parameters

-
-
assignees (optional)
+
get /api/cases/configure/connectors/_find
+
Retrieves information about connectors in the default space. (findCaseConnectorsDefaultSpace)
+
In particular, only the connectors that are supported for use in cases are returned. You must have read privileges for the Actions and Connectors feature in the Management section of the Kibana feature privileges.
-
Query Parameter — Filters the returned cases by assignees. Valid values are none or unique identifiers for the user profiles. These identifiers can be found by using the suggest user profile API. default: null
category (optional)
-
Query Parameter — Filters the returned cases by category. Limited to 100 categories. default: null
defaultSearchOperator (optional)
-
Query Parameter — The default operator to use for the simple_query_string. default: OR
from (optional)
-
Query Parameter — [preview] Returns only cases that were created after a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. default: null
owner (optional)
-
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
page (optional)
-
Query Parameter — The page number to return. default: 1
perPage (optional)
-
Query Parameter — The number of items to return. default: 20
reporters (optional)
+

Return type

+ -
Query Parameter — Filters the returned cases by the user name of the reporter. default: null
search (optional)
+ + +

Example data

+
Content-Type: application/json
+
{
+  "isPreconfigured" : true,
+  "isDeprecated" : true,
+  "actionTypeId" : ".none",
+  "referencedByCount" : 0,
+  "name" : "name",
+  "id" : "id",
+  "config" : {
+    "projectKey" : "projectKey",
+    "apiUrl" : "apiUrl"
+  },
+  "isMissingSecrets" : true
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /s/{spaceId}/api/cases/_find
+
Retrieves a paginated subset of cases. (findCases)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+ +

Path parameters

+
+
spaceId (required)
+ +
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
+ + + + +

Query parameters

+
+
assignees (optional)
+ +
Query Parameter — Filters the returned cases by assignees. Valid values are none or unique identifiers for the user profiles. These identifiers can be found by using the suggest user profile API. default: null
category (optional)
+ +
Query Parameter — Filters the returned cases by category. default: null
defaultSearchOperator (optional)
+ +
Query Parameter — he default operator to use for the simple_query_string. default: OR
from (optional)
+ +
Query Parameter — [preview] Returns only cases that were created after a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. default: null
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
page (optional)
+ +
Query Parameter — The page number to return. default: 1
perPage (optional)
+ +
Query Parameter — The number of items to return. default: 20
reporters (optional)
+ +
Query Parameter — Filters the returned cases by the user name of the reporter. default: null
search (optional)
+ +
Query Parameter — An Elasticsearch simple_query_string query that filters the objects in the response. default: null
searchFields (optional)
+ +
Query Parameter — The fields to perform the simple_query_string parsed query against. default: null
severity (optional)
+ +
Query Parameter — The severity of the case. default: null
sortField (optional)
+ +
Query Parameter — Determines which field is used to sort the results. default: createdAt
sortOrder (optional)
+ +
Query Parameter — Determines the sort order. default: desc
status (optional)
+ +
Query Parameter — Filters the returned cases by state. default: null
tags (optional)
+ +
Query Parameter — Filters the returned cases by tags. default: null
to (optional)
+ +
Query Parameter — [preview] Returns only cases that were created before a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. default: null
+
+ + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "count_in_progress_cases" : 6,
+  "per_page" : 5,
+  "total" : 2,
+  "cases" : [ {
+    "owner" : "cases",
+    "totalComment" : 0,
+    "settings" : {
+      "syncAlerts" : true
+    },
+    "totalAlerts" : 0,
+    "closed_at" : "2000-01-23T04:56:07.000+00:00",
+    "comments" : [ null, null ],
+    "assignees" : [ {
+      "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+    }, {
+      "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+    } ],
+    "created_at" : "2022-05-13T09:16:17.416Z",
+    "description" : "A case description.",
+    "title" : "Case title 1",
+    "created_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "version" : "WzUzMiwxXQ==",
+    "closed_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "tags" : [ "tag-1" ],
+    "duration" : 120,
+    "updated_at" : "2000-01-23T04:56:07.000+00:00",
+    "updated_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
+    "external_service" : {
+      "external_title" : "external_title",
+      "pushed_by" : {
+        "full_name" : "full_name",
+        "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+        "email" : "email",
+        "username" : "elastic"
+      },
+      "external_url" : "external_url",
+      "pushed_at" : "2000-01-23T04:56:07.000+00:00",
+      "connector_id" : "connector_id",
+      "external_id" : "external_id",
+      "connector_name" : "connector_name"
+    }
+  }, {
+    "owner" : "cases",
+    "totalComment" : 0,
+    "settings" : {
+      "syncAlerts" : true
+    },
+    "totalAlerts" : 0,
+    "closed_at" : "2000-01-23T04:56:07.000+00:00",
+    "comments" : [ null, null ],
+    "assignees" : [ {
+      "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+    }, {
+      "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+    } ],
+    "created_at" : "2022-05-13T09:16:17.416Z",
+    "description" : "A case description.",
+    "title" : "Case title 1",
+    "created_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "version" : "WzUzMiwxXQ==",
+    "closed_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "tags" : [ "tag-1" ],
+    "duration" : 120,
+    "updated_at" : "2000-01-23T04:56:07.000+00:00",
+    "updated_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
+    "external_service" : {
+      "external_title" : "external_title",
+      "pushed_by" : {
+        "full_name" : "full_name",
+        "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+        "email" : "email",
+        "username" : "elastic"
+      },
+      "external_url" : "external_url",
+      "pushed_at" : "2000-01-23T04:56:07.000+00:00",
+      "connector_id" : "connector_id",
+      "external_id" : "external_id",
+      "connector_name" : "connector_name"
+    }
+  } ],
+  "count_open_cases" : 1,
+  "count_closed_cases" : 0,
+  "page" : 5
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + findCasesDefaultSpace_200_response +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /api/cases/_find
+
Retrieves a paginated subset of cases in the default space. (findCasesDefaultSpace)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+ + + + + +

Query parameters

+
+
assignees (optional)
+ +
Query Parameter — Filters the returned cases by assignees. Valid values are none or unique identifiers for the user profiles. These identifiers can be found by using the suggest user profile API. default: null
category (optional)
+ +
Query Parameter — Filters the returned cases by category. default: null
defaultSearchOperator (optional)
+ +
Query Parameter — he default operator to use for the simple_query_string. default: OR
from (optional)
+ +
Query Parameter — [preview] Returns only cases that were created after a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. default: null
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
page (optional)
+ +
Query Parameter — The page number to return. default: 1
perPage (optional)
+ +
Query Parameter — The number of items to return. default: 20
reporters (optional)
+ +
Query Parameter — Filters the returned cases by the user name of the reporter. default: null
search (optional)
Query Parameter — An Elasticsearch simple_query_string query that filters the objects in the response. default: null
searchFields (optional)
@@ -760,7 +1495,7 @@ Any modifications made to this file will be overwritten.

Return type

@@ -896,7 +1631,7 @@ Any modifications made to this file will be overwritten.

Responses

200

Indicates a successful call. - findCases_200_response + findCasesDefaultSpace_200_response

401

Authorization information is missing or invalid. 4xx_response @@ -1005,31 +1740,23 @@ Any modifications made to this file will be overwritten. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/{caseId}
-
Retrieves information about a case. (getCase)
-
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're seeking.
+
get /api/cases/{caseId}/comments
+
Retrieves all the comments from a case in the default space. (getAllCaseCommentsDefaultSpace)
+
Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; instead, use the get case comment API, which requires a comment identifier in the path. You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.

Path parameters

caseId (required)
-
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
spaceId (required)
- -
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
-

Query parameters

-
-
includeComments (optional)
- -
Query Parameter — Deprecated in 8.1.0. This parameter is deprecated and will be removed in a future release. It determines whether case comments are returned. default: true
-

Return type

@@ -1114,12 +1841,12 @@ Any modifications made to this file will be overwritten. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/{caseId}/user_actions
-
Returns all user activity for a case. (getCaseActivity)
-
Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find user actions API instead. You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're seeking.
+
get /s/{spaceId}/api/cases/{caseId}
+
Retrieves information about a case. (getCase)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're seeking.

Path parameters

@@ -1133,11 +1860,17 @@ Any modifications made to this file will be overwritten. +

Query parameters

+
+
includeComments (optional)
+ +
Query Parameter — Deprecated in 8.1.0. This parameter is deprecated and will be removed in a future release. It determines whether case comments are returned. default: true
+

Return type

@@ -1147,17 +1880,57 @@ Any modifications made to this file will be overwritten.
Content-Type: application/json
{
   "owner" : "cases",
-  "action_id" : "22fd3e30-03b1-11ed-920c-974bfa104448",
-  "case_id" : "22df07d0-03b1-11ed-920c-974bfa104448",
-  "action" : "create",
+  "totalComment" : 0,
+  "settings" : {
+    "syncAlerts" : true
+  },
+  "totalAlerts" : 0,
+  "closed_at" : "2000-01-23T04:56:07.000+00:00",
+  "comments" : [ null, null ],
+  "assignees" : [ {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  }, {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  } ],
   "created_at" : "2022-05-13T09:16:17.416Z",
-  "comment_id" : "578608d0-03b1-11ed-920c-974bfa104448",
-  "type" : "create_case",
+  "description" : "A case description.",
+  "title" : "Case title 1",
   "created_by" : {
     "full_name" : "full_name",
     "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
     "email" : "email",
     "username" : "elastic"
+  },
+  "version" : "WzUzMiwxXQ==",
+  "closed_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "tags" : [ "tag-1" ],
+  "duration" : 120,
+  "updated_at" : "2000-01-23T04:56:07.000+00:00",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
+  "external_service" : {
+    "external_title" : "external_title",
+    "pushed_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "external_url" : "external_url",
+    "pushed_at" : "2000-01-23T04:56:07.000+00:00",
+    "connector_id" : "connector_id",
+    "external_id" : "external_id",
+    "connector_name" : "connector_name"
   }
 }
@@ -1171,18 +1944,18 @@ Any modifications made to this file will be overwritten.

Responses

200

Indicates a successful call. - + case_response_properties

401

Authorization information is missing or invalid. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/{caseId}/alerts
-
Gets all alerts attached to a case. (getCaseAlerts)
-
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+
get /s/{spaceId}/api/cases/{caseId}/user_actions
+
Returns all user activity for a case. (getCaseActivity)
+
Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find user actions API instead. You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're seeking.

Path parameters

@@ -1200,7 +1973,7 @@ Any modifications made to this file will be overwritten.

Return type

@@ -1209,9 +1982,19 @@ Any modifications made to this file will be overwritten.

Example data

Content-Type: application/json
{
-  "index" : "index",
-  "id" : "id",
-  "attached_at" : "2000-01-23T04:56:07.000+00:00"
+  "owner" : "cases",
+  "action_id" : "22fd3e30-03b1-11ed-920c-974bfa104448",
+  "case_id" : "22df07d0-03b1-11ed-920c-974bfa104448",
+  "action" : "create",
+  "created_at" : "2022-05-13T09:16:17.416Z",
+  "comment_id" : "578608d0-03b1-11ed-920c-974bfa104448",
+  "type" : "create_case",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  }
 }

Produces

@@ -1230,22 +2013,18 @@ Any modifications made to this file will be overwritten. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/{caseId}/comments/{commentId}
-
Retrieves a comment from a case. (getCaseComment)
-
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.
+
get /api/cases/{caseId}/user_actions
+
Returns all user activity for a case in the default space. (getCaseActivityDefaultSpace)
+
Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find user actions API instead. You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're seeking.

Path parameters

caseId (required)
-
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
commentId (required)
- -
Path Parameter — The identifier for the comment. To retrieve comment IDs, use the get case or find cases APIs. default: null
spaceId (required)
- -
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
@@ -1255,7 +2034,7 @@ Any modifications made to this file will be overwritten.

Return type

@@ -1263,7 +2042,21 @@ Any modifications made to this file will be overwritten.

Example data

Content-Type: application/json
-
null
+
{
+  "owner" : "cases",
+  "action_id" : "22fd3e30-03b1-11ed-920c-974bfa104448",
+  "case_id" : "22df07d0-03b1-11ed-920c-974bfa104448",
+  "action" : "create",
+  "created_at" : "2022-05-13T09:16:17.416Z",
+  "comment_id" : "578608d0-03b1-11ed-920c-974bfa104448",
+  "type" : "create_case",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  }
+}

Produces

This API call produces the following media types according to the Accept request header; @@ -1275,22 +2068,24 @@ Any modifications made to this file will be overwritten.

Responses

200

Indicates a successful call. - getCaseComment_200_response +

401

Authorization information is missing or invalid. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/configure
-
Retrieves external connection details, such as the closure type and default connector for cases. (getCaseConfiguration)
-
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case configuration.
+
get /s/{spaceId}/api/cases/{caseId}/alerts
+
Gets all alerts attached to a case. (getCaseAlerts)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.

Path parameters

-
spaceId (required)
+
caseId (required)
+ +
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
spaceId (required)
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
@@ -1298,17 +2093,11 @@ Any modifications made to this file will be overwritten. -

Query parameters

-
-
owner (optional)
- -
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
-

Return type

@@ -1317,40 +2106,9 @@ Any modifications made to this file will be overwritten.

Example data

Content-Type: application/json
{
-  "closure_type" : "close-by-user",
-  "owner" : "cases",
-  "mappings" : [ {
-    "action_type" : "overwrite",
-    "source" : "title",
-    "target" : "summary"
-  }, {
-    "action_type" : "overwrite",
-    "source" : "title",
-    "target" : "summary"
-  } ],
-  "connector" : {
-    "name" : "none",
-    "id" : "none",
-    "fields" : "{}",
-    "type" : ".none"
-  },
-  "updated_at" : "2022-06-01T19:58:48.169Z",
-  "updated_by" : {
-    "full_name" : "full_name",
-    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
-    "email" : "email",
-    "username" : "elastic"
-  },
-  "created_at" : "2022-06-01T17:07:17.767Z",
-  "id" : "4a97a440-e1cd-11ec-be9b-9b1838238ee6",
-  "error" : "error",
-  "created_by" : {
-    "full_name" : "full_name",
-    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
-    "email" : "email",
-    "username" : "elastic"
-  },
-  "version" : "WzIwNzMsMV0="
+  "index" : "index",
+  "id" : "id",
+  "attached_at" : "2000-01-23T04:56:07.000+00:00"
 }

Produces

@@ -1369,34 +2127,28 @@ Any modifications made to this file will be overwritten. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/reporters
-
Returns information about the users who opened cases. (getCaseReporters)
-
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases. The API returns information about the users as they existed at the time of the case creation, including their name, full name, and email address. If any of those details change thereafter or if a user is deleted, the information returned by this API is unchanged.
+
get /api/cases/{caseId}/alerts
+
Gets all alerts attached to a case in the default space. (getCaseAlertsDefaultSpace)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.

Path parameters

-
spaceId (required)
+
caseId (required)
-
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
-

Query parameters

-
-
owner (optional)
- -
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
-

Return type

@@ -1405,10 +2157,9 @@ Any modifications made to this file will be overwritten.

Example data

Content-Type: application/json
{
-  "full_name" : "full_name",
-  "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
-  "email" : "email",
-  "username" : "elastic"
+  "index" : "index",
+  "id" : "id",
+  "attached_at" : "2000-01-23T04:56:07.000+00:00"
 }

Produces

@@ -1427,16 +2178,20 @@ Any modifications made to this file will be overwritten. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/status
-
Returns the number of cases that are open, closed, and in progress. (getCaseStatus)
-
Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find cases API instead. You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+
get /s/{spaceId}/api/cases/{caseId}/comments/{commentId}
+
Retrieves a comment from a case. (getCaseComment)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.

Path parameters

-
spaceId (required)
+
caseId (required)
+ +
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
commentId (required)
+ +
Path Parameter — The identifier for the comment. To retrieve comment IDs, use the get case or find cases APIs. default: null
spaceId (required)
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
@@ -1444,17 +2199,11 @@ Any modifications made to this file will be overwritten. -

Query parameters

-
-
owner (optional)
- -
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
-

Return type

@@ -1462,11 +2211,7 @@ Any modifications made to this file will be overwritten.

Example data

Content-Type: application/json
-
{
-  "count_in_progress_cases" : 6,
-  "count_open_cases" : 1,
-  "count_closed_cases" : 0
-}
+
null

Produces

This API call produces the following media types according to the Accept request header; @@ -1478,48 +2223,44 @@ Any modifications made to this file will be overwritten.

Responses

200

Indicates a successful call. - getCaseStatus_200_response + getCaseCommentDefaultSpace_200_response

401

Authorization information is missing or invalid. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/tags
-
Aggregates and returns a list of case tags. (getCaseTags)
-
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+
get /api/cases/{caseId}/comments/{commentId}
+
Retrieves a comment from a case in the default space. (getCaseCommentDefaultSpace)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.

Path parameters

-
spaceId (required)
+
caseId (required)
-
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
-
+
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
commentId (required)
+
Path Parameter — The identifier for the comment. To retrieve comment IDs, use the get case or find cases APIs. default: null
+
-

Query parameters

-
-
owner (optional)
-
Query Parameter — A filter to limit the retrieved case statistics to a specific set of applications. If this parameter is omitted, the response contains tags from all cases that the user has access to read. default: null
-

Return type

Example data

Content-Type: application/json
-
""
+
null

Produces

This API call produces the following media types according to the Accept request header; @@ -1531,24 +2272,22 @@ Any modifications made to this file will be overwritten.

Responses

200

Indicates a successful call. - + getCaseCommentDefaultSpace_200_response

401

Authorization information is missing or invalid. 4xx_response

-
+
Up -
get /s/{spaceId}/api/cases/alerts/{alertId}
-
Returns the cases associated with a specific alert. (getCasesByAlert)
-
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+
get /s/{spaceId}/api/cases/configure
+
Retrieves external connection details, such as the closure type and default connector for cases. (getCaseConfiguration)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case configuration.

Path parameters

-
alertId (required)
- -
Path Parameter — An identifier for the alert. default: null
spaceId (required)
+
spaceId (required)
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
@@ -1566,7 +2305,7 @@ Any modifications made to this file will be overwritten.

Return type

@@ -1574,10 +2313,1347 @@ Any modifications made to this file will be overwritten.

Example data

Content-Type: application/json
-
[ {
-  "id" : "06116b80-e1c3-11ec-be9b-9b1838238ee6",
-  "title" : "security_case"
-} ]
+
{
+  "closure_type" : "close-by-user",
+  "owner" : "cases",
+  "mappings" : [ {
+    "action_type" : "overwrite",
+    "source" : "title",
+    "target" : "summary"
+  }, {
+    "action_type" : "overwrite",
+    "source" : "title",
+    "target" : "summary"
+  } ],
+  "connector" : {
+    "name" : "none",
+    "id" : "none",
+    "fields" : "{}",
+    "type" : ".none"
+  },
+  "updated_at" : "2022-06-01T19:58:48.169Z",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "created_at" : "2022-06-01T17:07:17.767Z",
+  "id" : "4a97a440-e1cd-11ec-be9b-9b1838238ee6",
+  "error" : "error",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzIwNzMsMV0="
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /api/cases/configure
+
Retrieves external connection details, such as the closure type and default connector for cases in the default space. (getCaseConfigurationDefaultSpace)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case configuration.
+ + + + + +

Query parameters

+
+
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
+
+ + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "closure_type" : "close-by-user",
+  "owner" : "cases",
+  "mappings" : [ {
+    "action_type" : "overwrite",
+    "source" : "title",
+    "target" : "summary"
+  }, {
+    "action_type" : "overwrite",
+    "source" : "title",
+    "target" : "summary"
+  } ],
+  "connector" : {
+    "name" : "none",
+    "id" : "none",
+    "fields" : "{}",
+    "type" : ".none"
+  },
+  "updated_at" : "2022-06-01T19:58:48.169Z",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "created_at" : "2022-06-01T17:07:17.767Z",
+  "id" : "4a97a440-e1cd-11ec-be9b-9b1838238ee6",
+  "error" : "error",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzIwNzMsMV0="
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /api/cases/{caseId}
+
Retrieves information about a case in the default space. (getCaseDefaultSpace)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're seeking.
+ +

Path parameters

+
+
caseId (required)
+ +
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
+
+ + + + +

Query parameters

+
+
includeComments (optional)
+ +
Query Parameter — Deprecated in 8.1.0. This parameter is deprecated and will be removed in a future release. It determines whether case comments are returned. default: true
+
+ + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "owner" : "cases",
+  "totalComment" : 0,
+  "settings" : {
+    "syncAlerts" : true
+  },
+  "totalAlerts" : 0,
+  "closed_at" : "2000-01-23T04:56:07.000+00:00",
+  "comments" : [ null, null ],
+  "assignees" : [ {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  }, {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  } ],
+  "created_at" : "2022-05-13T09:16:17.416Z",
+  "description" : "A case description.",
+  "title" : "Case title 1",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzUzMiwxXQ==",
+  "closed_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "tags" : [ "tag-1" ],
+  "duration" : 120,
+  "updated_at" : "2000-01-23T04:56:07.000+00:00",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
+  "external_service" : {
+    "external_title" : "external_title",
+    "pushed_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "external_url" : "external_url",
+    "pushed_at" : "2000-01-23T04:56:07.000+00:00",
+    "connector_id" : "connector_id",
+    "external_id" : "external_id",
+    "connector_name" : "connector_name"
+  }
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + case_response_properties +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /s/{spaceId}/api/cases/reporters
+
Returns information about the users who opened cases. (getCaseReporters)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases. The API returns information about the users as they existed at the time of the case creation, including their name, full name, and email address. If any of those details change thereafter or if a user is deleted, the information returned by this API is unchanged.
+ +

Path parameters

+
+
spaceId (required)
+ +
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
+ + + + +

Query parameters

+
+
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
+
+ + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "full_name" : "full_name",
+  "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+  "email" : "email",
+  "username" : "elastic"
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /api/cases/reporters
+
Returns information about the users who opened cases in the default space. (getCaseReportersDefaultSpace)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases. The API returns information about the users as they existed at the time of the case creation, including their name, full name, and email address. If any of those details change thereafter or if a user is deleted, the information returned by this API is unchanged.
+ + + + + +

Query parameters

+
+
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
+
+ + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "full_name" : "full_name",
+  "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+  "email" : "email",
+  "username" : "elastic"
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /s/{spaceId}/api/cases/status
+
Returns the number of cases that are open, closed, and in progress. (getCaseStatus)
+
Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find cases API instead. You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+ +

Path parameters

+
+
spaceId (required)
+ +
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
+ + + + +

Query parameters

+
+
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
+
+ + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "count_in_progress_cases" : 6,
+  "count_open_cases" : 1,
+  "count_closed_cases" : 0
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + getCaseStatusDefaultSpace_200_response +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /api/cases/status
+
Returns the number of cases that are open, closed, and in progress in the default space. (getCaseStatusDefaultSpace)
+
Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find cases API instead. You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+ + + + + +

Query parameters

+
+
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
+
+ + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "count_in_progress_cases" : 6,
+  "count_open_cases" : 1,
+  "count_closed_cases" : 0
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + getCaseStatusDefaultSpace_200_response +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /s/{spaceId}/api/cases/tags
+
Aggregates and returns a list of case tags. (getCaseTags)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+ +

Path parameters

+
+
spaceId (required)
+ +
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
+ + + + +

Query parameters

+
+
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
+
+ + +

Return type

+
+ + array[String] +
+ + + +

Example data

+
Content-Type: application/json
+
""
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /api/cases/tags
+
Aggregates and returns a list of case tags in the default space. (getCaseTagsDefaultSpace)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+ + + + + +

Query parameters

+
+
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
+
+ + +

Return type

+
+ + array[String] +
+ + + +

Example data

+
Content-Type: application/json
+
""
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /s/{spaceId}/api/cases/alerts/{alertId}
+
Returns the cases associated with a specific alert. (getCasesByAlert)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+ +

Path parameters

+
+
alertId (required)
+ +
Path Parameter — An identifier for the alert. default: null
spaceId (required)
+ +
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
+ + + + +

Query parameters

+
+
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
+
+ + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
[ {
+  "id" : "06116b80-e1c3-11ec-be9b-9b1838238ee6",
+  "title" : "security_case"
+} ]
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
get /api/cases/alerts/{alertId}
+
Returns the cases associated with a specific alert in the default space. (getCasesByAlertDefaultSpace)
+
You must have read privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the cases you're seeking.
+ +

Path parameters

+
+
alertId (required)
+ +
Path Parameter — An identifier for the alert. default: null
+
+ + + + +

Query parameters

+
+
owner (optional)
+ +
Query Parameter — A filter to limit the response to a specific set of applications. If this parameter is omitted, the response contains information about all the cases that the user has access to read. default: null
+
+ + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
[ {
+  "id" : "06116b80-e1c3-11ec-be9b-9b1838238ee6",
+  "title" : "security_case"
+} ]
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
post /s/{spaceId}/api/cases/{caseId}/connector/{connectorId}/_push
+
Pushes a case to an external service. (pushCase)
+
You must have all privileges for the Actions and Connectors feature in the Management section of the Kibana feature privileges. You must also have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're pushing.
+ +

Path parameters

+
+
caseId (required)
+ +
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
connectorId (required)
+ +
Path Parameter — An identifier for the connector. To retrieve connector IDs, use the find connectors API. default: null
spaceId (required)
+ +
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
+ +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ +

Request body

+
+
body object (optional)
+ +
Body Parameter
+ +
+ +

Request headers

+
+
kbn-xsrf (required)
+ +
Header Parameter — Cross-site request forgery protection default: null
+ +
+ + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "owner" : "cases",
+  "totalComment" : 0,
+  "settings" : {
+    "syncAlerts" : true
+  },
+  "totalAlerts" : 0,
+  "closed_at" : "2000-01-23T04:56:07.000+00:00",
+  "comments" : [ null, null ],
+  "assignees" : [ {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  }, {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  } ],
+  "created_at" : "2022-05-13T09:16:17.416Z",
+  "description" : "A case description.",
+  "title" : "Case title 1",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzUzMiwxXQ==",
+  "closed_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "tags" : [ "tag-1" ],
+  "duration" : 120,
+  "updated_at" : "2000-01-23T04:56:07.000+00:00",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
+  "external_service" : {
+    "external_title" : "external_title",
+    "pushed_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "external_url" : "external_url",
+    "pushed_at" : "2000-01-23T04:56:07.000+00:00",
+    "connector_id" : "connector_id",
+    "external_id" : "external_id",
+    "connector_name" : "connector_name"
+  }
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + case_response_properties +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
post /api/cases/{caseId}/connector/{connectorId}/_push
+
Pushes a case in the default space to an external service. (pushCaseDefaultSpace)
+
You must have all privileges for the Actions and Connectors feature in the Management section of the Kibana feature privileges. You must also have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're pushing.
+ +

Path parameters

+
+
caseId (required)
+ +
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
connectorId (required)
+ +
Path Parameter — An identifier for the connector. To retrieve connector IDs, use the find connectors API. default: null
+
+ +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ +

Request body

+
+
body object (optional)
+ +
Body Parameter
+ +
+ +

Request headers

+
+
kbn-xsrf (required)
+ +
Header Parameter — Cross-site request forgery protection default: null
+ +
+ + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "owner" : "cases",
+  "totalComment" : 0,
+  "settings" : {
+    "syncAlerts" : true
+  },
+  "totalAlerts" : 0,
+  "closed_at" : "2000-01-23T04:56:07.000+00:00",
+  "comments" : [ null, null ],
+  "assignees" : [ {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  }, {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  } ],
+  "created_at" : "2022-05-13T09:16:17.416Z",
+  "description" : "A case description.",
+  "title" : "Case title 1",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzUzMiwxXQ==",
+  "closed_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "tags" : [ "tag-1" ],
+  "duration" : 120,
+  "updated_at" : "2000-01-23T04:56:07.000+00:00",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
+  "external_service" : {
+    "external_title" : "external_title",
+    "pushed_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "external_url" : "external_url",
+    "pushed_at" : "2000-01-23T04:56:07.000+00:00",
+    "connector_id" : "connector_id",
+    "external_id" : "external_id",
+    "connector_name" : "connector_name"
+  }
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + case_response_properties +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
post /s/{spaceId}/api/cases/configure
+
Sets external connection details, such as the closure type and default connector for cases. (setCaseConfiguration)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case configuration. Connectors are used to interface with external systems. You must create a connector before you can use it in your cases. Refer to the add connectors API. If you set a default connector, it is automatically selected when you create cases in Kibana. If you use the create case API, however, you must still specify all of the connector details.
+ +

Path parameters

+
+
spaceId (required)
+ +
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
+ +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ +

Request body

+
+
set_case_configuration_request set_case_configuration_request (optional)
+ +
Body Parameter
+ +
+ +

Request headers

+
+
kbn-xsrf (required)
+ +
Header Parameter — Cross-site request forgery protection default: null
+ +
+ + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "closure_type" : "close-by-user",
+  "owner" : "cases",
+  "mappings" : [ {
+    "action_type" : "overwrite",
+    "source" : "title",
+    "target" : "summary"
+  }, {
+    "action_type" : "overwrite",
+    "source" : "title",
+    "target" : "summary"
+  } ],
+  "connector" : {
+    "name" : "none",
+    "id" : "none",
+    "fields" : "{}",
+    "type" : ".none"
+  },
+  "updated_at" : "2022-06-01T19:58:48.169Z",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "created_at" : "2022-06-01T17:07:17.767Z",
+  "id" : "4a97a440-e1cd-11ec-be9b-9b1838238ee6",
+  "error" : "error",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzIwNzMsMV0="
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + getCaseConfigurationDefaultSpace_200_response_inner +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
post /api/cases/configure
+
Sets external connection details, such as the closure type and default connector for cases in the default space. (setCaseConfigurationDefaultSpace)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case configuration. Connectors are used to interface with external systems. You must create a connector before you can use it in your cases. Refer to the add connectors API. If you set a default connector, it is automatically selected when you create cases in Kibana. If you use the create case API, however, you must still specify all of the connector details.
+ + +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ +

Request body

+
+
set_case_configuration_request set_case_configuration_request (optional)
+ +
Body Parameter
+ +
+ +

Request headers

+
+
kbn-xsrf (required)
+ +
Header Parameter — Cross-site request forgery protection default: null
+ +
+ + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "closure_type" : "close-by-user",
+  "owner" : "cases",
+  "mappings" : [ {
+    "action_type" : "overwrite",
+    "source" : "title",
+    "target" : "summary"
+  }, {
+    "action_type" : "overwrite",
+    "source" : "title",
+    "target" : "summary"
+  } ],
+  "connector" : {
+    "name" : "none",
+    "id" : "none",
+    "fields" : "{}",
+    "type" : ".none"
+  },
+  "updated_at" : "2022-06-01T19:58:48.169Z",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "created_at" : "2022-06-01T17:07:17.767Z",
+  "id" : "4a97a440-e1cd-11ec-be9b-9b1838238ee6",
+  "error" : "error",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzIwNzMsMV0="
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + getCaseConfigurationDefaultSpace_200_response_inner +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
patch /s/{spaceId}/api/cases
+
Updates one or more cases. (updateCase)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're updating.
+ +

Path parameters

+
+
spaceId (required)
+ +
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
+ +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ +

Request body

+
+
update_case_request update_case_request (optional)
+ +
Body Parameter
+ +
+ +

Request headers

+
+
kbn-xsrf (required)
+ +
Header Parameter — Cross-site request forgery protection default: null
+ +
+ + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "owner" : "cases",
+  "totalComment" : 0,
+  "settings" : {
+    "syncAlerts" : true
+  },
+  "totalAlerts" : 0,
+  "closed_at" : "2000-01-23T04:56:07.000+00:00",
+  "comments" : [ null, null ],
+  "assignees" : [ {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  }, {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  } ],
+  "created_at" : "2022-05-13T09:16:17.416Z",
+  "description" : "A case description.",
+  "title" : "Case title 1",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzUzMiwxXQ==",
+  "closed_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "tags" : [ "tag-1" ],
+  "duration" : 120,
+  "updated_at" : "2000-01-23T04:56:07.000+00:00",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
+  "external_service" : {
+    "external_title" : "external_title",
+    "pushed_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "external_url" : "external_url",
+    "pushed_at" : "2000-01-23T04:56:07.000+00:00",
+    "connector_id" : "connector_id",
+    "external_id" : "external_id",
+    "connector_name" : "connector_name"
+  }
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ Indicates a successful call. + +

401

+ Authorization information is missing or invalid. + 4xx_response +
+
+
+
+ Up +
patch /s/{spaceId}/api/cases/{caseId}/comments
+
Updates a comment or alert in a case. (updateCaseComment)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're updating. NOTE: You cannot change the comment type or the owner of a comment.
+ +

Path parameters

+
+
caseId (required)
+ +
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
spaceId (required)
+ +
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
+ +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ +

Request body

+
+
update_case_comment_request update_case_comment_request (required)
+ +
Body Parameter
+ +
+ +

Request headers

+
+
kbn-xsrf (required)
+ +
Header Parameter — Cross-site request forgery protection default: null
+ +
+ + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "owner" : "cases",
+  "totalComment" : 0,
+  "settings" : {
+    "syncAlerts" : true
+  },
+  "totalAlerts" : 0,
+  "closed_at" : "2000-01-23T04:56:07.000+00:00",
+  "comments" : [ null, null ],
+  "assignees" : [ {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  }, {
+    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  } ],
+  "created_at" : "2022-05-13T09:16:17.416Z",
+  "description" : "A case description.",
+  "title" : "Case title 1",
+  "created_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "version" : "WzUzMiwxXQ==",
+  "closed_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "tags" : [ "tag-1" ],
+  "duration" : 120,
+  "updated_at" : "2000-01-23T04:56:07.000+00:00",
+  "updated_by" : {
+    "full_name" : "full_name",
+    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+    "email" : "email",
+    "username" : "elastic"
+  },
+  "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
+  "external_service" : {
+    "external_title" : "external_title",
+    "pushed_by" : {
+      "full_name" : "full_name",
+      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
+      "email" : "email",
+      "username" : "elastic"
+    },
+    "external_url" : "external_url",
+    "pushed_at" : "2000-01-23T04:56:07.000+00:00",
+    "connector_id" : "connector_id",
+    "external_id" : "external_id",
+    "connector_name" : "connector_name"
+  }
+}

Produces

This API call produces the following media types according to the Accept request header; @@ -1589,28 +3665,24 @@ Any modifications made to this file will be overwritten.

Responses

200

Indicates a successful call. - + case_response_properties

401

Authorization information is missing or invalid. 4xx_response

-
+
Up -
post /s/{spaceId}/api/cases/{caseId}/connector/{connectorId}/_push
-
Pushes a case to an external service. (pushCase)
-
You must have all privileges for the Actions and Connectors feature in the Management section of the Kibana feature privileges. You must also have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're pushing.
+
patch /api/cases/{caseId}/comments
+
Updates a comment or alert in a case in the default space. (updateCaseCommentDefaultSpace)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're updating. NOTE: You cannot change the comment type or the owner of a comment.

Path parameters

caseId (required)
-
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
connectorId (required)
- -
Path Parameter — An identifier for the connector. To retrieve connector IDs, use the find connectors API. default: null
spaceId (required)
- -
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null

Consumes

@@ -1621,7 +3693,7 @@ Any modifications made to this file will be overwritten.

Request body

-
body object (optional)
+
update_case_comment_request update_case_comment_request (required)
Body Parameter
@@ -1719,16 +3791,18 @@ Any modifications made to this file will be overwritten. 4xx_response

-
+
Up -
post /s/{spaceId}/api/cases/configure
-
Sets external connection details, such as the closure type and default connector for cases. (setCaseConfiguration)
-
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case configuration. Connectors are used to interface with external systems. You must create a connector before you can use it in your cases. Refer to the add connectors API. If you set a default connector, it is automatically selected when you create cases in Kibana. If you use the create case API, however, you must still specify all of the connector details.
+
patch /s/{spaceId}/api/cases/configure/{configurationId}
+
Updates external connection details, such as the closure type and default connector for cases. (updateCaseConfiguration)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case configuration. Connectors are used to interface with external systems. You must create a connector before you can use it in your cases. Refer to the add connectors API.

Path parameters

-
spaceId (required)
+
configurationId (required)
+ +
Path Parameter — An identifier for the configuration. default: null
spaceId (required)
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
@@ -1741,7 +3815,7 @@ Any modifications made to this file will be overwritten.

Request body

-
setCaseConfiguration_request setCaseConfiguration_request (optional)
+
update_case_configuration_request update_case_configuration_request (optional)
Body Parameter
@@ -1759,7 +3833,7 @@ Any modifications made to this file will be overwritten.

Return type

@@ -1814,24 +3888,24 @@ Any modifications made to this file will be overwritten.

Responses

200

Indicates a successful call. - getCaseConfiguration_200_response_inner +

401

Authorization information is missing or invalid. 4xx_response

-
+
Up -
patch /s/{spaceId}/api/cases
-
Updates one or more cases. (updateCase)
-
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're updating.
+
patch /api/cases/configure/{configurationId}
+
Updates external connection details, such as the closure type and default connector for cases in the default space. (updateCaseConfigurationDefaultSpace)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case configuration. Connectors are used to interface with external systems. You must create a connector before you can use it in your cases. Refer to the add connectors API.

Path parameters

-
spaceId (required)
+
configurationId (required)
-
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
+
Path Parameter — An identifier for the configuration. default: null

Consumes

@@ -1842,7 +3916,7 @@ Any modifications made to this file will be overwritten.

Request body

-
update_case_request update_case_request (optional)
+
update_case_configuration_request update_case_configuration_request (optional)
Body Parameter
@@ -1860,7 +3934,7 @@ Any modifications made to this file will be overwritten.

Return type

@@ -1869,59 +3943,40 @@ Any modifications made to this file will be overwritten.

Example data

Content-Type: application/json
{
+  "closure_type" : "close-by-user",
   "owner" : "cases",
-  "totalComment" : 0,
-  "settings" : {
-    "syncAlerts" : true
-  },
-  "totalAlerts" : 0,
-  "closed_at" : "2000-01-23T04:56:07.000+00:00",
-  "comments" : [ null, null ],
-  "assignees" : [ {
-    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+  "mappings" : [ {
+    "action_type" : "overwrite",
+    "source" : "title",
+    "target" : "summary"
   }, {
-    "uid" : "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+    "action_type" : "overwrite",
+    "source" : "title",
+    "target" : "summary"
   } ],
-  "created_at" : "2022-05-13T09:16:17.416Z",
-  "description" : "A case description.",
-  "title" : "Case title 1",
-  "created_by" : {
-    "full_name" : "full_name",
-    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
-    "email" : "email",
-    "username" : "elastic"
+  "connector" : {
+    "name" : "none",
+    "id" : "none",
+    "fields" : "{}",
+    "type" : ".none"
   },
-  "version" : "WzUzMiwxXQ==",
-  "closed_by" : {
+  "updated_at" : "2022-06-01T19:58:48.169Z",
+  "updated_by" : {
     "full_name" : "full_name",
     "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
     "email" : "email",
     "username" : "elastic"
   },
-  "tags" : [ "tag-1" ],
-  "duration" : 120,
-  "updated_at" : "2000-01-23T04:56:07.000+00:00",
-  "updated_by" : {
+  "created_at" : "2022-06-01T17:07:17.767Z",
+  "id" : "4a97a440-e1cd-11ec-be9b-9b1838238ee6",
+  "error" : "error",
+  "created_by" : {
     "full_name" : "full_name",
     "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
     "email" : "email",
     "username" : "elastic"
   },
-  "id" : "66b9aa00-94fa-11ea-9f74-e7e108796192",
-  "external_service" : {
-    "external_title" : "external_title",
-    "pushed_by" : {
-      "full_name" : "full_name",
-      "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
-      "email" : "email",
-      "username" : "elastic"
-    },
-    "external_url" : "external_url",
-    "pushed_at" : "2000-01-23T04:56:07.000+00:00",
-    "connector_id" : "connector_id",
-    "external_id" : "external_id",
-    "connector_name" : "connector_name"
-  }
+  "version" : "WzIwNzMsMV0="
 }

Produces

@@ -1940,21 +3995,13 @@ Any modifications made to this file will be overwritten. 4xx_response

-
+
Up -
patch /s/{spaceId}/api/cases/{caseId}/comments
-
Updates a comment or alert in a case. (updateCaseComment)
-
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're updating. NOTE: You cannot change the comment type or the owner of a comment.
- -

Path parameters

-
-
caseId (required)
- -
Path Parameter — The identifier for the case. To retrieve case IDs, use the find cases API. All non-ASCII characters must be URL encoded. default: null
spaceId (required)
+
patch /api/cases
+
Updates one or more cases in the default space. (updateCaseDefaultSpace)
+
You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case you're updating.
-
Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
-

Consumes

This API call consumes the following media types via the Content-Type request header: @@ -1964,7 +4011,7 @@ Any modifications made to this file will be overwritten.

Request body

-
update_case_comment_request update_case_comment_request (required)
+
update_case_request update_case_request (optional)
Body Parameter
@@ -1982,7 +4029,7 @@ Any modifications made to this file will be overwritten.

Return type

@@ -2053,109 +4100,6 @@ Any modifications made to this file will be overwritten.
  • application/json
  • -

    Responses

    -

    200

    - Indicates a successful call. - case_response_properties -

    401

    - Authorization information is missing or invalid. - 4xx_response -
    -
    -
    -
    - Up -
    patch /s/{spaceId}/api/cases/configure/{configurationId}
    -
    Updates external connection details, such as the closure type and default connector for cases. (updateCaseConfiguration)
    -
    You must have all privileges for the Cases feature in the Management, Observability, or Security section of the Kibana feature privileges, depending on the owner of the case configuration. Connectors are used to interface with external systems. You must create a connector before you can use it in your cases. Refer to the add connectors API.
    - -

    Path parameters

    -
    -
    configurationId (required)
    - -
    Path Parameter — An identifier for the configuration. default: null
    spaceId (required)
    - -
    Path Parameter — An identifier for the space. If /s/ and the identifier are omitted from the path, the default space is used. default: null
    -
    - -

    Consumes

    - This API call consumes the following media types via the Content-Type request header: -
      -
    • application/json
    • -
    - -

    Request body

    -
    -
    updateCaseConfiguration_request updateCaseConfiguration_request (optional)
    - -
    Body Parameter
    - -
    - -

    Request headers

    -
    -
    kbn-xsrf (required)
    - -
    Header Parameter — Cross-site request forgery protection default: null
    - -
    - - - -

    Return type

    - - - - -

    Example data

    -
    Content-Type: application/json
    -
    {
    -  "closure_type" : "close-by-user",
    -  "owner" : "cases",
    -  "mappings" : [ {
    -    "action_type" : "overwrite",
    -    "source" : "title",
    -    "target" : "summary"
    -  }, {
    -    "action_type" : "overwrite",
    -    "source" : "title",
    -    "target" : "summary"
    -  } ],
    -  "connector" : {
    -    "name" : "none",
    -    "id" : "none",
    -    "fields" : "{}",
    -    "type" : ".none"
    -  },
    -  "updated_at" : "2022-06-01T19:58:48.169Z",
    -  "updated_by" : {
    -    "full_name" : "full_name",
    -    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
    -    "email" : "email",
    -    "username" : "elastic"
    -  },
    -  "created_at" : "2022-06-01T17:07:17.767Z",
    -  "id" : "4a97a440-e1cd-11ec-be9b-9b1838238ee6",
    -  "error" : "error",
    -  "created_by" : {
    -    "full_name" : "full_name",
    -    "profile_uid" : "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0",
    -    "email" : "email",
    -    "username" : "elastic"
    -  },
    -  "version" : "WzIwNzMsMV0="
    -}
    - -

    Produces

    - This API call produces the following media types according to the Accept request header; - the media type will be conveyed by the Content-Type response header. -
      -
    • application/json
    • -
    -

    Responses

    200

    Indicates a successful call. @@ -2207,21 +4151,22 @@ Any modifications made to this file will be overwritten.
  • create_case_request - Create case request
  • create_case_request_connector -
  • external_service -
  • -
  • findCaseActivity_200_response -
  • -
  • findCaseConnectors_200_response_inner -
  • -
  • findCaseConnectors_200_response_inner_config -
  • -
  • findCases_200_response -
  • -
  • findCases_assignees_parameter -
  • -
  • findCases_owner_parameter -
  • -
  • findCases_searchFields_parameter -
  • -
  • getCaseComment_200_response -
  • -
  • getCaseConfiguration_200_response_inner -
  • -
  • getCaseConfiguration_200_response_inner_connector -
  • -
  • getCaseConfiguration_200_response_inner_created_by -
  • -
  • getCaseConfiguration_200_response_inner_mappings_inner -
  • -
  • getCaseConfiguration_200_response_inner_updated_by -
  • -
  • getCaseStatus_200_response -
  • -
  • getCasesByAlert_200_response_inner -
  • +
  • findCaseActivityDefaultSpace_200_response -
  • +
  • findCaseConnectorsDefaultSpace_200_response_inner -
  • +
  • findCaseConnectorsDefaultSpace_200_response_inner_config -
  • +
  • findCasesDefaultSpace_200_response -
  • +
  • findCasesDefaultSpace_assignees_parameter -
  • +
  • findCasesDefaultSpace_category_parameter -
  • +
  • findCasesDefaultSpace_owner_parameter -
  • +
  • findCasesDefaultSpace_searchFields_parameter -
  • +
  • getCaseCommentDefaultSpace_200_response -
  • +
  • getCaseConfigurationDefaultSpace_200_response_inner -
  • +
  • getCaseConfigurationDefaultSpace_200_response_inner_connector -
  • +
  • getCaseConfigurationDefaultSpace_200_response_inner_created_by -
  • +
  • getCaseConfigurationDefaultSpace_200_response_inner_mappings_inner -
  • +
  • getCaseConfigurationDefaultSpace_200_response_inner_updated_by -
  • +
  • getCaseStatusDefaultSpace_200_response -
  • +
  • getCasesByAlertDefaultSpace_200_response_inner -
  • owners -
  • payload_alert_comment -
  • payload_alert_comment_comment -
  • @@ -2242,16 +4187,16 @@ Any modifications made to this file will be overwritten.
  • payload_user_comment -
  • payload_user_comment_comment -
  • rule - Alerting rule
  • -
  • search_fields -
  • -
  • setCaseConfiguration_request -
  • -
  • setCaseConfiguration_request_connector -
  • -
  • setCaseConfiguration_request_settings -
  • +
  • searchFieldsType -
  • +
  • set_case_configuration_request - Set case configuration request
  • +
  • set_case_configuration_request_connector -
  • +
  • set_case_configuration_request_settings -
  • settings -
  • severity_property -
  • status -
  • -
  • updateCaseConfiguration_request -
  • update_alert_comment_request_properties - Update case comment request properties for alerts
  • update_case_comment_request - Update case comment request
  • +
  • update_case_configuration_request - Update case configuration request
  • update_case_request - Update case request
  • update_case_request_cases_inner -
  • update_user_comment_request_properties - Update case comment request properties for user comments
  • @@ -2361,18 +4306,18 @@ Any modifications made to this file will be overwritten.
    alertId (optional)
    created_at (optional)
    Date format: date-time
    -
    created_by (optional)
    +
    created_by (optional)
    id (optional)
    index (optional)
    owner (optional)
    pushed_at (optional)
    Date format: date-time
    -
    pushed_by (optional)
    +
    pushed_by (optional)
    rule (optional)
    type
    Enum:
    alert
    updated_at (optional)
    Date format: date-time
    -
    updated_by (optional)
    +
    updated_by (optional)
    version (optional)
    @@ -2660,11 +4605,11 @@ Any modifications made to this file will be overwritten.
    external_title (optional)
    external_url (optional)
    pushed_at (optional)
    Date format: date-time
    -
    pushed_by (optional)
    +
    pushed_by (optional)
    -

    findCaseActivity_200_response - Up

    +

    findCaseActivityDefaultSpace_200_response - Up

    page (optional)
    @@ -2674,11 +4619,11 @@ Any modifications made to this file will be overwritten.
    -

    findCaseConnectors_200_response_inner - Up

    +

    findCaseConnectorsDefaultSpace_200_response_inner - Up

    actionTypeId (optional)
    -
    config (optional)
    +
    config (optional)
    id (optional)
    isDeprecated (optional)
    isMissingSecrets (optional)
    @@ -2688,7 +4633,7 @@ Any modifications made to this file will be overwritten.
    -

    findCaseConnectors_200_response_inner_config - Up

    +

    findCaseConnectorsDefaultSpace_200_response_inner_config - Up

    apiUrl (optional)
    @@ -2696,7 +4641,7 @@ Any modifications made to this file will be overwritten.
    -

    findCases_200_response - Up

    +

    findCasesDefaultSpace_200_response - Up

    cases (optional)
    @@ -2709,25 +4654,31 @@ Any modifications made to this file will be overwritten.
    +
    -

    getCaseComment_200_response - Up

    +

    getCaseCommentDefaultSpace_200_response - Up

    alertId (optional)
    @@ -2749,24 +4700,24 @@ Any modifications made to this file will be overwritten.
    -

    getCaseConfiguration_200_response_inner_connector - Up

    +

    getCaseConfigurationDefaultSpace_200_response_inner_connector - Up

    fields (optional)
    Object The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to null.
    @@ -2776,7 +4727,7 @@ Any modifications made to this file will be overwritten.
    -

    getCaseConfiguration_200_response_inner_created_by - Up

    +

    getCaseConfigurationDefaultSpace_200_response_inner_created_by - Up

    email (optional)
    @@ -2786,7 +4737,7 @@ Any modifications made to this file will be overwritten.
    -

    getCaseConfiguration_200_response_inner_mappings_inner - Up

    +

    getCaseConfigurationDefaultSpace_200_response_inner_mappings_inner - Up

    action_type (optional)
    @@ -2795,7 +4746,7 @@ Any modifications made to this file will be overwritten.
    -

    getCaseConfiguration_200_response_inner_updated_by - Up

    +

    getCaseConfigurationDefaultSpace_200_response_inner_updated_by - Up

    email (optional)
    @@ -2805,7 +4756,7 @@ Any modifications made to this file will be overwritten.
    -

    getCaseStatus_200_response - Up

    +

    getCaseStatusDefaultSpace_200_response - Up

    count_closed_cases (optional)
    @@ -2814,7 +4765,7 @@ Any modifications made to this file will be overwritten.
    -

    getCasesByAlert_200_response_inner - Up

    +

    getCasesByAlertDefaultSpace_200_response_inner - Up

    id (optional)
    String The case identifier.
    @@ -2995,23 +4946,23 @@ Any modifications made to this file will be overwritten.
    -

    search_fields - Up

    +

    searchFieldsType - Up

    The fields to perform the simple_query_string parsed query against.
    -

    setCaseConfiguration_request - Up

    -
    +

    set_case_configuration_request - Set case configuration request Up

    +
    External connection details, such as the closure type and default connector for cases.
    -

    setCaseConfiguration_request_connector - Up

    +

    set_case_configuration_request_connector - Up

    An object that contains the connector configuration.
    fields
    Object The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to null.
    @@ -3021,7 +4972,7 @@ Any modifications made to this file will be overwritten.
    -

    setCaseConfiguration_request_settings - Up

    +

    set_case_configuration_request_settings - Up

    An object that contains the case settings.
    syncAlerts
    Boolean Turns alert syncing on or off.
    @@ -3046,15 +4997,6 @@ Any modifications made to this file will be overwritten.
    -
    -

    updateCaseConfiguration_request - Up

    -
    -
    -
    closure_type (optional)
    -
    connector (optional)
    -
    version
    String The version of the connector. To retrieve the version value, use the get configuration API.
    -
    -

    update_alert_comment_request_properties - Update case comment request properties for alerts Up

    Defines properties for case comment requests when type is alert.
    @@ -3086,6 +5028,15 @@ Any modifications made to this file will be overwritten.
    comment
    String The new comment. It is required only when type is user.
    +
    +

    update_case_configuration_request - Update case configuration request Up

    +
    External connection details, such as the closure type and default connector for cases.
    +
    +
    closure_type (optional)
    +
    connector (optional)
    +
    version
    String The version of the connector. To retrieve the version value, use the get configuration API.
    +
    +

    update_case_request - Update case request Up

    The update case API request body varies depending on the type of connector.
    diff --git a/x-pack/plugins/cases/docs/openapi/bundled.json b/x-pack/plugins/cases/docs/openapi/bundled.json index 78ba5444f40aa..c025e43dc9044 100644 --- a/x-pack/plugins/cases/docs/openapi/bundled.json +++ b/x-pack/plugins/cases/docs/openapi/bundled.json @@ -25,6 +25,1814 @@ } ], "paths": { + "/api/cases": { + "post": { + "summary": "Creates a case in the default space.", + "operationId": "createCaseDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/create_case_request" + }, + "examples": { + "createCaseRequest": { + "$ref": "#/components/examples/create_case_request" + } + } + } + } + }, + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/case_response_properties" + }, + "examples": { + "createCaseResponse": { + "$ref": "#/components/examples/create_case_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "delete": { + "summary": "Deletes one or more cases in the default space.", + "operationId": "deleteCaseDefaultSpace", + "description": "You must have `read` or `all` privileges and the `delete` sub-feature privilege for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/ids" + } + ], + "responses": { + "204": { + "description": "Indicates a successful call." + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "patch": { + "summary": "Updates one or more cases in the default space.", + "operationId": "updateCaseDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/update_case_request" + }, + "examples": { + "updateCaseRequest": { + "$ref": "#/components/examples/update_case_request" + } + } + } + } + }, + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/case_response_properties" + } + }, + "examples": { + "updateCaseResponse": { + "$ref": "#/components/examples/update_case_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/_find": { + "get": { + "summary": "Retrieves a paginated subset of cases in the default space.", + "operationId": "findCasesDefaultSpace", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/assignees" + }, + { + "$ref": "#/components/parameters/category" + }, + { + "$ref": "#/components/parameters/defaultSearchOperator" + }, + { + "$ref": "#/components/parameters/from" + }, + { + "$ref": "#/components/parameters/owner" + }, + { + "$ref": "#/components/parameters/page_index" + }, + { + "$ref": "#/components/parameters/page_size" + }, + { + "$ref": "#/components/parameters/reporters" + }, + { + "$ref": "#/components/parameters/search" + }, + { + "$ref": "#/components/parameters/searchFields" + }, + { + "$ref": "#/components/parameters/severity" + }, + { + "$ref": "#/components/parameters/sortField" + }, + { + "$ref": "#/components/parameters/sort_order" + }, + { + "$ref": "#/components/parameters/status" + }, + { + "$ref": "#/components/parameters/tags" + }, + { + "$ref": "#/components/parameters/to" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cases": { + "type": "array", + "items": { + "$ref": "#/components/schemas/case_response_properties" + } + }, + "count_closed_cases": { + "type": "integer" + }, + "count_in_progress_cases": { + "type": "integer" + }, + "count_open_cases": { + "type": "integer" + }, + "page": { + "type": "integer" + }, + "per_page": { + "type": "integer" + }, + "total": { + "type": "integer" + } + } + }, + "examples": { + "findCaseResponse": { + "$ref": "#/components/examples/find_case_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/alerts/{alertId}": { + "get": { + "summary": "Returns the cases associated with a specific alert in the default space.", + "operationId": "getCasesByAlertDefaultSpace", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "x-technical-preview": true, + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/alert_id" + }, + { + "$ref": "#/components/parameters/owner" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The case identifier." + }, + "title": { + "type": "string", + "description": "The case title." + } + } + }, + "example": [ + { + "id": "06116b80-e1c3-11ec-be9b-9b1838238ee6", + "title": "security_case" + } + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601s" + } + ] + }, + "/api/cases/configure": { + "get": { + "summary": "Retrieves external connection details, such as the closure type and default connector for cases in the default space.", + "operationId": "getCaseConfigurationDefaultSpace", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case configuration.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/owner" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "closure_type": { + "$ref": "#/components/schemas/closure_types" + }, + "connector": { + "type": "object", + "properties": { + "fields": { + "description": "The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`.", + "nullable": true, + "type": "object" + }, + "id": { + "description": "The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2022-06-01T17:07:17.767Z" + }, + "created_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null, + "nullable": true + }, + "full_name": { + "type": "string", + "example": null, + "nullable": true + }, + "username": { + "type": "string", + "example": "elastic", + "nullable": true + }, + "profile_uid": { + "type": "string", + "example": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0" + } + } + }, + "error": { + "type": "string", + "nullable": true, + "example": null + }, + "id": { + "type": "string", + "example": "4a97a440-e1cd-11ec-be9b-9b1838238ee6" + }, + "mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action_type": { + "type": "string", + "example": "overwrite" + }, + "source": { + "type": "string", + "example": "title" + }, + "target": { + "type": "string", + "example": "summary" + } + } + } + }, + "owner": { + "$ref": "#/components/schemas/owners" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": "2022-06-01T19:58:48.169Z" + }, + "updated_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null, + "nullable": true + }, + "full_name": { + "type": "string", + "example": null, + "nullable": true + }, + "username": { + "type": "string", + "example": "elastic", + "nullable": true + }, + "profile_uid": { + "type": "string", + "example": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0" + } + }, + "nullable": true + }, + "version": { + "type": "string", + "example": "WzIwNzMsMV0=" + } + } + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "post": { + "summary": "Sets external connection details, such as the closure type and default connector for cases in the default space.", + "operationId": "setCaseConfigurationDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case configuration. Connectors are used to interface with external systems. You must create a connector before you can use it in your cases. Refer to the add connectors API. If you set a default connector, it is automatically selected when you create cases in Kibana. If you use the create case API, however, you must still specify all of the connector details.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/set_case_configuration_request" + }, + "examples": { + "setCaseConfigRequest": { + "$ref": "#/components/examples/set_case_configuration_request" + } + } + } + } + }, + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "closure_type": { + "$ref": "#/components/schemas/closure_types" + }, + "connector": { + "type": "object", + "properties": { + "fields": { + "description": "The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`.", + "nullable": true, + "type": "object" + }, + "id": { + "description": "The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2022-06-01T17:07:17.767Z" + }, + "created_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null, + "nullable": true + }, + "full_name": { + "type": "string", + "example": null, + "nullable": true + }, + "username": { + "type": "string", + "example": "elastic", + "nullable": true + }, + "profile_uid": { + "type": "string", + "example": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0" + } + } + }, + "error": { + "type": "string", + "nullable": true, + "example": null + }, + "id": { + "type": "string", + "example": "4a97a440-e1cd-11ec-be9b-9b1838238ee6" + }, + "mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action_type": { + "type": "string", + "example": "overwrite" + }, + "source": { + "type": "string", + "example": "title" + }, + "target": { + "type": "string", + "example": "summary" + } + } + } + }, + "owner": { + "$ref": "#/components/schemas/owners" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": "2022-06-01T19:58:48.169Z" + }, + "updated_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null, + "nullable": true + }, + "full_name": { + "type": "string", + "example": null, + "nullable": true + }, + "username": { + "type": "string", + "example": "elastic", + "nullable": true + }, + "profile_uid": { + "type": "string", + "example": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0" + } + }, + "nullable": true + }, + "version": { + "type": "string", + "example": "WzIwNzMsMV0=" + } + } + }, + "examples": { + "setCaseConfigResponse": { + "$ref": "#/components/examples/set_case_configuration_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/configure/{configurationId}": { + "patch": { + "summary": "Updates external connection details, such as the closure type and default connector for cases in the default space.", + "operationId": "updateCaseConfigurationDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case configuration. Connectors are used to interface with external systems. You must create a connector before you can use it in your cases. Refer to the add connectors API.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/configuration_id" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/update_case_configuration_request" + } + } + } + }, + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "closure_type": { + "$ref": "#/components/schemas/closure_types" + }, + "connector": { + "type": "object", + "properties": { + "fields": { + "description": "The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`.", + "nullable": true, + "type": "object" + }, + "id": { + "description": "The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2022-06-01T17:07:17.767Z" + }, + "created_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null, + "nullable": true + }, + "full_name": { + "type": "string", + "example": null, + "nullable": true + }, + "username": { + "type": "string", + "example": "elastic", + "nullable": true + }, + "profile_uid": { + "type": "string", + "example": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0" + } + } + }, + "error": { + "type": "string", + "nullable": true, + "example": null + }, + "id": { + "type": "string", + "example": "4a97a440-e1cd-11ec-be9b-9b1838238ee6" + }, + "mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action_type": { + "type": "string", + "example": "overwrite" + }, + "source": { + "type": "string", + "example": "title" + }, + "target": { + "type": "string", + "example": "summary" + } + } + } + }, + "owner": { + "$ref": "#/components/schemas/owners" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": "2022-06-01T19:58:48.169Z" + }, + "updated_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null, + "nullable": true + }, + "full_name": { + "type": "string", + "example": null, + "nullable": true + }, + "username": { + "type": "string", + "example": "elastic", + "nullable": true + }, + "profile_uid": { + "type": "string", + "example": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0" + } + }, + "nullable": true + }, + "version": { + "type": "string", + "example": "WzIwNzMsMV0=" + } + } + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/reporters": { + "get": { + "summary": "Returns information about the users who opened cases in the default space.", + "operationId": "getCaseReportersDefaultSpace", + "description": "You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases. The API returns information about the users as they existed at the time of the case creation, including their name, full name, and email address. If any of those details change thereafter or if a user is deleted, the information returned by this API is unchanged.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/owner" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null, + "nullable": true + }, + "full_name": { + "type": "string", + "example": null, + "nullable": true + }, + "username": { + "type": "string", + "example": "elastic", + "nullable": true + }, + "profile_uid": { + "type": "string", + "example": "u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0" + } + } + } + }, + "examples": { + "getReportersResponse": { + "$ref": "#/components/examples/get_reporters_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/status": { + "get": { + "summary": "Returns the number of cases that are open, closed, and in progress in the default space.", + "operationId": "getCaseStatusDefaultSpace", + "description": "Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find cases API instead. You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "deprecated": true, + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/owner" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "count_closed_cases": { + "type": "integer" + }, + "count_in_progress_cases": { + "type": "integer" + }, + "count_open_cases": { + "type": "integer" + } + } + }, + "examples": { + "getStatusResponse": { + "$ref": "#/components/examples/get_status_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/tags": { + "get": { + "summary": "Aggregates and returns a list of case tags in the default space.", + "operationId": "getCaseTagsDefaultSpace", + "description": "You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/owner" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "examples": { + "getTagsResponse": { + "$ref": "#/components/examples/get_tags_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/{caseId}": { + "get": { + "summary": "Retrieves information about a case in the default space.", + "operationId": "getCaseDefaultSpace", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/case_id" + }, + { + "$ref": "#/components/parameters/includeComments" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/case_response_properties" + }, + "examples": { + "getCaseResponse": { + "$ref": "#/components/examples/get_case_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/{caseId}/alerts": { + "get": { + "summary": "Gets all alerts attached to a case in the default space.", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "x-technical-preview": true, + "operationId": "getCaseAlertsDefaultSpace", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/case_id" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/alert_response_properties" + } + }, + "examples": { + "getCaseAlertsResponse": { + "$ref": "#/components/examples/get_case_alerts_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/{caseId}/comments": { + "post": { + "summary": "Adds a comment or alert to a case in the default space.", + "operationId": "addCaseCommentDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating. NOTE: Each case can have a maximum of 1,000 alerts.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/case_id" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/add_case_comment_request" + }, + "examples": { + "createCaseCommentRequest": { + "$ref": "#/components/examples/add_comment_request" + } + } + } + } + }, + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/case_response_properties" + }, + "examples": { + "createCaseCommentResponse": { + "$ref": "#/components/examples/add_comment_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "delete": { + "summary": "Deletes all comments and alerts from a case in the default space.", + "operationId": "deleteCaseCommentsDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/case_id" + } + ], + "responses": { + "204": { + "description": "Indicates a successful call." + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "patch": { + "summary": "Updates a comment or alert in a case in the default space.", + "operationId": "updateCaseCommentDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating. NOTE: You cannot change the comment type or the owner of a comment.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/case_id" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/update_case_comment_request" + }, + "examples": { + "updateCaseCommentRequest": { + "$ref": "#/components/examples/update_comment_request" + } + } + } + } + }, + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/case_response_properties" + }, + "examples": { + "updateCaseCommentResponse": { + "$ref": "#/components/examples/update_comment_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "get": { + "summary": "Retrieves all the comments from a case in the default space.", + "operationId": "getAllCaseCommentsDefaultSpace", + "description": "Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; instead, use the get case comment API, which requires a comment identifier in the path. You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.\n", + "deprecated": true, + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/case_id" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/case_response_properties" + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/{caseId}/comments/{commentId}": { + "delete": { + "summary": "Deletes a comment or alert from a case in the default space.", + "operationId": "deleteCaseCommentDefaultSpace", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/case_id" + }, + { + "$ref": "#/components/parameters/comment_id" + } + ], + "responses": { + "204": { + "description": "Indicates a successful call." + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "get": { + "summary": "Retrieves a comment from a case in the default space.", + "operationId": "getCaseCommentDefaultSpace", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.\n", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/case_id" + }, + { + "$ref": "#/components/parameters/comment_id" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/alert_comment_response_properties" + }, + { + "$ref": "#/components/schemas/user_comment_response_properties" + } + ] + }, + "examples": { + "getCaseCommentResponse": { + "$ref": "#/components/examples/get_comment_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/{caseId}/connector/{connectorId}/_push": { + "post": { + "summary": "Pushes a case in the default space to an external service.", + "description": "You must have `all` privileges for the **Actions and Connectors** feature in the **Management** section of the Kibana feature privileges. You must also have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're pushing.\n", + "operationId": "pushCaseDefaultSpace", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/case_id" + }, + { + "$ref": "#/components/parameters/connector_id" + }, + { + "$ref": "#/components/parameters/kbn_xsrf" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "nullable": true + } + } + } + }, + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/case_response_properties" + }, + "examples": { + "pushCaseResponse": { + "$ref": "#/components/examples/push_case_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/{caseId}/user_actions": { + "get": { + "summary": "Returns all user activity for a case in the default space.", + "description": "Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find user actions API instead. You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking.\n", + "deprecated": true, + "operationId": "getCaseActivityDefaultSpace", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/case_id" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/user_actions_response_properties" + } + }, + "examples": { + "getCaseActivityResponse": { + "$ref": "#/components/examples/get_case_activity_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/{caseId}/user_actions/_find": { + "get": { + "summary": "Finds user activity for a case in the default space.", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking.\n", + "operationId": "findCaseActivityDefaultSpace", + "tags": [ + "cases" + ], + "parameters": [ + { + "$ref": "#/components/parameters/case_id" + }, + { + "$ref": "#/components/parameters/page_index" + }, + { + "$ref": "#/components/parameters/page_size" + }, + { + "$ref": "#/components/parameters/sort_order" + }, + { + "$ref": "#/components/parameters/user_action_types" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "page": { + "type": "integer" + }, + "perPage": { + "type": "integer" + }, + "total": { + "type": "integer" + }, + "userActions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/user_actions_find_response_properties" + } + } + } + }, + "examples": { + "findCaseActivityResponse": { + "$ref": "#/components/examples/find_case_activity_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/configure/connectors/_find": { + "get": { + "summary": "Retrieves information about connectors in the default space.", + "operationId": "findCaseConnectorsDefaultSpace", + "description": "In particular, only the connectors that are supported for use in cases are returned. You must have `read` privileges for the **Actions and Connectors** feature in the **Management** section of the Kibana feature privileges.\n", + "tags": [ + "cases" + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "actionTypeId": { + "$ref": "#/components/schemas/connector_types" + }, + "config": { + "type": "object", + "properties": { + "apiUrl": { + "type": "string" + }, + "projectKey": { + "type": "string" + } + }, + "additionalProperties": true + }, + "id": { + "type": "string" + }, + "isDeprecated": { + "type": "boolean" + }, + "isMissingSecrets": { + "type": "boolean" + }, + "isPreconfigured": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "referencedByCount": { + "type": "integer" + } + } + } + }, + "examples": { + "findConnectorResponse": { + "$ref": "#/components/examples/find_connector_response" + } + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/4xx_response" + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, "/s/{spaceId}/api/cases": { "post": { "summary": "Creates a case.", @@ -101,17 +1909,10 @@ "$ref": "#/components/parameters/kbn_xsrf" }, { - "$ref": "#/components/parameters/space_id" + "$ref": "#/components/parameters/ids" }, { - "name": "ids", - "description": "The cases that you want to removed. All non-ASCII characters must be URL encoded.", - "in": "query", - "required": true, - "schema": { - "type": "string" - }, - "example": "d4e7abb0-b462-11ec-9a8d-698504725a43" + "$ref": "#/components/parameters/space_id" } ], "responses": { @@ -219,60 +2020,16 @@ "$ref": "#/components/parameters/space_id" }, { - "name": "assignees", - "in": "query", - "description": "Filters the returned cases by assignees. Valid values are `none` or unique identifiers for the user profiles. These identifiers can be found by using the suggest user profile API.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - } + "$ref": "#/components/parameters/assignees" }, { - "name": "category", - "in": "query", - "description": "Filters the returned cases by category. Limited to 100 categories.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "example": "my-category" + "$ref": "#/components/parameters/category" }, { - "name": "defaultSearchOperator", - "in": "query", - "description": "The default operator to use for the simple_query_string.", - "schema": { - "type": "string", - "default": "OR" - }, - "example": "OR" + "$ref": "#/components/parameters/defaultSearchOperator" }, { - "name": "from", - "in": "query", - "description": "[preview] Returns only cases that were created after a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.\n", - "schema": { - "type": "string" - }, - "example": "now-1d" + "$ref": "#/components/parameters/from" }, { "$ref": "#/components/parameters/owner" @@ -284,111 +2041,31 @@ "$ref": "#/components/parameters/page_size" }, { - "name": "reporters", - "in": "query", - "description": "Filters the returned cases by the user name of the reporter.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "example": "elastic" + "$ref": "#/components/parameters/reporters" }, { - "name": "search", - "in": "query", - "description": "An Elasticsearch simple_query_string query that filters the objects in the response.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/search" }, { - "name": "searchFields", - "in": "query", - "description": "The fields to perform the simple_query_string parsed query against.", - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/search_fields" - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/search_fields" - } - } - ] - } + "$ref": "#/components/parameters/searchFields" }, { "$ref": "#/components/parameters/severity" }, { - "name": "sortField", - "in": "query", - "description": "Determines which field is used to sort the results.", - "schema": { - "type": "string", - "enum": [ - "createdAt", - "updatedAt" - ], - "default": "createdAt" - }, - "example": "updatedAt" + "$ref": "#/components/parameters/sortField" }, { "$ref": "#/components/parameters/sort_order" }, { - "name": "status", - "in": "query", - "description": "Filters the returned cases by state.", - "schema": { - "type": "string", - "enum": [ - "closed", - "in-progress", - "open" - ] - }, - "example": "open" + "$ref": "#/components/parameters/status" }, { - "name": "tags", - "in": "query", - "description": "Filters the returned cases by tags.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "example": "tag-1" + "$ref": "#/components/parameters/tags" }, { - "name": "to", - "in": "query", - "description": "[preview] Returns only cases that were created before a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.\n", - "schema": { - "type": "string" - }, - "example": "now+1d" + "$ref": "#/components/parameters/to" } ], "responses": { @@ -719,64 +2396,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "closure_type": { - "$ref": "#/components/schemas/closure_types" - }, - "connector": { - "description": "An object that contains the connector configuration.", - "type": "object", - "properties": { - "fields": { - "description": "The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`.", - "nullable": true, - "type": "object" - }, - "id": { - "description": "The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API.", - "type": "string", - "example": "none" - }, - "name": { - "description": "The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API.", - "type": "string", - "example": "none" - }, - "type": { - "$ref": "#/components/schemas/connector_types" - } - }, - "required": [ - "fields", - "id", - "name", - "type" - ] - }, - "owner": { - "$ref": "#/components/schemas/owners" - }, - "settings": { - "description": "An object that contains the case settings.", - "type": "object", - "properties": { - "syncAlerts": { - "description": "Turns alert syncing on or off.", - "type": "boolean", - "example": true - } - }, - "required": [ - "syncAlerts" - ] - } - }, - "required": [ - "closure_type", - "connector", - "owner" - ] + "$ref": "#/components/schemas/set_case_configuration_request" }, "examples": { "setCaseConfigRequest": { @@ -972,50 +2592,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "closure_type": { - "$ref": "#/components/schemas/closure_types" - }, - "connector": { - "description": "An object that contains the connector configuration.", - "type": "object", - "properties": { - "fields": { - "description": "The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`.", - "nullable": true, - "type": "object" - }, - "id": { - "description": "The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API.", - "type": "string", - "example": "none" - }, - "name": { - "description": "The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API.", - "type": "string", - "example": "none" - }, - "type": { - "$ref": "#/components/schemas/connector_types" - } - }, - "required": [ - "fields", - "id", - "name", - "type" - ] - }, - "version": { - "description": "The version of the connector. To retrieve the version value, use the get configuration API.\n", - "type": "string", - "example": "WzIwMiwxXQ==" - } - }, - "required": [ - "version" - ] + "$ref": "#/components/schemas/update_case_configuration_request" } } } @@ -1430,22 +3007,7 @@ "$ref": "#/components/parameters/space_id" }, { - "in": "query", - "name": "owner", - "description": "A filter to limit the retrieved case statistics to a specific set of applications. If this parameter is omitted, the response contains tags from all cases that the user has access to read.", - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/owners" - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/owners" - } - } - ] - } + "$ref": "#/components/parameters/owner" } ], "responses": { @@ -1506,14 +3068,7 @@ "$ref": "#/components/parameters/space_id" }, { - "in": "query", - "name": "includeComments", - "description": "Deprecated in 8.1.0. This parameter is deprecated and will be removed in a future release. It determines whether case comments are returned.", - "deprecated": true, - "schema": { - "type": "boolean", - "default": true - } + "$ref": "#/components/parameters/includeComments" } ], "responses": { @@ -2166,33 +3721,7 @@ "$ref": "#/components/parameters/sort_order" }, { - "name": "types", - "in": "query", - "description": "Determines the types of user actions to return.", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "action", - "alert", - "assignees", - "attachment", - "comment", - "connector", - "create_case", - "description", - "pushed", - "settings", - "severity", - "status", - "tags", - "title", - "user" - ] - } - }, - "example": "create_case" + "$ref": "#/components/parameters/user_action_types" } ], "responses": { @@ -2237,51 +3766,108 @@ } } } - } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + } + }, + "components": { + "securitySchemes": { + "basicAuth": { + "type": "http", + "scheme": "basic" + }, + "apiKeyAuth": { + "type": "apiKey", + "in": "header", + "name": "ApiKey" + } + }, + "parameters": { + "kbn_xsrf": { + "schema": { + "type": "string" + }, + "in": "header", + "name": "kbn-xsrf", + "description": "Cross-site request forgery protection", + "required": true + }, + "ids": { + "name": "ids", + "description": "The cases that you want to removed. All non-ASCII characters must be URL encoded.\n", + "in": "query", + "required": true, + "schema": { + "type": "string" + }, + "example": "d4e7abb0-b462-11ec-9a8d-698504725a43" + }, + "assignees": { + "in": "query", + "name": "assignees", + "description": "Filters the returned cases by assignees. Valid values are `none` or unique identifiers for the user profiles. These identifiers can be found by using the suggest user profile API.\n", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + } + }, + "category": { + "in": "query", + "name": "category", + "description": "Filters the returned cases by category.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "maxItems": 100 + } + ] }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - } - }, - "components": { - "securitySchemes": { - "basicAuth": { - "type": "http", - "scheme": "basic" + "example": "my-category" }, - "apiKeyAuth": { - "type": "apiKey", - "in": "header", - "name": "ApiKey" - } - }, - "parameters": { - "kbn_xsrf": { + "defaultSearchOperator": { + "in": "query", + "name": "defaultSearchOperator", + "description": "he default operator to use for the simple_query_string.", "schema": { - "type": "string" + "type": "string", + "default": "OR" }, - "in": "header", - "name": "kbn-xsrf", - "description": "Cross-site request forgery protection", - "required": true + "example": "OR" }, - "space_id": { - "in": "path", - "name": "spaceId", - "description": "An identifier for the space. If `/s/` and the identifier are omitted from the path, the default space is used.", - "required": true, + "from": { + "in": "query", + "name": "from", + "description": "[preview] Returns only cases that were created after a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.\n", "schema": { "type": "string", - "example": "default" + "example": "now-1d" } }, "owner": { @@ -2323,6 +3909,51 @@ "default": 20 } }, + "reporters": { + "in": "query", + "name": "reporters", + "description": "Filters the returned cases by the user name of the reporter.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "example": "elastic" + }, + "search": { + "in": "query", + "name": "search", + "description": "An Elasticsearch simple_query_string query that filters the objects in the response.", + "schema": { + "type": "string" + } + }, + "searchFields": { + "in": "query", + "name": "searchFields", + "description": "The fields to perform the simple_query_string parsed query against.", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/searchFieldsType" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/searchFieldsType" + } + } + ] + } + }, "severity": { "in": "query", "name": "severity", @@ -2337,6 +3968,20 @@ ] } }, + "sortField": { + "in": "query", + "name": "sortField", + "description": "Determines which field is used to sort the results.", + "schema": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt" + ], + "default": "createdAt" + }, + "example": "updatedAt" + }, "sort_order": { "in": "query", "name": "sortOrder", @@ -2351,6 +3996,48 @@ "default": "desc" } }, + "status": { + "in": "query", + "name": "status", + "description": "Filters the returned cases by state.", + "schema": { + "type": "string", + "enum": [ + "closed", + "in-progress", + "open" + ] + }, + "example": "open" + }, + "tags": { + "in": "query", + "name": "tags", + "description": "Filters the returned cases by tags.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "example": "tag-1" + }, + "to": { + "in": "query", + "name": "to", + "description": "[preview] Returns only cases that were created before a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.\n", + "schema": { + "type": "string" + }, + "example": "now+1d" + }, "alert_id": { "in": "path", "name": "alertId", @@ -2381,6 +4068,16 @@ "example": "9c235210-6834-11ea-a78c-6ffb38a34414" } }, + "includeComments": { + "in": "query", + "name": "includeComments", + "description": "Deprecated in 8.1.0. This parameter is deprecated and will be removed in a future release. It determines whether case comments are returned.", + "deprecated": true, + "schema": { + "type": "boolean", + "default": true + } + }, "comment_id": { "in": "path", "name": "commentId", @@ -2400,6 +4097,45 @@ "type": "string", "example": "abed3a70-71bd-11ea-a0b2-c51ea50a58e2" } + }, + "user_action_types": { + "in": "query", + "name": "types", + "description": "Determines the types of user actions to return.", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "action", + "alert", + "assignees", + "attachment", + "comment", + "connector", + "create_case", + "description", + "pushed", + "settings", + "severity", + "status", + "tags", + "title", + "user" + ] + } + }, + "example": "create_case" + }, + "space_id": { + "in": "path", + "name": "spaceId", + "description": "An identifier for the space. If `/s/` and the identifier are omitted from the path, the default space is used.", + "required": true, + "schema": { + "type": "string", + "example": "default" + } } }, "schemas": { @@ -3524,7 +5260,7 @@ } } }, - "search_fields": { + "searchFieldsType": { "type": "string", "description": "The fields to perform the `simple_query_string` parsed query against.", "enum": [ @@ -3578,6 +5314,116 @@ ], "example": ".none" }, + "set_case_configuration_request": { + "title": "Set case configuration request", + "description": "External connection details, such as the closure type and default connector for cases.", + "type": "object", + "required": [ + "closure_type", + "connector", + "owner" + ], + "properties": { + "closure_type": { + "$ref": "#/components/schemas/closure_types" + }, + "connector": { + "description": "An object that contains the connector configuration.", + "type": "object", + "properties": { + "fields": { + "description": "The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`.", + "nullable": true, + "type": "object" + }, + "id": { + "description": "The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + }, + "required": [ + "fields", + "id", + "name", + "type" + ] + }, + "owner": { + "$ref": "#/components/schemas/owners" + }, + "settings": { + "description": "An object that contains the case settings.", + "type": "object", + "properties": { + "syncAlerts": { + "description": "Turns alert syncing on or off.", + "type": "boolean", + "example": true + } + }, + "required": [ + "syncAlerts" + ] + } + } + }, + "update_case_configuration_request": { + "title": "Update case configuration request", + "description": "External connection details, such as the closure type and default connector for cases.", + "type": "object", + "required": [ + "version" + ], + "properties": { + "closure_type": { + "$ref": "#/components/schemas/closure_types" + }, + "connector": { + "description": "An object that contains the connector configuration.", + "type": "object", + "properties": { + "fields": { + "description": "The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`.", + "nullable": true, + "type": "object" + }, + "id": { + "description": "The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + }, + "required": [ + "fields", + "id", + "name", + "type" + ] + }, + "version": { + "description": "The version of the connector. To retrieve the version value, use the get configuration API.\n", + "type": "string", + "example": "WzIwMiwxXQ==" + } + } + }, "alert_response_properties": { "type": "object", "properties": { @@ -4752,24 +6598,6 @@ "id": "4a97a440-e1cd-11ec-be9b-9b1838238ee6" } }, - "find_connector_response": { - "summary": "Retrieve information about the connectors and their settings.", - "value": [ - { - "id": "61787f53-4eee-4741-8df6-8fe84fa616f7", - "actionTypeId": ".jira", - "name": "my-Jira", - "isMissingSecrets": false, - "config": { - "apiUrl": "https://elastic.atlassian.net/", - "projectKey": "ES" - }, - "isPreconfigured": false, - "isDeprecated": false, - "referencedByCount": 0 - } - ] - }, "get_reporters_response": { "summary": "A list of three users that opened cases", "value": [ @@ -5279,6 +7107,24 @@ } ] } + }, + "find_connector_response": { + "summary": "Retrieve information about the connectors and their settings.", + "value": [ + { + "id": "61787f53-4eee-4741-8df6-8fe84fa616f7", + "actionTypeId": ".jira", + "name": "my-Jira", + "isMissingSecrets": false, + "config": { + "apiUrl": "https://elastic.atlassian.net/", + "projectKey": "ES" + }, + "isPreconfigured": false, + "isDeprecated": false, + "referencedByCount": 0 + } + ] } } }, diff --git a/x-pack/plugins/cases/docs/openapi/bundled.yaml b/x-pack/plugins/cases/docs/openapi/bundled.yaml index 405cf4fb689f0..ecbe10114a053 100644 --- a/x-pack/plugins/cases/docs/openapi/bundled.yaml +++ b/x-pack/plugins/cases/docs/openapi/bundled.yaml @@ -15,6 +15,1110 @@ servers: - url: http://localhost:5601 description: local paths: + /api/cases: + post: + summary: Creates a case in the default space. + operationId: createCaseDefaultSpace + description: | + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating. + tags: + - cases + parameters: + - $ref: '#/components/parameters/kbn_xsrf' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/create_case_request' + examples: + createCaseRequest: + $ref: '#/components/examples/create_case_request' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '#/components/schemas/case_response_properties' + examples: + createCaseResponse: + $ref: '#/components/examples/create_case_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + delete: + summary: Deletes one or more cases in the default space. + operationId: deleteCaseDefaultSpace + description: | + You must have `read` or `all` privileges and the `delete` sub-feature privilege for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting. + tags: + - cases + parameters: + - $ref: '#/components/parameters/kbn_xsrf' + - $ref: '#/components/parameters/ids' + responses: + '204': + description: Indicates a successful call. + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + patch: + summary: Updates one or more cases in the default space. + operationId: updateCaseDefaultSpace + description: | + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating. + tags: + - cases + parameters: + - $ref: '#/components/parameters/kbn_xsrf' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/update_case_request' + examples: + updateCaseRequest: + $ref: '#/components/examples/update_case_request' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/case_response_properties' + examples: + updateCaseResponse: + $ref: '#/components/examples/update_case_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/_find: + get: + summary: Retrieves a paginated subset of cases in the default space. + operationId: findCasesDefaultSpace + description: | + You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking. + tags: + - cases + parameters: + - $ref: '#/components/parameters/assignees' + - $ref: '#/components/parameters/category' + - $ref: '#/components/parameters/defaultSearchOperator' + - $ref: '#/components/parameters/from' + - $ref: '#/components/parameters/owner' + - $ref: '#/components/parameters/page_index' + - $ref: '#/components/parameters/page_size' + - $ref: '#/components/parameters/reporters' + - $ref: '#/components/parameters/search' + - $ref: '#/components/parameters/searchFields' + - $ref: '#/components/parameters/severity' + - $ref: '#/components/parameters/sortField' + - $ref: '#/components/parameters/sort_order' + - $ref: '#/components/parameters/status' + - $ref: '#/components/parameters/tags' + - $ref: '#/components/parameters/to' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: object + properties: + cases: + type: array + items: + $ref: '#/components/schemas/case_response_properties' + count_closed_cases: + type: integer + count_in_progress_cases: + type: integer + count_open_cases: + type: integer + page: + type: integer + per_page: + type: integer + total: + type: integer + examples: + findCaseResponse: + $ref: '#/components/examples/find_case_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/alerts/{alertId}: + get: + summary: Returns the cases associated with a specific alert in the default space. + operationId: getCasesByAlertDefaultSpace + description: | + You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking. + x-technical-preview: true + tags: + - cases + parameters: + - $ref: '#/components/parameters/alert_id' + - $ref: '#/components/parameters/owner' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + description: The case identifier. + title: + type: string + description: The case title. + example: + - id: 06116b80-e1c3-11ec-be9b-9b1838238ee6 + title: security_case + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601s + /api/cases/configure: + get: + summary: Retrieves external connection details, such as the closure type and default connector for cases in the default space. + operationId: getCaseConfigurationDefaultSpace + description: | + You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case configuration. + tags: + - cases + parameters: + - $ref: '#/components/parameters/owner' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: object + properties: + closure_type: + $ref: '#/components/schemas/closure_types' + connector: + type: object + properties: + fields: + description: The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`. + nullable: true + type: object + id: + description: The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API. + type: string + example: none + name: + description: The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API. + type: string + example: none + type: + $ref: '#/components/schemas/connector_types' + created_at: + type: string + format: date-time + example: '2022-06-01T17:07:17.767Z' + created_by: + type: object + properties: + email: + type: string + example: null + nullable: true + full_name: + type: string + example: null + nullable: true + username: + type: string + example: elastic + nullable: true + profile_uid: + type: string + example: u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0 + error: + type: string + nullable: true + example: null + id: + type: string + example: 4a97a440-e1cd-11ec-be9b-9b1838238ee6 + mappings: + type: array + items: + type: object + properties: + action_type: + type: string + example: overwrite + source: + type: string + example: title + target: + type: string + example: summary + owner: + $ref: '#/components/schemas/owners' + updated_at: + type: string + format: date-time + nullable: true + example: '2022-06-01T19:58:48.169Z' + updated_by: + type: object + properties: + email: + type: string + example: null + nullable: true + full_name: + type: string + example: null + nullable: true + username: + type: string + example: elastic + nullable: true + profile_uid: + type: string + example: u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0 + nullable: true + version: + type: string + example: WzIwNzMsMV0= + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + post: + summary: Sets external connection details, such as the closure type and default connector for cases in the default space. + operationId: setCaseConfigurationDefaultSpace + description: | + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case configuration. Connectors are used to interface with external systems. You must create a connector before you can use it in your cases. Refer to the add connectors API. If you set a default connector, it is automatically selected when you create cases in Kibana. If you use the create case API, however, you must still specify all of the connector details. + tags: + - cases + parameters: + - $ref: '#/components/parameters/kbn_xsrf' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/set_case_configuration_request' + examples: + setCaseConfigRequest: + $ref: '#/components/examples/set_case_configuration_request' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: object + properties: + closure_type: + $ref: '#/components/schemas/closure_types' + connector: + type: object + properties: + fields: + description: The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`. + nullable: true + type: object + id: + description: The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API. + type: string + example: none + name: + description: The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API. + type: string + example: none + type: + $ref: '#/components/schemas/connector_types' + created_at: + type: string + format: date-time + example: '2022-06-01T17:07:17.767Z' + created_by: + type: object + properties: + email: + type: string + example: null + nullable: true + full_name: + type: string + example: null + nullable: true + username: + type: string + example: elastic + nullable: true + profile_uid: + type: string + example: u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0 + error: + type: string + nullable: true + example: null + id: + type: string + example: 4a97a440-e1cd-11ec-be9b-9b1838238ee6 + mappings: + type: array + items: + type: object + properties: + action_type: + type: string + example: overwrite + source: + type: string + example: title + target: + type: string + example: summary + owner: + $ref: '#/components/schemas/owners' + updated_at: + type: string + format: date-time + nullable: true + example: '2022-06-01T19:58:48.169Z' + updated_by: + type: object + properties: + email: + type: string + example: null + nullable: true + full_name: + type: string + example: null + nullable: true + username: + type: string + example: elastic + nullable: true + profile_uid: + type: string + example: u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0 + nullable: true + version: + type: string + example: WzIwNzMsMV0= + examples: + setCaseConfigResponse: + $ref: '#/components/examples/set_case_configuration_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/configure/{configurationId}: + patch: + summary: Updates external connection details, such as the closure type and default connector for cases in the default space. + operationId: updateCaseConfigurationDefaultSpace + description: | + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case configuration. Connectors are used to interface with external systems. You must create a connector before you can use it in your cases. Refer to the add connectors API. + tags: + - cases + parameters: + - $ref: '#/components/parameters/kbn_xsrf' + - $ref: '#/components/parameters/configuration_id' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/update_case_configuration_request' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: object + properties: + closure_type: + $ref: '#/components/schemas/closure_types' + connector: + type: object + properties: + fields: + description: The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`. + nullable: true + type: object + id: + description: The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API. + type: string + example: none + name: + description: The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API. + type: string + example: none + type: + $ref: '#/components/schemas/connector_types' + created_at: + type: string + format: date-time + example: '2022-06-01T17:07:17.767Z' + created_by: + type: object + properties: + email: + type: string + example: null + nullable: true + full_name: + type: string + example: null + nullable: true + username: + type: string + example: elastic + nullable: true + profile_uid: + type: string + example: u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0 + error: + type: string + nullable: true + example: null + id: + type: string + example: 4a97a440-e1cd-11ec-be9b-9b1838238ee6 + mappings: + type: array + items: + type: object + properties: + action_type: + type: string + example: overwrite + source: + type: string + example: title + target: + type: string + example: summary + owner: + $ref: '#/components/schemas/owners' + updated_at: + type: string + format: date-time + nullable: true + example: '2022-06-01T19:58:48.169Z' + updated_by: + type: object + properties: + email: + type: string + example: null + nullable: true + full_name: + type: string + example: null + nullable: true + username: + type: string + example: elastic + nullable: true + profile_uid: + type: string + example: u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0 + nullable: true + version: + type: string + example: WzIwNzMsMV0= + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/reporters: + get: + summary: Returns information about the users who opened cases in the default space. + operationId: getCaseReportersDefaultSpace + description: | + You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases. The API returns information about the users as they existed at the time of the case creation, including their name, full name, and email address. If any of those details change thereafter or if a user is deleted, the information returned by this API is unchanged. + tags: + - cases + parameters: + - $ref: '#/components/parameters/owner' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: object + properties: + email: + type: string + example: null + nullable: true + full_name: + type: string + example: null + nullable: true + username: + type: string + example: elastic + nullable: true + profile_uid: + type: string + example: u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0 + examples: + getReportersResponse: + $ref: '#/components/examples/get_reporters_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/status: + get: + summary: Returns the number of cases that are open, closed, and in progress in the default space. + operationId: getCaseStatusDefaultSpace + description: | + Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find cases API instead. You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking. + deprecated: true + tags: + - cases + parameters: + - $ref: '#/components/parameters/owner' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: object + properties: + count_closed_cases: + type: integer + count_in_progress_cases: + type: integer + count_open_cases: + type: integer + examples: + getStatusResponse: + $ref: '#/components/examples/get_status_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/tags: + get: + summary: Aggregates and returns a list of case tags in the default space. + operationId: getCaseTagsDefaultSpace + description: | + You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking. + tags: + - cases + parameters: + - $ref: '#/components/parameters/owner' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: string + examples: + getTagsResponse: + $ref: '#/components/examples/get_tags_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/{caseId}: + get: + summary: Retrieves information about a case in the default space. + operationId: getCaseDefaultSpace + description: | + You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking. + tags: + - cases + parameters: + - $ref: '#/components/parameters/case_id' + - $ref: '#/components/parameters/includeComments' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '#/components/schemas/case_response_properties' + examples: + getCaseResponse: + $ref: '#/components/examples/get_case_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/{caseId}/alerts: + get: + summary: Gets all alerts attached to a case in the default space. + description: | + You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking. + x-technical-preview: true + operationId: getCaseAlertsDefaultSpace + tags: + - cases + parameters: + - $ref: '#/components/parameters/case_id' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/alert_response_properties' + examples: + getCaseAlertsResponse: + $ref: '#/components/examples/get_case_alerts_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/{caseId}/comments: + post: + summary: Adds a comment or alert to a case in the default space. + operationId: addCaseCommentDefaultSpace + description: | + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating. NOTE: Each case can have a maximum of 1,000 alerts. + tags: + - cases + parameters: + - $ref: '#/components/parameters/kbn_xsrf' + - $ref: '#/components/parameters/case_id' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/add_case_comment_request' + examples: + createCaseCommentRequest: + $ref: '#/components/examples/add_comment_request' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '#/components/schemas/case_response_properties' + examples: + createCaseCommentResponse: + $ref: '#/components/examples/add_comment_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + delete: + summary: Deletes all comments and alerts from a case in the default space. + operationId: deleteCaseCommentsDefaultSpace + description: | + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting. + tags: + - cases + parameters: + - $ref: '#/components/parameters/kbn_xsrf' + - $ref: '#/components/parameters/case_id' + responses: + '204': + description: Indicates a successful call. + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + patch: + summary: Updates a comment or alert in a case in the default space. + operationId: updateCaseCommentDefaultSpace + description: | + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating. NOTE: You cannot change the comment type or the owner of a comment. + tags: + - cases + parameters: + - $ref: '#/components/parameters/kbn_xsrf' + - $ref: '#/components/parameters/case_id' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/update_case_comment_request' + examples: + updateCaseCommentRequest: + $ref: '#/components/examples/update_comment_request' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '#/components/schemas/case_response_properties' + examples: + updateCaseCommentResponse: + $ref: '#/components/examples/update_comment_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + get: + summary: Retrieves all the comments from a case in the default space. + operationId: getAllCaseCommentsDefaultSpace + description: | + Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; instead, use the get case comment API, which requires a comment identifier in the path. You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking. + deprecated: true + tags: + - cases + parameters: + - $ref: '#/components/parameters/case_id' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '#/components/schemas/case_response_properties' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/{caseId}/comments/{commentId}: + delete: + summary: Deletes a comment or alert from a case in the default space. + operationId: deleteCaseCommentDefaultSpace + description: | + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting. + tags: + - cases + parameters: + - $ref: '#/components/parameters/kbn_xsrf' + - $ref: '#/components/parameters/case_id' + - $ref: '#/components/parameters/comment_id' + responses: + '204': + description: Indicates a successful call. + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + get: + summary: Retrieves a comment from a case in the default space. + operationId: getCaseCommentDefaultSpace + description: | + You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking. + tags: + - cases + parameters: + - $ref: '#/components/parameters/case_id' + - $ref: '#/components/parameters/comment_id' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/alert_comment_response_properties' + - $ref: '#/components/schemas/user_comment_response_properties' + examples: + getCaseCommentResponse: + $ref: '#/components/examples/get_comment_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/{caseId}/connector/{connectorId}/_push: + post: + summary: Pushes a case in the default space to an external service. + description: | + You must have `all` privileges for the **Actions and Connectors** feature in the **Management** section of the Kibana feature privileges. You must also have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're pushing. + operationId: pushCaseDefaultSpace + tags: + - cases + parameters: + - $ref: '#/components/parameters/case_id' + - $ref: '#/components/parameters/connector_id' + - $ref: '#/components/parameters/kbn_xsrf' + requestBody: + content: + application/json: + schema: + type: object + nullable: true + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '#/components/schemas/case_response_properties' + examples: + pushCaseResponse: + $ref: '#/components/examples/push_case_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/{caseId}/user_actions: + get: + summary: Returns all user activity for a case in the default space. + description: | + Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find user actions API instead. You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking. + deprecated: true + operationId: getCaseActivityDefaultSpace + tags: + - cases + parameters: + - $ref: '#/components/parameters/case_id' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/user_actions_response_properties' + examples: + getCaseActivityResponse: + $ref: '#/components/examples/get_case_activity_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/{caseId}/user_actions/_find: + get: + summary: Finds user activity for a case in the default space. + description: | + You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking. + operationId: findCaseActivityDefaultSpace + tags: + - cases + parameters: + - $ref: '#/components/parameters/case_id' + - $ref: '#/components/parameters/page_index' + - $ref: '#/components/parameters/page_size' + - $ref: '#/components/parameters/sort_order' + - $ref: '#/components/parameters/user_action_types' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: object + properties: + page: + type: integer + perPage: + type: integer + total: + type: integer + userActions: + type: array + items: + $ref: '#/components/schemas/user_actions_find_response_properties' + examples: + findCaseActivityResponse: + $ref: '#/components/examples/find_case_activity_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 + /api/cases/configure/connectors/_find: + get: + summary: Retrieves information about connectors in the default space. + operationId: findCaseConnectorsDefaultSpace + description: | + In particular, only the connectors that are supported for use in cases are returned. You must have `read` privileges for the **Actions and Connectors** feature in the **Management** section of the Kibana feature privileges. + tags: + - cases + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: object + properties: + actionTypeId: + $ref: '#/components/schemas/connector_types' + config: + type: object + properties: + apiUrl: + type: string + projectKey: + type: string + additionalProperties: true + id: + type: string + isDeprecated: + type: boolean + isMissingSecrets: + type: boolean + isPreconfigured: + type: boolean + name: + type: string + referencedByCount: + type: integer + examples: + findConnectorResponse: + $ref: '#/components/examples/find_connector_response' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/4xx_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 /s/{spaceId}/api/cases: post: summary: Creates a case. @@ -62,14 +1166,8 @@ paths: - cases parameters: - $ref: '#/components/parameters/kbn_xsrf' + - $ref: '#/components/parameters/ids' - $ref: '#/components/parameters/space_id' - - name: ids - description: The cases that you want to removed. All non-ASCII characters must be URL encoded. - in: query - required: true - schema: - type: string - example: d4e7abb0-b462-11ec-9a8d-698504725a43 responses: '204': description: Indicates a successful call. @@ -131,105 +1229,22 @@ paths: - cases parameters: - $ref: '#/components/parameters/space_id' - - name: assignees - in: query - description: Filters the returned cases by assignees. Valid values are `none` or unique identifiers for the user profiles. These identifiers can be found by using the suggest user profile API. - schema: - oneOf: - - type: string - - type: array - items: - type: string - - name: category - in: query - description: Filters the returned cases by category. Limited to 100 categories. - schema: - oneOf: - - type: string - - type: array - items: - type: string - example: my-category - - name: defaultSearchOperator - in: query - description: The default operator to use for the simple_query_string. - schema: - type: string - default: OR - example: OR - - name: from - in: query - description: | - [preview] Returns only cases that were created after a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. - schema: - type: string - example: now-1d + - $ref: '#/components/parameters/assignees' + - $ref: '#/components/parameters/category' + - $ref: '#/components/parameters/defaultSearchOperator' + - $ref: '#/components/parameters/from' - $ref: '#/components/parameters/owner' - $ref: '#/components/parameters/page_index' - $ref: '#/components/parameters/page_size' - - name: reporters - in: query - description: Filters the returned cases by the user name of the reporter. - schema: - oneOf: - - type: string - - type: array - items: - type: string - example: elastic - - name: search - in: query - description: An Elasticsearch simple_query_string query that filters the objects in the response. - schema: - type: string - - name: searchFields - in: query - description: The fields to perform the simple_query_string parsed query against. - schema: - oneOf: - - $ref: '#/components/schemas/search_fields' - - type: array - items: - $ref: '#/components/schemas/search_fields' + - $ref: '#/components/parameters/reporters' + - $ref: '#/components/parameters/search' + - $ref: '#/components/parameters/searchFields' - $ref: '#/components/parameters/severity' - - name: sortField - in: query - description: Determines which field is used to sort the results. - schema: - type: string - enum: - - createdAt - - updatedAt - default: createdAt - example: updatedAt + - $ref: '#/components/parameters/sortField' - $ref: '#/components/parameters/sort_order' - - name: status - in: query - description: Filters the returned cases by state. - schema: - type: string - enum: - - closed - - in-progress - - open - example: open - - name: tags - in: query - description: Filters the returned cases by tags. - schema: - oneOf: - - type: string - - type: array - items: - type: string - example: tag-1 - - name: to - in: query - description: | - [preview] Returns only cases that were created before a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. - schema: - type: string - example: now+1d + - $ref: '#/components/parameters/status' + - $ref: '#/components/parameters/tags' + - $ref: '#/components/parameters/to' responses: '200': description: Indicates a successful call. @@ -443,49 +1458,7 @@ paths: content: application/json: schema: - type: object - properties: - closure_type: - $ref: '#/components/schemas/closure_types' - connector: - description: An object that contains the connector configuration. - type: object - properties: - fields: - description: The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`. - nullable: true - type: object - id: - description: The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API. - type: string - example: none - name: - description: The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API. - type: string - example: none - type: - $ref: '#/components/schemas/connector_types' - required: - - fields - - id - - name - - type - owner: - $ref: '#/components/schemas/owners' - settings: - description: An object that contains the case settings. - type: object - properties: - syncAlerts: - description: Turns alert syncing on or off. - type: boolean - example: true - required: - - syncAlerts - required: - - closure_type - - connector - - owner + $ref: '#/components/schemas/set_case_configuration_request' examples: setCaseConfigRequest: $ref: '#/components/examples/set_case_configuration_request' @@ -617,40 +1590,7 @@ paths: content: application/json: schema: - type: object - properties: - closure_type: - $ref: '#/components/schemas/closure_types' - connector: - description: An object that contains the connector configuration. - type: object - properties: - fields: - description: The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`. - nullable: true - type: object - id: - description: The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API. - type: string - example: none - name: - description: The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API. - type: string - example: none - type: - $ref: '#/components/schemas/connector_types' - required: - - fields - - id - - name - - type - version: - description: | - The version of the connector. To retrieve the version value, use the get configuration API. - type: string - example: WzIwMiwxXQ== - required: - - version + $ref: '#/components/schemas/update_case_configuration_request' responses: '200': description: Indicates a successful call. @@ -915,15 +1855,7 @@ paths: - cases parameters: - $ref: '#/components/parameters/space_id' - - in: query - name: owner - description: A filter to limit the retrieved case statistics to a specific set of applications. If this parameter is omitted, the response contains tags from all cases that the user has access to read. - schema: - oneOf: - - $ref: '#/components/schemas/owners' - - type: array - items: - $ref: '#/components/schemas/owners' + - $ref: '#/components/parameters/owner' responses: '200': description: Indicates a successful call. @@ -957,13 +1889,7 @@ paths: parameters: - $ref: '#/components/parameters/case_id' - $ref: '#/components/parameters/space_id' - - in: query - name: includeComments - description: Deprecated in 8.1.0. This parameter is deprecated and will be removed in a future release. It determines whether case comments are returned. - deprecated: true - schema: - type: boolean - default: true + - $ref: '#/components/parameters/includeComments' responses: '200': description: Indicates a successful call. @@ -1328,30 +2254,7 @@ paths: example: '1' - $ref: '#/components/parameters/page_size' - $ref: '#/components/parameters/sort_order' - - name: types - in: query - description: Determines the types of user actions to return. - schema: - type: array - items: - type: string - enum: - - action - - alert - - assignees - - attachment - - comment - - connector - - create_case - - description - - pushed - - settings - - severity - - status - - tags - - title - - user - example: create_case + - $ref: '#/components/parameters/user_action_types' responses: '200': description: Indicates a successful call. @@ -1400,14 +2303,54 @@ components: name: kbn-xsrf description: Cross-site request forgery protection required: true - space_id: - in: path - name: spaceId - description: An identifier for the space. If `/s/` and the identifier are omitted from the path, the default space is used. + ids: + name: ids + description: | + The cases that you want to removed. All non-ASCII characters must be URL encoded. + in: query required: true schema: type: string - example: default + example: d4e7abb0-b462-11ec-9a8d-698504725a43 + assignees: + in: query + name: assignees + description: | + Filters the returned cases by assignees. Valid values are `none` or unique identifiers for the user profiles. These identifiers can be found by using the suggest user profile API. + schema: + oneOf: + - type: string + - type: array + items: + type: string + category: + in: query + name: category + description: Filters the returned cases by category. + schema: + oneOf: + - type: string + - type: array + items: + type: string + maxItems: 100 + example: my-category + defaultSearchOperator: + in: query + name: defaultSearchOperator + description: he default operator to use for the simple_query_string. + schema: + type: string + default: OR + example: OR + from: + in: query + name: from + description: | + [preview] Returns only cases that were created after a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. + schema: + type: string + example: now-1d owner: in: query name: owner @@ -1436,6 +2379,33 @@ components: schema: type: integer default: 20 + reporters: + in: query + name: reporters + description: Filters the returned cases by the user name of the reporter. + schema: + oneOf: + - type: string + - type: array + items: + type: string + example: elastic + search: + in: query + name: search + description: An Elasticsearch simple_query_string query that filters the objects in the response. + schema: + type: string + searchFields: + in: query + name: searchFields + description: The fields to perform the simple_query_string parsed query against. + schema: + oneOf: + - $ref: '#/components/schemas/searchFieldsType' + - type: array + items: + $ref: '#/components/schemas/searchFieldsType' severity: in: query name: severity @@ -1447,6 +2417,17 @@ components: - high - low - medium + sortField: + in: query + name: sortField + description: Determines which field is used to sort the results. + schema: + type: string + enum: + - createdAt + - updatedAt + default: createdAt + example: updatedAt sort_order: in: query name: sortOrder @@ -1458,6 +2439,36 @@ components: - asc - desc default: desc + status: + in: query + name: status + description: Filters the returned cases by state. + schema: + type: string + enum: + - closed + - in-progress + - open + example: open + tags: + in: query + name: tags + description: Filters the returned cases by tags. + schema: + oneOf: + - type: string + - type: array + items: + type: string + example: tag-1 + to: + in: query + name: to + description: | + [preview] Returns only cases that were created before a specific date. The date must be specified as a KQL data range or date match expression. This functionality is in technical preview and may be changed or removed in a future release. Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. + schema: + type: string + example: now+1d alert_id: in: path name: alertId @@ -1482,6 +2493,14 @@ components: schema: type: string example: 9c235210-6834-11ea-a78c-6ffb38a34414 + includeComments: + in: query + name: includeComments + description: Deprecated in 8.1.0. This parameter is deprecated and will be removed in a future release. It determines whether case comments are returned. + deprecated: true + schema: + type: boolean + default: true comment_id: in: path name: commentId @@ -1499,6 +2518,39 @@ components: schema: type: string example: abed3a70-71bd-11ea-a0b2-c51ea50a58e2 + user_action_types: + in: query + name: types + description: Determines the types of user actions to return. + schema: + type: array + items: + type: string + enum: + - action + - alert + - assignees + - attachment + - comment + - connector + - create_case + - description + - pushed + - settings + - severity + - status + - tags + - title + - user + example: create_case + space_id: + in: path + name: spaceId + description: An identifier for the space. If `/s/` and the identifier are omitted from the path, the default space is used. + required: true + schema: + type: string + example: default schemas: assignees: type: array @@ -2316,7 +3368,7 @@ components: version: description: The current version of the case. To determine this value, use the get case or find cases APIs. type: string - search_fields: + searchFieldsType: type: string description: The fields to perform the `simple_query_string` parsed query against. enum: @@ -2364,6 +3416,89 @@ components: - .servicenow-sir - .swimlane example: .none + set_case_configuration_request: + title: Set case configuration request + description: External connection details, such as the closure type and default connector for cases. + type: object + required: + - closure_type + - connector + - owner + properties: + closure_type: + $ref: '#/components/schemas/closure_types' + connector: + description: An object that contains the connector configuration. + type: object + properties: + fields: + description: The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`. + nullable: true + type: object + id: + description: The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API. + type: string + example: none + name: + description: The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API. + type: string + example: none + type: + $ref: '#/components/schemas/connector_types' + required: + - fields + - id + - name + - type + owner: + $ref: '#/components/schemas/owners' + settings: + description: An object that contains the case settings. + type: object + properties: + syncAlerts: + description: Turns alert syncing on or off. + type: boolean + example: true + required: + - syncAlerts + update_case_configuration_request: + title: Update case configuration request + description: External connection details, such as the closure type and default connector for cases. + type: object + required: + - version + properties: + closure_type: + $ref: '#/components/schemas/closure_types' + connector: + description: An object that contains the connector configuration. + type: object + properties: + fields: + description: The fields specified in the case configuration are not used and are not propagated to individual cases, therefore it is recommended to set it to `null`. + nullable: true + type: object + id: + description: The identifier for the connector. If you do not want a default connector, use `none`. To retrieve connector IDs, use the find connectors API. + type: string + example: none + name: + description: The name of the connector. If you do not want a default connector, use `none`. To retrieve connector names, use the find connectors API. + type: string + example: none + type: + $ref: '#/components/schemas/connector_types' + required: + - fields + - id + - name + - type + version: + description: | + The version of the connector. To retrieve the version value, use the get configuration API. + type: string + example: WzIwMiwxXQ== alert_response_properties: type: object properties: @@ -3198,19 +4333,6 @@ components: version: WzIwNzMsMV0= error: null id: 4a97a440-e1cd-11ec-be9b-9b1838238ee6 - find_connector_response: - summary: Retrieve information about the connectors and their settings. - value: - - id: 61787f53-4eee-4741-8df6-8fe84fa616f7 - actionTypeId: .jira - name: my-Jira - isMissingSecrets: false - config: - apiUrl: https://elastic.atlassian.net/ - projectKey: ES - isPreconfigured: false - isDeprecated: false - referencedByCount: 0 get_reporters_response: summary: A list of three users that opened cases value: @@ -3611,6 +4733,19 @@ components: uid: u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0 version: WzM1ODg4LDFb type: assignees + find_connector_response: + summary: Retrieve information about the connectors and their settings. + value: + - id: 61787f53-4eee-4741-8df6-8fe84fa616f7 + actionTypeId: .jira + name: my-Jira + isMissingSecrets: false + config: + apiUrl: https://elastic.atlassian.net/ + projectKey: ES + isPreconfigured: false + isDeprecated: false + referencedByCount: 0 security: - basicAuth: [] - apiKeyAuth: [] diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/assignees.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/assignees.yaml new file mode 100644 index 0000000000000..4ce794cbc879c --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/assignees.yaml @@ -0,0 +1,12 @@ +in: query +name: assignees +description: > + Filters the returned cases by assignees. + Valid values are `none` or unique identifiers for the user profiles. + These identifiers can be found by using the suggest user profile API. +schema: + oneOf: + - type: string + - type: array + items: + type: string \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/category.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/category.yaml new file mode 100644 index 0000000000000..8bf20d9aa2450 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/category.yaml @@ -0,0 +1,11 @@ +in: query +name: category +description: Filters the returned cases by category. +schema: + oneOf: + - type: string + - type: array + items: + type: string + maxItems: 100 +example: my-category \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/defaultSearchOperator.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/defaultSearchOperator.yaml new file mode 100644 index 0000000000000..8e9004c859b46 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/defaultSearchOperator.yaml @@ -0,0 +1,7 @@ +in: query +name: defaultSearchOperator +description: he default operator to use for the simple_query_string. +schema: + type: string + default: OR +example: OR \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/from.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/from.yaml new file mode 100644 index 0000000000000..3b20869c0da6a --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/from.yaml @@ -0,0 +1,10 @@ +in: query +name: from +description: > + [preview] Returns only cases that were created after a specific date. + The date must be specified as a KQL data range or date match expression. + This functionality is in technical preview and may be changed or removed in a future release. + Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. +schema: + type: string + example: now-1d \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/ids.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/ids.yaml new file mode 100644 index 0000000000000..1690b5e6038a0 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/ids.yaml @@ -0,0 +1,12 @@ +name: ids +description: > + The cases that you want to removed. + All non-ASCII characters must be URL encoded. +in: query +required: true +schema: + type: string +example: d4e7abb0-b462-11ec-9a8d-698504725a43 + + + \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/includeComments.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/includeComments.yaml new file mode 100644 index 0000000000000..2a2b12df1a421 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/includeComments.yaml @@ -0,0 +1,7 @@ +in: query +name: includeComments +description: Deprecated in 8.1.0. This parameter is deprecated and will be removed in a future release. It determines whether case comments are returned. +deprecated: true +schema: + type: boolean + default: true \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/reporters.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/reporters.yaml new file mode 100644 index 0000000000000..6fefa32f011dd --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/reporters.yaml @@ -0,0 +1,10 @@ +in: query +name: reporters +description: Filters the returned cases by the user name of the reporter. +schema: + oneOf: + - type: string + - type: array + items: + type: string +example: elastic \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/search.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/search.yaml new file mode 100644 index 0000000000000..5435a43a06b93 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/search.yaml @@ -0,0 +1,5 @@ +in: query +name: search +description: An Elasticsearch simple_query_string query that filters the objects in the response. +schema: + type: string diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/searchFields.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/searchFields.yaml new file mode 100644 index 0000000000000..8b06f182aade8 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/searchFields.yaml @@ -0,0 +1,9 @@ +in: query +name: searchFields +description: The fields to perform the simple_query_string parsed query against. +schema: + oneOf: + - $ref: 'searchFieldsType.yaml' + - type: array + items: + $ref: 'searchFieldsType.yaml' \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/search_fields.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/searchFieldsType.yaml similarity index 100% rename from x-pack/plugins/cases/docs/openapi/components/parameters/search_fields.yaml rename to x-pack/plugins/cases/docs/openapi/components/parameters/searchFieldsType.yaml diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/sortField.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/sortField.yaml new file mode 100644 index 0000000000000..c0b732f905c56 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/sortField.yaml @@ -0,0 +1,10 @@ +in: query +name: sortField +description: Determines which field is used to sort the results. +schema: + type: string + enum: + - createdAt + - updatedAt + default: createdAt +example: updatedAt \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/status.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/status.yaml new file mode 100644 index 0000000000000..0517e7516a87f --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/status.yaml @@ -0,0 +1,10 @@ +in: query +name: status +description: Filters the returned cases by state. +schema: + type: string + enum: + - closed + - in-progress + - open +example: open \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/tags.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/tags.yaml new file mode 100644 index 0000000000000..bff378ac1fbda --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/tags.yaml @@ -0,0 +1,10 @@ +in: query +name: tags +description: Filters the returned cases by tags. +schema: + oneOf: + - type: string + - type: array + items: + type: string +example: tag-1 \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/to.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/to.yaml new file mode 100644 index 0000000000000..fb41e6b8223b9 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/to.yaml @@ -0,0 +1,10 @@ +in: query +name: to +description: > + [preview] Returns only cases that were created before a specific date. + The date must be specified as a KQL data range or date match expression. + This functionality is in technical preview and may be changed or removed in a future release. + Elastic will apply best effort to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. +schema: + type: string +example: now+1d \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/user_action_types.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/user_action_types.yaml new file mode 100644 index 0000000000000..2b04b7c806620 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/user_action_types.yaml @@ -0,0 +1,24 @@ +in: query +name: types +description: Determines the types of user actions to return. +schema: + type: array + items: + type: string + enum: + - action + - alert + - assignees + - attachment + - comment + - connector + - create_case + - description + - pushed + - settings + - severity + - status + - tags + - title + - user +example: create_case \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/schemas/set_case_configuration_request.yaml b/x-pack/plugins/cases/docs/openapi/components/schemas/set_case_configuration_request.yaml new file mode 100644 index 0000000000000..44a3a8709a939 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/schemas/set_case_configuration_request.yaml @@ -0,0 +1,32 @@ +title: Set case configuration request +description: External connection details, such as the closure type and default connector for cases. +type: object +required: + - closure_type + - connector + - owner +properties: + closure_type: + $ref: 'closure_types.yaml' + connector: + description: An object that contains the connector configuration. + type: object + properties: + $ref: 'case_configure_connector_properties.yaml' + required: + - fields + - id + - name + - type + owner: + $ref: 'owners.yaml' + settings: + description: An object that contains the case settings. + type: object + properties: + syncAlerts: + description: Turns alert syncing on or off. + type: boolean + example: true + required: + - syncAlerts diff --git a/x-pack/plugins/cases/docs/openapi/components/schemas/update_case_configuration_request.yaml b/x-pack/plugins/cases/docs/openapi/components/schemas/update_case_configuration_request.yaml new file mode 100644 index 0000000000000..89c03715944c4 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/schemas/update_case_configuration_request.yaml @@ -0,0 +1,24 @@ +title: Update case configuration request +description: External connection details, such as the closure type and default connector for cases. +type: object +required: + - version +properties: + closure_type: + $ref: 'closure_types.yaml' + connector: + description: An object that contains the connector configuration. + type: object + properties: + $ref: 'case_configure_connector_properties.yaml' + required: + - fields + - id + - name + - type + version: + description: > + The version of the connector. + To retrieve the version value, use the get configuration API. + type: string + example: WzIwMiwxXQ== \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/entrypoint.yaml b/x-pack/plugins/cases/docs/openapi/entrypoint.yaml index a4b09e63ee2d4..142dcd2706fd3 100644 --- a/x-pack/plugins/cases/docs/openapi/entrypoint.yaml +++ b/x-pack/plugins/cases/docs/openapi/entrypoint.yaml @@ -15,6 +15,40 @@ servers: - url: 'http://localhost:5601' description: local paths: +# Paths in the default space + '/api/cases': + $ref: 'paths/api@cases.yaml' + '/api/cases/_find': + $ref: 'paths/api@cases@_find.yaml' + '/api/cases/alerts/{alertId}': + $ref: 'paths/api@cases@alerts@{alertid}.yaml' + '/api/cases/configure': + $ref: paths/api@cases@configure.yaml + '/api/cases/configure/{configurationId}': + $ref: paths/api@cases@configure@{configurationid}.yaml + '/api/cases/reporters': + $ref: 'paths/api@cases@reporters.yaml' + '/api/cases/status': + $ref: 'paths/api@cases@status.yaml' + '/api/cases/tags': + $ref: 'paths/api@cases@tags.yaml' + '/api/cases/{caseId}': + $ref: 'paths/api@cases@{caseid}.yaml' + '/api/cases/{caseId}/alerts': + $ref: 'paths/api@cases@{caseid}@alerts.yaml' + '/api/cases/{caseId}/comments': + $ref: 'paths/api@cases@{caseid}@comments.yaml' + '/api/cases/{caseId}/comments/{commentId}': + $ref: 'paths/api@cases@{caseid}@comments@{commentid}.yaml' + '/api/cases/{caseId}/connector/{connectorId}/_push': + $ref: 'paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml' + '/api/cases/{caseId}/user_actions': + $ref: 'paths/api@cases@{caseid}@user_actions.yaml' + '/api/cases/{caseId}/user_actions/_find': + $ref: 'paths/api@cases@{caseid}@user_actions@_find.yaml' + '/api/cases/configure/connectors/_find': + $ref: paths/api@cases@configure@connectors@_find.yaml +# Paths with space identifiers '/s/{spaceId}/api/cases': $ref: 'paths/s@{spaceid}@api@cases.yaml' '/s/{spaceId}/api/cases/_find': diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases.yaml new file mode 100644 index 0000000000000..98e97b6af7d5b --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases.yaml @@ -0,0 +1,106 @@ +post: + summary: Creates a case in the default space. + operationId: createCaseDefaultSpace + description: > + You must have `all` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're creating. + tags: + - cases + parameters: + - $ref: '../components/headers/kbn_xsrf.yaml' + requestBody: + required: true + content: + application/json: + schema: + $ref: '../components/schemas/create_case_request.yaml' + examples: + createCaseRequest: + $ref: '../components/examples/create_case_request.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '../components/schemas/case_response_properties.yaml' + examples: + createCaseResponse: + $ref: '../components/examples/create_case_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 + +delete: + summary: Deletes one or more cases in the default space. + operationId: deleteCaseDefaultSpace + description: > + You must have `read` or `all` privileges and the `delete` sub-feature + privilege for the **Cases** feature in the **Management**, + **Observability**, or **Security** section of the Kibana feature privileges, + depending on the owner of the cases you're deleting. + tags: + - cases + parameters: + - $ref: '../components/headers/kbn_xsrf.yaml' + - $ref: '../components/parameters/ids.yaml' + responses: + '204': + description: Indicates a successful call. + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 + +patch: + summary: Updates one or more cases in the default space. + operationId: updateCaseDefaultSpace + description: > + You must have `all` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're updating. + tags: + - cases + parameters: + - $ref: ../components/headers/kbn_xsrf.yaml + requestBody: + content: + application/json: + schema: + $ref: '../components/schemas/update_case_request.yaml' + examples: + updateCaseRequest: + $ref: '../components/examples/update_case_request.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + $ref: '../components/schemas/case_response_properties.yaml' + examples: + updateCaseResponse: + $ref: '../components/examples/update_case_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 + +servers: + - url: https://localhost:5601 \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@_find.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@_find.yaml new file mode 100644 index 0000000000000..2dc92988f9d32 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@_find.yaml @@ -0,0 +1,63 @@ +get: + summary: Retrieves a paginated subset of cases in the default space. + operationId: findCasesDefaultSpace + description: > + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the cases you're seeking. + tags: + - cases + parameters: + - $ref: '../components/parameters/assignees.yaml' + - $ref: '../components/parameters/category.yaml' + - $ref: '../components/parameters/defaultSearchOperator.yaml' + - $ref: '../components/parameters/from.yaml' + - $ref: '../components/parameters/owner.yaml' + - $ref: '../components/parameters/page_index.yaml' + - $ref: '../components/parameters/page_size.yaml' + - $ref: '../components/parameters/reporters.yaml' + - $ref: '../components/parameters/search.yaml' + - $ref: '../components/parameters/searchFields.yaml' + - $ref: '../components/parameters/severity.yaml' + - $ref: '../components/parameters/sortField.yaml' + - $ref: '../components/parameters/sort_order.yaml' + - $ref: '../components/parameters/status.yaml' + - $ref: '../components/parameters/tags.yaml' + - $ref: '../components/parameters/to.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: object + properties: + cases: + type: array + items: + $ref: '../components/schemas/case_response_properties.yaml' + count_closed_cases: + type: integer + count_in_progress_cases: + type: integer + count_open_cases: + type: integer + page: + type: integer + per_page: + type: integer + total: + type: integer + examples: + findCaseResponse: + $ref: '../components/examples/find_case_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@alerts@{alertid}.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@alerts@{alertid}.yaml new file mode 100644 index 0000000000000..8ce27543da072 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@alerts@{alertid}.yaml @@ -0,0 +1,42 @@ +get: + summary: Returns the cases associated with a specific alert in the default space. + operationId: getCasesByAlertDefaultSpace + description: > + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the cases you're seeking. + x-technical-preview: true + tags: + - cases + parameters: + - $ref: ../components/parameters/alert_id.yaml + - $ref: '../components/parameters/owner.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + description: The case identifier. + title: + type: string + description: The case title. + example: + - id: 06116b80-e1c3-11ec-be9b-9b1838238ee6 + title: security_case + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601s \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@configure.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@configure.yaml new file mode 100644 index 0000000000000..ebbae5e333103 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@configure.yaml @@ -0,0 +1,74 @@ +get: + summary: Retrieves external connection details, such as the closure type and default connector for cases in the default space. + operationId: getCaseConfigurationDefaultSpace + description: > + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case configuration. + tags: + - cases + parameters: + - $ref: '../components/parameters/owner.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: object + properties: + $ref: '../components/schemas/case_configure_response_properties.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 + +post: + summary: Sets external connection details, such as the closure type and default connector for cases in the default space. + operationId: setCaseConfigurationDefaultSpace + description: > + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case configuration. + Connectors are used to interface with external systems. + You must create a connector before you can use it in your cases. Refer to the add connectors API. + If you set a default connector, it is automatically selected when you create cases in Kibana. + If you use the create case API, however, you must still specify all of the connector details. + tags: + - cases + parameters: + - $ref: ../components/headers/kbn_xsrf.yaml + requestBody: + content: + application/json: + schema: + $ref: '../components/schemas/set_case_configuration_request.yaml' + examples: + setCaseConfigRequest: + $ref: '../components/examples/set_case_configuration_request.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: object + properties: + $ref: '../components/schemas/case_configure_response_properties.yaml' + examples: + setCaseConfigResponse: + $ref: '../components/examples/set_case_configuration_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@configure@connectors@_find.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@configure@connectors@_find.yaml new file mode 100644 index 0000000000000..b3618e3537819 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@configure@connectors@_find.yaml @@ -0,0 +1,33 @@ +get: + summary: Retrieves information about connectors in the default space. + operationId: findCaseConnectorsDefaultSpace + description: > + In particular, only the connectors that are supported for use in cases are + returned. You must have `read` privileges for the **Actions and Connectors** + feature in the **Management** section of the Kibana feature privileges. + tags: + - cases + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: object + properties: + $ref: '../components/schemas/connector_response_properties.yaml' + examples: + findConnectorResponse: + $ref: '../components/examples/find_connector_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@configure@{configurationid}.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@configure@{configurationid}.yaml new file mode 100644 index 0000000000000..507842e6f47f4 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@configure@{configurationid}.yaml @@ -0,0 +1,39 @@ +patch: + summary: Updates external connection details, such as the closure type and default connector for cases in the default space. + operationId: updateCaseConfigurationDefaultSpace + description: > + You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case configuration. + Connectors are used to interface with external systems. + You must create a connector before you can use it in your cases. + Refer to the add connectors API. + tags: + - cases + parameters: + - $ref: ../components/headers/kbn_xsrf.yaml + - $ref: ../components/parameters/configuration_id.yaml + requestBody: + content: + application/json: + schema: + $ref: '../components/schemas/update_case_configuration_request.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: object + properties: + $ref: '../components/schemas/case_configure_response_properties.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@reporters.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@reporters.yaml new file mode 100644 index 0000000000000..2410b238ed284 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@reporters.yaml @@ -0,0 +1,35 @@ +get: + summary: Returns information about the users who opened cases in the default space. + operationId: getCaseReportersDefaultSpace + description: > + You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases. + The API returns information about the users as they existed at the time of the case creation, including their name, full name, and email address. + If any of those details change thereafter or if a user is deleted, the information returned by this API is unchanged. + tags: + - cases + parameters: + - $ref: '../components/parameters/owner.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: object + properties: + $ref: '../components/schemas/user_properties.yaml' + examples: + getReportersResponse: + $ref: '../components/examples/get_reporters_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@status.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@status.yaml new file mode 100644 index 0000000000000..17dedefd16450 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@status.yaml @@ -0,0 +1,40 @@ +get: + summary: Returns the number of cases that are open, closed, and in progress in the default space. + operationId: getCaseStatusDefaultSpace + description: > + Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find cases API instead. + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the cases you're seeking. + deprecated: true + tags: + - cases + parameters: + - $ref: '../components/parameters/owner.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: object + properties: + count_closed_cases: + type: integer + count_in_progress_cases: + type: integer + count_open_cases: + type: integer + examples: + getStatusResponse: + $ref: '../components/examples/get_status_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@tags.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@tags.yaml new file mode 100644 index 0000000000000..e456816163baf --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@tags.yaml @@ -0,0 +1,31 @@ +get: + summary: Aggregates and returns a list of case tags in the default space. + operationId: getCaseTagsDefaultSpace + description: > + You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking. + tags: + - cases + parameters: + - $ref: '../components/parameters/owner.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + type: string + examples: + getTagsResponse: + $ref: '../components/examples/get_tags_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml new file mode 100644 index 0000000000000..48238dcdcf4de --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml @@ -0,0 +1,32 @@ +get: + summary: Retrieves information about a case in the default space. + operationId: getCaseDefaultSpace + description: > + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're seeking. + tags: + - cases + parameters: + - $ref: '../components/parameters/case_id.yaml' + - $ref: '../components/parameters/includeComments.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '../components/schemas/case_response_properties.yaml' + examples: + getCaseResponse: + $ref: '../components/examples/get_case_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@alerts.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@alerts.yaml new file mode 100644 index 0000000000000..80e4093303136 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@alerts.yaml @@ -0,0 +1,34 @@ +get: + summary: Gets all alerts attached to a case in the default space. + description: > + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the cases you're seeking. + x-technical-preview: true + operationId: getCaseAlertsDefaultSpace + tags: + - cases + parameters: + - $ref: ../components/parameters/case_id.yaml + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + $ref: '../components/schemas/alert_response_properties.yaml' + examples: + getCaseAlertsResponse: + $ref: '../components/examples/get_case_alerts_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@comments.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@comments.yaml new file mode 100644 index 0000000000000..160a5a5f221ca --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@comments.yaml @@ -0,0 +1,138 @@ +post: + summary: Adds a comment or alert to a case in the default space. + operationId: addCaseCommentDefaultSpace + description: > + You must have `all` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're creating. + NOTE: Each case can have a maximum of 1,000 alerts. + tags: + - cases + parameters: + - $ref: '../components/headers/kbn_xsrf.yaml' + - $ref: '../components/parameters/case_id.yaml' + requestBody: + required: true + content: + application/json: + schema: + $ref: '../components/schemas/add_case_comment_request.yaml' + examples: + createCaseCommentRequest: + $ref: '../components/examples/add_comment_request.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '../components/schemas/case_response_properties.yaml' + examples: + createCaseCommentResponse: + $ref: '../components/examples/add_comment_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 + +delete: + summary: Deletes all comments and alerts from a case in the default space. + operationId: deleteCaseCommentsDefaultSpace + description: > + You must have `all` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the cases you're deleting. + tags: + - cases + parameters: + - $ref: '../components/headers/kbn_xsrf.yaml' + - $ref: '../components/parameters/case_id.yaml' + responses: + '204': + description: Indicates a successful call. + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 + +patch: + summary: Updates a comment or alert in a case in the default space. + operationId: updateCaseCommentDefaultSpace + description: > + You must have `all` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're updating. + NOTE: You cannot change the comment type or the owner of a comment. + tags: + - cases + parameters: + - $ref: '../components/headers/kbn_xsrf.yaml' + - $ref: '../components/parameters/case_id.yaml' + requestBody: + required: true + content: + application/json: + schema: + $ref: '../components/schemas/update_case_comment_request.yaml' + examples: + updateCaseCommentRequest: + $ref: '../components/examples/update_comment_request.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '../components/schemas/case_response_properties.yaml' + examples: + updateCaseCommentResponse: + $ref: '../components/examples/update_comment_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 + +get: + summary: Retrieves all the comments from a case in the default space. + operationId: getAllCaseCommentsDefaultSpace + description: > + Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; + instead, use the get case comment API, which requires a comment identifier in the path. + You must have `read` privileges for the **Cases** feature in the **Management**, + **Observability**, or **Security** section of the Kibana feature privileges, + depending on the owner of the cases with the comments you're seeking. + deprecated: true + tags: + - cases + parameters: + - $ref: '../components/parameters/case_id.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '../components/schemas/case_response_properties.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 + +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@comments@{commentid}.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@comments@{commentid}.yaml new file mode 100644 index 0000000000000..0eb35a7bb1c9a --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@comments@{commentid}.yaml @@ -0,0 +1,59 @@ +delete: + summary: Deletes a comment or alert from a case in the default space. + operationId: deleteCaseCommentDefaultSpace + description: > + You must have `all` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the cases you're deleting. + tags: + - cases + parameters: + - $ref: '../components/headers/kbn_xsrf.yaml' + - $ref: '../components/parameters/case_id.yaml' + - $ref: '../components/parameters/comment_id.yaml' + responses: + '204': + description: Indicates a successful call. + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 + +get: + summary: Retrieves a comment from a case in the default space. + operationId: getCaseCommentDefaultSpace + description: > + You must have `read` privileges for the **Cases** feature in the **Management**, + **Observability**, or **Security** section of the Kibana feature privileges, + depending on the owner of the cases with the comments you're seeking. + tags: + - cases + parameters: + - $ref: '../components/parameters/case_id.yaml' + - $ref: '../components/parameters/comment_id.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + oneOf: + - $ref: '../components/schemas/alert_comment_response_properties.yaml' + - $ref: '../components/schemas/user_comment_response_properties.yaml' + examples: + getCaseCommentResponse: + $ref: '../components/examples/get_comment_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml new file mode 100644 index 0000000000000..4731c69bab76a --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml @@ -0,0 +1,38 @@ +post: + summary: Pushes a case in the default space to an external service. + description: > + You must have `all` privileges for the **Actions and Connectors** feature in the **Management** section of the Kibana feature privileges. + You must also have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're pushing. + operationId: pushCaseDefaultSpace + tags: + - cases + parameters: + - $ref: '../components/parameters/case_id.yaml' + - $ref: '../components/parameters/connector_id.yaml' + - $ref: '../components/headers/kbn_xsrf.yaml' + requestBody: + content: + application/json: + schema: + type: object + nullable: true + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + $ref: '../components/schemas/case_response_properties.yaml' + examples: + pushCaseResponse: + $ref: '../components/examples/push_case_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@user_actions.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@user_actions.yaml new file mode 100644 index 0000000000000..b0e38a119fd34 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@user_actions.yaml @@ -0,0 +1,35 @@ +get: + summary: Returns all user activity for a case in the default space. + description: > + Deprecated in 8.1.0. This API is deprecated and will be removed in a future release; use the find user actions API instead. + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're seeking. + deprecated: true + operationId: getCaseActivityDefaultSpace + tags: + - cases + parameters: + - $ref: '../components/parameters/case_id.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: array + items: + $ref: '../components/schemas/user_actions_response_properties.yaml' + examples: + getCaseActivityResponse: + $ref: '../components/examples/get_case_activity_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@user_actions@_find.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@user_actions@_find.yaml new file mode 100644 index 0000000000000..dea4c6facfd64 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@user_actions@_find.yaml @@ -0,0 +1,46 @@ +get: + summary: Finds user activity for a case in the default space. + description: > + You must have `read` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're seeking. + operationId: findCaseActivityDefaultSpace + tags: + - cases + parameters: + - $ref: '../components/parameters/case_id.yaml' + - $ref: '../components/parameters/page_index.yaml' + - $ref: '../components/parameters/page_size.yaml' + - $ref: '../components/parameters/sort_order.yaml' + - $ref: '../components/parameters/user_action_types.yaml' + responses: + '200': + description: Indicates a successful call. + content: + application/json: + schema: + type: object + properties: + page: + type: integer + perPage: + type: integer + total: + type: integer + userActions: + type: array + items: + $ref: '../components/schemas/user_actions_find_response_properties.yaml' + examples: + findCaseActivityResponse: + $ref: '../components/examples/find_case_activity_response.yaml' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '../components/schemas/4xx_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases.yaml index ba4b852d96405..ae228f7c1f770 100644 --- a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases.yaml +++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases.yaml @@ -50,14 +50,8 @@ delete: - cases parameters: - $ref: ../components/headers/kbn_xsrf.yaml + - $ref: '../components/parameters/ids.yaml' - $ref: '../components/parameters/space_id.yaml' - - name: ids - description: The cases that you want to removed. All non-ASCII characters must be URL encoded. - in: query - required: true - schema: - type: string - example: d4e7abb0-b462-11ec-9a8d-698504725a43 responses: '204': description: Indicates a successful call. diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@_find.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@_find.yaml index e04fbfe020c9f..fa9687b439f84 100644 --- a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@_find.yaml +++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@_find.yaml @@ -9,115 +9,22 @@ get: - cases parameters: - $ref: '../components/parameters/space_id.yaml' - - name: assignees - in: query - description: Filters the returned cases by assignees. Valid values are `none` or unique identifiers for the user profiles. These identifiers can be found by using the suggest user profile API. - schema: - oneOf: - - type: string - - type: array - items: - type: string - - name: category - in: query - description: Filters the returned cases by category. Limited to 100 categories. - schema: - oneOf: - - type: string - - type: array - items: - type: string - example: my-category - - name: defaultSearchOperator - in: query - description: The default operator to use for the simple_query_string. - schema: - type: string - default: OR - example: OR - - name: from - in: query - description: > - [preview] Returns only cases that were created after a specific date. - The date must be specified as a KQL data range or date match expression. - This functionality is in technical preview and may be changed or removed - in a future release. Elastic will apply best effort to fix any issues, - but features in technical preview are not subject to the support SLA of - official GA features. - schema: - type: string - example: now-1d + - $ref: '../components/parameters/assignees.yaml' + - $ref: '../components/parameters/category.yaml' + - $ref: '../components/parameters/defaultSearchOperator.yaml' + - $ref: '../components/parameters/from.yaml' - $ref: '../components/parameters/owner.yaml' - $ref: '../components/parameters/page_index.yaml' - $ref: '../components/parameters/page_size.yaml' - - name: reporters - in: query - description: Filters the returned cases by the user name of the reporter. - schema: - oneOf: - - type: string - - type: array - items: - type: string - example: elastic - - name: search - in: query - description: An Elasticsearch simple_query_string query that filters the objects in the response. - schema: - type: string - - name: searchFields - in: query - description: The fields to perform the simple_query_string parsed query against. - schema: - oneOf: - - $ref: '../components/parameters/search_fields.yaml' - - type: array - items: - $ref: '../components/parameters/search_fields.yaml' + - $ref: '../components/parameters/reporters.yaml' + - $ref: '../components/parameters/search.yaml' + - $ref: '../components/parameters/searchFields.yaml' - $ref: '../components/parameters/severity.yaml' - - name: sortField - in: query - description: Determines which field is used to sort the results. - schema: - type: string - enum: - - createdAt - - updatedAt - default: createdAt - example: updatedAt + - $ref: '../components/parameters/sortField.yaml' - $ref: '../components/parameters/sort_order.yaml' - - name: status - in: query - description: Filters the returned cases by state. - schema: - type: string - enum: - - closed - - in-progress - - open - example: open - - name: tags - in: query - description: Filters the returned cases by tags. - schema: - oneOf: - - type: string - - type: array - items: - type: string - example: tag-1 - - name: to - in: query - description: > - [preview] Returns only cases that were created before a specific date. - The date must be specified as a KQL data range or date match expression. - This functionality is in technical preview and may be changed or removed - in a future release. Elastic will apply best effort to fix any issues, - but features in technical preview are not subject to the support SLA of - official GA features. - schema: - type: string - example: now+1d + - $ref: '../components/parameters/status.yaml' + - $ref: '../components/parameters/tags.yaml' + - $ref: '../components/parameters/to.yaml' responses: '200': description: Indicates a successful call. diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@configure.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@configure.yaml index cc17f044d437c..c991005af9d70 100644 --- a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@configure.yaml +++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@configure.yaml @@ -51,36 +51,7 @@ post: content: application/json: schema: - type: object - properties: - closure_type: - $ref: '../components/schemas/closure_types.yaml' - connector: - description: An object that contains the connector configuration. - type: object - properties: - $ref: '../components/schemas/case_configure_connector_properties.yaml' - required: - - fields - - id - - name - - type - owner: - $ref: '../components/schemas/owners.yaml' - settings: - description: An object that contains the case settings. - type: object - properties: - syncAlerts: - description: Turns alert syncing on or off. - type: boolean - example: true - required: - - syncAlerts - required: - - closure_type - - connector - - owner + $ref: '../components/schemas/set_case_configuration_request.yaml' examples: setCaseConfigRequest: $ref: '../components/examples/set_case_configuration_request.yaml' diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@configure@{configurationid}.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@configure@{configurationid}.yaml index 5f8dae09abf55..749f1ece724b2 100644 --- a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@configure@{configurationid}.yaml +++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@configure@{configurationid}.yaml @@ -17,28 +17,7 @@ patch: content: application/json: schema: - type: object - properties: - closure_type: - $ref: '../components/schemas/closure_types.yaml' - connector: - description: An object that contains the connector configuration. - type: object - properties: - $ref: '../components/schemas/case_configure_connector_properties.yaml' - required: - - fields - - id - - name - - type - version: - description: > - The version of the connector. To retrieve the version value, use - the get configuration API. - type: string - example: WzIwMiwxXQ== - required: - - version + $ref: '../components/schemas/update_case_configuration_request.yaml' responses: '200': description: Indicates a successful call. diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@tags.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@tags.yaml index 5e70cff6640e1..ff448041dd712 100644 --- a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@tags.yaml +++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@tags.yaml @@ -9,15 +9,7 @@ get: - cases parameters: - $ref: '../components/parameters/space_id.yaml' - - in: query - name: owner - description: A filter to limit the retrieved case statistics to a specific set of applications. If this parameter is omitted, the response contains tags from all cases that the user has access to read. - schema: - oneOf: - - $ref: '../components/schemas/owners.yaml' - - type: array - items: - $ref: '../components/schemas/owners.yaml' + - $ref: '../components/parameters/owner.yaml' responses: '200': description: Indicates a successful call. diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml index 856a5dc24096f..fb4f735f322eb 100644 --- a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml +++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml @@ -8,15 +8,9 @@ get: tags: - cases parameters: - - $ref: ../components/parameters/case_id.yaml + - $ref: '../components/parameters/case_id.yaml' - $ref: '../components/parameters/space_id.yaml' - - in: query - name: includeComments - description: Deprecated in 8.1.0. This parameter is deprecated and will be removed in a future release. It determines whether case comments are returned. - deprecated: true - schema: - type: boolean - default: true + - $ref: '../components/parameters/includeComments.yaml' responses: '200': description: Indicates a successful call. diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}@user_actions@_find.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}@user_actions@_find.yaml index 58d8d33e64118..61a1290c7c5a6 100644 --- a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}@user_actions@_find.yaml +++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}@user_actions@_find.yaml @@ -14,30 +14,7 @@ get: example: "1" - $ref: '../components/parameters/page_size.yaml' - $ref: '../components/parameters/sort_order.yaml' - - name: types - in: query - description: Determines the types of user actions to return. - schema: - type: array - items: - type: string - enum: - - action - - alert - - assignees - - attachment - - comment - - connector - - create_case - - description - - pushed - - settings - - severity - - status - - tags - - title - - user - example: create_case + - $ref: '../components/parameters/user_action_types.yaml' responses: '200': description: Indicates a successful call. From eab826842a53773ee36f904a54c539e19bd0c72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20G=C3=BCrkan=20YALAMAN?= Date: Thu, 29 Jun 2023 17:53:24 +0200 Subject: [PATCH 18/41] [Enterprise Search] Add Sync button to the last step of the native configuration (#160904) ## Summary Sync button in the last step of configuration was missing for native configurations https://github.com/elastic/kibana/pull/160408 ### 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) - [ ] 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)) --- .../native_connector_advanced_configuration.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/native_connector_configuration/native_connector_advanced_configuration.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/native_connector_configuration/native_connector_advanced_configuration.tsx index 2749f83703072..1fca8bed5272e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/native_connector_configuration/native_connector_advanced_configuration.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/native_connector_configuration/native_connector_advanced_configuration.tsx @@ -19,6 +19,7 @@ import { generateEncodedPath } from '../../../../../shared/encode_path_params'; import { EuiButtonTo } from '../../../../../shared/react_router_helpers'; import { SEARCH_INDEX_TAB_PATH } from '../../../../routes'; +import { SyncsContextMenu } from '../../components/header_actions/syncs_context_menu'; import { IndexNameLogic } from '../../index_name_logic'; import { SearchIndexTabId } from '../../search_index'; @@ -54,6 +55,9 @@ export const NativeConnectorAdvancedConfiguration: React.FC = () => { )} + + + From 0aa94eda79e8f73fc41c9c29f2f1a50d3fbc2534 Mon Sep 17 00:00:00 2001 From: Rodney Norris Date: Thu, 29 Jun 2023 11:06:44 -0500 Subject: [PATCH 19/41] [Serverless Search] Indexing API - Select index (#160454) ## Summary Adds fetching indices and showing a combox to select and search for indices to the indexing API page. ## Notes: - Doc links are currently placeholders and will need to be set (at some point?) ### Screenshots image --------- Co-authored-by: Sander Philipse Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../serverless_search/common/types/index.ts | 9 ++ .../common/utils/is_not_nullish.ts | 10 ++ .../application/components/indexing_api.tsx | 135 +++++++++++++++++- .../components/languages/console.ts | 5 + .../application/components/languages/curl.ts | 7 + .../components/languages/javascript.ts | 24 ++++ .../application/components/languages/ruby.ts | 13 ++ .../application/components/languages/types.ts | 2 + .../application/components/overview.tsx | 4 +- .../public/application/constants.ts | 10 ++ .../public/application/routes.ts | 1 + .../server/lib/indices/fetch_indices.test.ts | 122 ++++++++++++++++ .../server/lib/indices/fetch_indices.ts | 60 ++++++++ .../serverless_search/server/plugin.ts | 2 + .../server/routes/indices_routes.ts | 47 ++++++ .../server/utils/index_utils.ts | 19 +++ .../plugins/serverless_search/tsconfig.json | 1 + 17 files changed, 463 insertions(+), 8 deletions(-) create mode 100644 x-pack/plugins/serverless_search/common/utils/is_not_nullish.ts create mode 100644 x-pack/plugins/serverless_search/public/application/constants.ts create mode 100644 x-pack/plugins/serverless_search/server/lib/indices/fetch_indices.test.ts create mode 100644 x-pack/plugins/serverless_search/server/lib/indices/fetch_indices.ts create mode 100644 x-pack/plugins/serverless_search/server/routes/indices_routes.ts create mode 100644 x-pack/plugins/serverless_search/server/utils/index_utils.ts diff --git a/x-pack/plugins/serverless_search/common/types/index.ts b/x-pack/plugins/serverless_search/common/types/index.ts index 13c8fc566defd..c4dac1508374e 100644 --- a/x-pack/plugins/serverless_search/common/types/index.ts +++ b/x-pack/plugins/serverless_search/common/types/index.ts @@ -11,3 +11,12 @@ export interface CreateAPIKeyArgs { name: string; role_descriptors?: Record; } + +export interface IndexData { + name: string; + count: number; +} + +export interface FetchIndicesResult { + indices: IndexData[]; +} diff --git a/x-pack/plugins/serverless_search/common/utils/is_not_nullish.ts b/x-pack/plugins/serverless_search/common/utils/is_not_nullish.ts new file mode 100644 index 0000000000000..d492dad5d52c2 --- /dev/null +++ b/x-pack/plugins/serverless_search/common/utils/is_not_nullish.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 function isNotNullish(value: T | null | undefined): value is T { + return value !== null && value !== undefined; +} diff --git a/x-pack/plugins/serverless_search/public/application/components/indexing_api.tsx b/x-pack/plugins/serverless_search/public/application/components/indexing_api.tsx index adef923902c59..eb34e345be142 100644 --- a/x-pack/plugins/serverless_search/public/application/components/indexing_api.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/indexing_api.tsx @@ -5,23 +5,33 @@ * 2.0. */ -import React, { useState } from 'react'; +import React, { useMemo, useState } from 'react'; import { + EuiCallOut, + EuiComboBox, + EuiComboBoxOptionOption, EuiFlexGroup, EuiFlexItem, + EuiFormRow, EuiLink, EuiPageTemplate, EuiSpacer, + EuiStat, EuiText, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useQuery } from '@tanstack/react-query'; +import { IndexData, FetchIndicesResult } from '../../../common/types'; +import { FETCH_INDICES_PATH } from '../routes'; +import { API_KEY_PLACEHOLDER, ELASTICSEARCH_URL_PLACEHOLDER } from '../constants'; +import { useKibanaServices } from '../hooks/use_kibana'; import { CodeBox } from './code_box'; import { javascriptDefinition } from './languages/javascript'; import { languageDefinitions } from './languages/languages'; -import { LanguageDefinition } from './languages/types'; +import { LanguageDefinition, LanguageDefinitionSnippetArguments } from './languages/types'; import { OverviewPanel } from './overview_panels/overview_panel'; import { LanguageClientPanel } from './overview_panels/language_client_panel'; @@ -48,9 +58,88 @@ const NoIndicesContent = () => ( ); +interface IndicesContentProps { + indices: IndexData[]; + isLoading: boolean; + onChange: (selectedOptions: Array>) => void; + selectedIndex?: IndexData; + setSearchValue: (searchValue?: string) => void; +} +const IndicesContent = ({ + indices, + isLoading, + onChange, + selectedIndex, + setSearchValue, +}: IndicesContentProps) => { + const toOption = (index: IndexData) => ({ label: index.name, value: index }); + const options: Array> = indices.map(toOption); + return ( + <> + + + + + + + + + + + + + ); +}; + export const ElasticsearchIndexingApi = () => { + const { cloud, http } = useKibanaServices(); const [selectedLanguage, setSelectedLanguage] = useState(javascriptDefinition); + const [indexSearchQuery, setIndexSearchQuery] = useState(undefined); + const [selectedIndex, setSelectedIndex] = useState(undefined); + const elasticsearchURL = useMemo(() => { + return cloud?.elasticsearchUrl ?? ELASTICSEARCH_URL_PLACEHOLDER; + }, [cloud]); + const { data, isLoading, isError } = useQuery({ + queryKey: ['indices', { searchQuery: indexSearchQuery }], + queryFn: async () => { + const query = { + search_query: indexSearchQuery || null, + }; + const result = await http.get(FETCH_INDICES_PATH, { query }); + return result; + }, + }); + + const codeSnippetArguments: LanguageDefinitionSnippetArguments = { + url: elasticsearchURL, + apiKey: API_KEY_PLACEHOLDER, + indexName: selectedIndex?.name, + }; + const showNoIndices = !isLoading && data?.indices?.length === 0 && indexSearchQuery === undefined; return ( @@ -67,6 +156,17 @@ export const ElasticsearchIndexingApi = () => { )} bottomBorder="extended" /> + {isError && ( + + + + )} { } + links={ + showNoIndices + ? undefined + : [ + { + label: i18n.translate( + 'xpack.serverlessSearch.content.indexingApi.ingestDocsLink', + { defaultMessage: 'Ingestion documentation' } + ), + href: '#', // TODO: get doc links ? + }, + ] + } > - + {showNoIndices ? ( + + ) : ( + { + setSelectedIndex(options?.[0]?.value); + }} + setSearchValue={setIndexSearchQuery} + selectedIndex={selectedIndex} + /> + )} diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/console.ts b/x-pack/plugins/serverless_search/public/application/components/languages/console.ts index 08571e6d87173..c2fceaae4f85b 100644 --- a/x-pack/plugins/serverless_search/public/application/components/languages/console.ts +++ b/x-pack/plugins/serverless_search/public/application/components/languages/console.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { INDEX_NAME_PLACEHOLDER } from '../../constants'; import { LanguageDefinition } from './types'; export const consoleDefinition: Partial = { @@ -29,4 +30,8 @@ export const consoleDefinition: Partial = { {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268} { "index" : { "_index" : "books" } } {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}`, + ingestDataIndex: ({ indexName }) => `POST _bulk?pretty + { "index" : { "_index" : "${indexName ?? INDEX_NAME_PLACEHOLDER}" } } + {"name": "foo", "title": "bar"} +`, }; diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/curl.ts b/x-pack/plugins/serverless_search/public/application/components/languages/curl.ts index 41c18a9470dcb..cc98b35c87696 100644 --- a/x-pack/plugins/serverless_search/public/application/components/languages/curl.ts +++ b/x-pack/plugins/serverless_search/public/application/components/languages/curl.ts @@ -43,6 +43,13 @@ export API_KEY="${apiKey}"`, { "index" : { "_index" : "books" } } {"name": "The Handmaid'"'"'s Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311} '`, + ingestDataIndex: ({ apiKey, url, indexName }) => `curl -X POST ${url}/_bulk?pretty \\ + -H "Authorization: ApiKey ${apiKey}" \\ + -H "Content-Type: application/json" \\ + -d' +{ "index" : { "_index" : "${indexName ?? 'index_name'}" } } +{"name": "foo", "title": "bar" } +`, installClient: `# if cURL is not already installed on your system # then install it with the package manager of your choice diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/javascript.ts b/x-pack/plugins/serverless_search/public/application/components/languages/javascript.ts index 09187c68670ee..9a3978081e404 100644 --- a/x-pack/plugins/serverless_search/public/application/components/languages/javascript.ts +++ b/x-pack/plugins/serverless_search/public/application/components/languages/javascript.ts @@ -59,6 +59,30 @@ bytes: 293, aborted: false } */`, + ingestDataIndex: ({ + apiKey, + url, + indexName, + }) => `const { Client } = require('@elastic/elasticsearch'); +const client = new Client({ + node: '${url}', + auth: { + apiKey: '${apiKey}' + } +}); +const dataset = [ + {'name': 'foo', 'title': 'bar'}, +]; + +// Index with the bulk helper +const result = await client.helpers.bulk({ + datasource: dataset, + onDocument (doc) { + return { index: { _index: '${indexName ?? 'index_name'}' }}; + } +}); +console.log(result); +`, installClient: 'npm install @elastic/elasticsearch@8', name: i18n.translate('xpack.serverlessSearch.languages.javascript', { defaultMessage: 'JavaScript / Node.js', diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/ruby.ts b/x-pack/plugins/serverless_search/public/application/components/languages/ruby.ts index c13ae7d5ced66..b6b8ce3c24428 100644 --- a/x-pack/plugins/serverless_search/public/application/components/languages/ruby.ts +++ b/x-pack/plugins/serverless_search/public/application/components/languages/ruby.ts @@ -7,6 +7,7 @@ import { i18n } from '@kbn/i18n'; import { docLinks } from '../../../../common/doc_links'; +import { INDEX_NAME_PLACEHOLDER } from '../../constants'; import { LanguageDefinition, Languages } from './types'; export const rubyDefinition: LanguageDefinition = { @@ -31,6 +32,18 @@ export const rubyDefinition: LanguageDefinition = { { index: { _index: 'books', data: {name: "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311} } } ] client.bulk(body: documents)`, + ingestDataIndex: ({ apiKey, url, indexName }) => `client = ElasticsearchServerless::Client.new( + api_key: '${apiKey}', + url: '${url}' +) + +documents = [ + { index: { _index: '${ + indexName ?? INDEX_NAME_PLACEHOLDER + }', data: {name: "foo", "title": "bar"} } }, +] +client.bulk(body: documents) +`, installClient: `# Requires Ruby version 3.0 or higher # From the project's root directory:$ gem build elasticsearch-serverless.gemspec diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/types.ts b/x-pack/plugins/serverless_search/public/application/components/languages/types.ts index 5e2fe63681389..7849b800fc1a0 100644 --- a/x-pack/plugins/serverless_search/public/application/components/languages/types.ts +++ b/x-pack/plugins/serverless_search/public/application/components/languages/types.ts @@ -21,6 +21,7 @@ export enum Languages { export interface LanguageDefinitionSnippetArguments { url: string; apiKey: string; + indexName?: string; } type CodeSnippet = string | ((args: LanguageDefinitionSnippetArguments) => string); @@ -33,6 +34,7 @@ export interface LanguageDefinition { iconType: string; id: Languages; ingestData: CodeSnippet; + ingestDataIndex: CodeSnippet; installClient: string; languageStyling?: string; name: string; diff --git a/x-pack/plugins/serverless_search/public/application/components/overview.tsx b/x-pack/plugins/serverless_search/public/application/components/overview.tsx index 59c0a0f2eca88..a683f64820785 100644 --- a/x-pack/plugins/serverless_search/public/application/components/overview.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/overview.tsx @@ -23,6 +23,7 @@ import React, { useMemo, useState } from 'react'; import { docLinks } from '../../../common/doc_links'; import { PLUGIN_ID } from '../../../common'; import { useKibanaServices } from '../hooks/use_kibana'; +import { API_KEY_PLACEHOLDER, ELASTICSEARCH_URL_PLACEHOLDER } from '../constants'; import { CodeBox } from './code_box'; import { javascriptDefinition } from './languages/javascript'; import { languageDefinitions } from './languages/languages'; @@ -35,9 +36,6 @@ import { SelectClientPanel } from './overview_panels/select_client'; import { ApiKeyPanel } from './api_key/api_key'; import { LanguageClientPanel } from './overview_panels/language_client_panel'; -const ELASTICSEARCH_URL_PLACEHOLDER = 'https://your_deployment_url'; -const API_KEY_PLACEHOLDER = 'your_api_key'; - export const ElasticsearchOverview = () => { const [selectedLanguage, setSelectedLanguage] = useState(javascriptDefinition); diff --git a/x-pack/plugins/serverless_search/public/application/constants.ts b/x-pack/plugins/serverless_search/public/application/constants.ts new file mode 100644 index 0000000000000..b0b122fa01b5c --- /dev/null +++ b/x-pack/plugins/serverless_search/public/application/constants.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const API_KEY_PLACEHOLDER = 'your_api_key'; +export const ELASTICSEARCH_URL_PLACEHOLDER = 'https://your_deployment_url'; +export const INDEX_NAME_PLACEHOLDER = 'index_name'; diff --git a/x-pack/plugins/serverless_search/public/application/routes.ts b/x-pack/plugins/serverless_search/public/application/routes.ts index 1a933d8f01717..bace5c55d54e2 100644 --- a/x-pack/plugins/serverless_search/public/application/routes.ts +++ b/x-pack/plugins/serverless_search/public/application/routes.ts @@ -9,3 +9,4 @@ export const MANAGEMENT_API_KEYS = '/app/management/security/api_keys'; // Server Routes export const CREATE_API_KEY_PATH = '/internal/security/api_key'; +export const FETCH_INDICES_PATH = '/internal/serverless_search/indices'; diff --git a/x-pack/plugins/serverless_search/server/lib/indices/fetch_indices.test.ts b/x-pack/plugins/serverless_search/server/lib/indices/fetch_indices.test.ts new file mode 100644 index 0000000000000..da2a229340c98 --- /dev/null +++ b/x-pack/plugins/serverless_search/server/lib/indices/fetch_indices.test.ts @@ -0,0 +1,122 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ByteSizeValue } from '@kbn/config-schema'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { fetchIndices } from './fetch_indices'; + +describe('fetch indices lib functions', () => { + const mockClient = { + indices: { + get: jest.fn(), + stats: jest.fn(), + }, + security: { + hasPrivileges: jest.fn(), + }, + asInternalUser: {}, + }; + + const regularIndexResponse = { + 'search-regular-index': { + aliases: {}, + }, + }; + + const regularIndexStatsResponse = { + indices: { + 'search-regular-index': { + health: 'green', + size: new ByteSizeValue(108000).toString(), + status: 'open', + total: { + docs: { + count: 100, + deleted: 0, + }, + store: { + size_in_bytes: 108000, + }, + }, + uuid: '83a81e7e-5955-4255-b008-5d6961203f57', + }, + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe('fetchIndices', () => { + it('should return regular index', async () => { + mockClient.indices.get.mockImplementation(() => ({ + ...regularIndexResponse, + })); + mockClient.indices.stats.mockImplementation(() => regularIndexStatsResponse); + + await expect( + fetchIndices(mockClient as unknown as ElasticsearchClient, 0, 20, 'search') + ).resolves.toEqual([{ count: 100, name: 'search-regular-index' }]); + expect(mockClient.indices.get).toHaveBeenCalledWith({ + expand_wildcards: ['open'], + features: ['aliases', 'settings'], + index: '*search*', + }); + + expect(mockClient.indices.stats).toHaveBeenCalledWith({ + index: ['search-regular-index'], + metric: ['docs'], + }); + }); + + it('should not return hidden indices', async () => { + mockClient.indices.get.mockImplementation(() => ({ + ...regularIndexResponse, + ['search-regular-index']: { + ...regularIndexResponse['search-regular-index'], + ...{ settings: { index: { hidden: 'true' } } }, + }, + })); + mockClient.indices.stats.mockImplementation(() => regularIndexStatsResponse); + + await expect( + fetchIndices(mockClient as unknown as ElasticsearchClient, 0, 20) + ).resolves.toEqual([]); + expect(mockClient.indices.get).toHaveBeenCalledWith({ + expand_wildcards: ['open'], + features: ['aliases', 'settings'], + index: '*', + }); + + expect(mockClient.indices.stats).not.toHaveBeenCalled(); + }); + + it('should handle index missing in stats call', async () => { + const missingStatsResponse = { + indices: { + some_other_index: { ...regularIndexStatsResponse.indices['search-regular-index'] }, + }, + }; + + mockClient.indices.get.mockImplementationOnce(() => regularIndexResponse); + mockClient.indices.stats.mockImplementationOnce(() => missingStatsResponse); + // simulates when an index has been deleted after get indices call + // deleted index won't be present in the indices stats call response + await expect( + fetchIndices(mockClient as unknown as ElasticsearchClient, 0, 20, 'search') + ).resolves.toEqual([{ count: 0, name: 'search-regular-index' }]); + }); + + it('should return empty array when no index found', async () => { + mockClient.indices.get.mockImplementationOnce(() => ({})); + await expect( + fetchIndices(mockClient as unknown as ElasticsearchClient, 0, 20, 'search') + ).resolves.toEqual([]); + expect(mockClient.indices.stats).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/x-pack/plugins/serverless_search/server/lib/indices/fetch_indices.ts b/x-pack/plugins/serverless_search/server/lib/indices/fetch_indices.ts new file mode 100644 index 0000000000000..9560bbe7f9bb3 --- /dev/null +++ b/x-pack/plugins/serverless_search/server/lib/indices/fetch_indices.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 { IndicesStatsIndicesStats } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { isNotNullish } from '../../../common/utils/is_not_nullish'; +import { isHidden, isClosed } from '../../utils/index_utils'; + +export async function fetchIndices( + client: ElasticsearchClient, + from: number, + size: number, + searchQuery?: string +) { + const indexPattern = searchQuery ? `*${searchQuery}*` : '*'; + const indexMatches = await client.indices.get({ + expand_wildcards: ['open'], + // for better performance only compute settings of indices but not mappings + features: ['aliases', 'settings'], + index: indexPattern, + }); + const indexNames = Object.keys(indexMatches).filter( + (indexName) => + indexMatches[indexName] && + !isHidden(indexMatches[indexName]) && + !isClosed(indexMatches[indexName]) + ); + const indexNameSlice = indexNames.slice(from, from + size).filter(isNotNullish); + if (indexNameSlice.length === 0) { + return []; + } + const indexCounts = await fetchIndexCounts(client, indexNameSlice); + return indexNameSlice.map((name) => ({ + name, + count: indexCounts[name]?.total?.docs?.count ?? 0, + })); +} + +const fetchIndexCounts = async ( + client: ElasticsearchClient, + indicesNames: string[] +): Promise> => { + if (indicesNames.length === 0) { + return {}; + } + const indexCounts: Record = {}; + // batch calls in batches of 100 to prevent loading too much onto ES + for (let i = 0; i < indicesNames.length; i += 100) { + const stats = await client.indices.stats({ + index: indicesNames.slice(i, i + 100), + metric: ['docs'], + }); + Object.assign(indexCounts, stats.indices); + } + return indexCounts; +}; diff --git a/x-pack/plugins/serverless_search/server/plugin.ts b/x-pack/plugins/serverless_search/server/plugin.ts index caa53bcf0adb0..760e59f82199c 100644 --- a/x-pack/plugins/serverless_search/server/plugin.ts +++ b/x-pack/plugins/serverless_search/server/plugin.ts @@ -8,6 +8,7 @@ import { IRouter, Logger, PluginInitializerContext, Plugin, CoreSetup } from '@kbn/core/server'; import { SecurityPluginStart } from '@kbn/security-plugin/server'; import { registerApiKeyRoutes } from './routes/api_key_routes'; +import { registerIndicesRoutes } from './routes/indices_routes'; import { ServerlessSearchConfig } from './config'; import { ServerlessSearchPluginSetup, ServerlessSearchPluginStart } from './types'; @@ -41,6 +42,7 @@ export class ServerlessSearchPlugin const dependencies = { logger: this.logger, router, security: this.security }; registerApiKeyRoutes(dependencies); + registerIndicesRoutes(dependencies); }); return {}; } diff --git a/x-pack/plugins/serverless_search/server/routes/indices_routes.ts b/x-pack/plugins/serverless_search/server/routes/indices_routes.ts new file mode 100644 index 0000000000000..75f2d737ccc90 --- /dev/null +++ b/x-pack/plugins/serverless_search/server/routes/indices_routes.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { schema } from '@kbn/config-schema'; + +import { fetchIndices } from '../lib/indices/fetch_indices'; +import { RouteDependencies } from '../plugin'; + +export const registerIndicesRoutes = ({ router, security }: RouteDependencies) => { + router.get( + { + path: '/internal/serverless_search/indices', + validate: { + query: schema.object({ + from: schema.number({ defaultValue: 0, min: 0 }), + search_query: schema.maybe(schema.string()), + size: schema.number({ defaultValue: 20, min: 0 }), + }), + }, + }, + async (context, request, response) => { + const client = (await context.core).elasticsearch.client.asCurrentUser; + const user = security.authc.getCurrentUser(request); + + if (!user) { + return response.customError({ + statusCode: 502, + body: 'Could not retrieve current user, security plugin is not ready', + }); + } + + const { from, size, search_query: searchQuery } = request.query; + + const indices = await fetchIndices(client, from, size, searchQuery); + return response.ok({ + body: { + indices, + }, + headers: { 'content-type': 'application/json' }, + }); + } + ); +}; diff --git a/x-pack/plugins/serverless_search/server/utils/index_utils.ts b/x-pack/plugins/serverless_search/server/utils/index_utils.ts new file mode 100644 index 0000000000000..043bb80d7f8d0 --- /dev/null +++ b/x-pack/plugins/serverless_search/server/utils/index_utils.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IndicesIndexState } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; + +export function isHidden(index: IndicesIndexState): boolean { + return index.settings?.index?.hidden === true || index.settings?.index?.hidden === 'true'; +} + +export function isClosed(index: IndicesIndexState): boolean { + return ( + index.settings?.index?.verified_before_close === true || + index.settings?.index?.verified_before_close === 'true' + ); +} diff --git a/x-pack/plugins/serverless_search/tsconfig.json b/x-pack/plugins/serverless_search/tsconfig.json index c9cd5562ff562..e62623958886c 100644 --- a/x-pack/plugins/serverless_search/tsconfig.json +++ b/x-pack/plugins/serverless_search/tsconfig.json @@ -27,5 +27,6 @@ "@kbn/security-plugin", "@kbn/cloud-plugin", "@kbn/share-plugin", + "@kbn/core-elasticsearch-server", ] } From 85c1e03d4f967f069c59b9e52bf4d52594ebeccc Mon Sep 17 00:00:00 2001 From: Alison Goryachev Date: Thu, 29 Jun 2023 12:10:16 -0400 Subject: [PATCH 20/41] [Console] Run console test on chrome only (#160442) --- test/functional/apps/console/_variables.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/functional/apps/console/_variables.ts b/test/functional/apps/console/_variables.ts index 70fe54517ea8d..8e09460b4dc6c 100644 --- a/test/functional/apps/console/_variables.ts +++ b/test/functional/apps/console/_variables.ts @@ -14,9 +14,9 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { const log = getService('log'); const PageObjects = getPageObjects(['common', 'console', 'header']); - // Failing: See https://github.com/elastic/kibana/issues/157776 - describe.skip('Console variables', function testConsoleVariables() { - this.tags('includeFirefox'); + describe('Console variables', function testConsoleVariables() { + // FLAKY on firefox: https://github.com/elastic/kibana/issues/157776 + // this.tags('includeFirefox'); before(async () => { log.debug('navigateTo console'); await PageObjects.common.navigateToApp('console'); From f8f712e855f0e4d2b06252e3d6f0afbfb3ed2a77 Mon Sep 17 00:00:00 2001 From: Stavros Kroustouris Date: Thu, 29 Jun 2023 18:21:24 +0200 Subject: [PATCH 21/41] Revert "[TLS-446] Update pipeline to use gpctl" (#160900) Reverts elastic/kibana#160508 gpctl clones the repo to verify the commit, but since cloning kibana is not trivial, ill revert for now, until we find a better way to handle the above on gpctl. --- .buildkite/scripts/steps/artifacts/docker_image.sh | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.buildkite/scripts/steps/artifacts/docker_image.sh b/.buildkite/scripts/steps/artifacts/docker_image.sh index 77598858c70d4..aa75a2b1422cd 100755 --- a/.buildkite/scripts/steps/artifacts/docker_image.sh +++ b/.buildkite/scripts/steps/artifacts/docker_image.sh @@ -83,18 +83,9 @@ echo "--- Trigger image tag update" if [[ "$BUILDKITE_BRANCH" == "$KIBANA_BASE_BRANCH" ]]; then cat << EOF | buildkite-agent pipeline upload steps: - - label: ":argo: Update kibana image tag for kibana-controller using gpctl" - async: true - branches: main - trigger: gpctl-promote - build: - env: - SERVICE_COMMIT_HASH: $GIT_ABBREV_COMMIT - REMOTE_SERVICE_CONFIG: https://raw.githubusercontent.com/elastic/serverless-gitops/main/gen/gpctl/kibana/config.yaml - - trigger: serverless-gitops-update-stack-image-tag async: true - label: ":argo: Update image tag for Kibana using the legacy script (used in QA/Staging)" + label: ":argo: Update image tag for Kibana" branches: main build: env: From 5c422a8d2494cccbc91920cc214a44e0948c2400 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 29 Jun 2023 17:31:12 +0100 Subject: [PATCH 22/41] skip flaky suite (#159368, #159369) --- x-pack/test/functional/apps/infra/hosts_view.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/infra/hosts_view.ts b/x-pack/test/functional/apps/infra/hosts_view.ts index c57944470fcac..ffb7e09099916 100644 --- a/x-pack/test/functional/apps/infra/hosts_view.ts +++ b/x-pack/test/functional/apps/infra/hosts_view.ts @@ -245,7 +245,9 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); - describe('#Single host Flyout', () => { + // FLAKY: https://github.com/elastic/kibana/issues/159368 + // FLAKY: https://github.com/elastic/kibana/issues/159369 + describe.skip('#Single host Flyout', () => { before(async () => { await setHostViewEnabled(true); await pageObjects.common.navigateToApp(HOSTS_VIEW_PATH); From 6349724ff26d23fe927d8cb69fef642d76b396df Mon Sep 17 00:00:00 2001 From: Christos Nasikas Date: Thu, 29 Jun 2023 19:33:20 +0300 Subject: [PATCH 23/41] [Cases] Test `case_view_activity.test.tsx` suite (#160639) ## Summary Fixes flaky tests in `x-pack/plugins/cases/public/components/case_view/components/case_view_activity.test.tsx` Successful runs: - https://github.com/elastic/kibana/pull/160639/commits/a7a19c1a74df5ca9202dcb1516b9284d3faf2b2a (40 times) - https://github.com/elastic/kibana/pull/160639/commits/f5e0645ebd3f8bbfedab52bea02669d3e1fe9b06 (45 times) - https://github.com/elastic/kibana/pull/160639/commits/d9838cc71ba130612b3e6610df453987d39bfe42 (40 times) Fixes: https://github.com/elastic/kibana/issues/151981, https://github.com/elastic/kibana/issues/151979, https://github.com/elastic/kibana/issues/151980, https://github.com/elastic/kibana/issues/152209, https://github.com/elastic/kibana/issues/152207, https://github.com/elastic/kibana/issues/152208, https://github.com/elastic/kibana/issues/152203, https://github.com/elastic/kibana/issues/152203, https://github.com/elastic/kibana/issues/152201, https://github.com/elastic/kibana/issues/152206, https://github.com/elastic/kibana/issues/152202,https://github.com/elastic/kibana/issues/152205, https://github.com/elastic/kibana/issues/152204, https://github.com/elastic/kibana/issues/152200 ### Checklist Delete any items that are not applicable to this PR. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios ### For maintainers - [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> --- .../components/case_view_activity.test.tsx | 428 +++++++++--------- 1 file changed, 226 insertions(+), 202 deletions(-) diff --git a/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.test.tsx b/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.test.tsx index b50319d2fbfc9..bd604514b4cfa 100644 --- a/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.test.tsx +++ b/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.test.tsx @@ -7,8 +7,7 @@ import React from 'react'; import userEvent from '@testing-library/user-event'; -import { screen } from '@testing-library/react'; -import { fireEvent, waitFor, within } from '@testing-library/dom'; +import { screen, waitFor, within, fireEvent } from '@testing-library/react'; import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; import { alertComment, @@ -38,6 +37,7 @@ import { ActionTypes } from '../../../../common/api'; import { useGetCaseUserActionsStats } from '../../../containers/use_get_case_user_actions_stats'; import { useInfiniteFindCaseUserActions } from '../../../containers/use_infinite_find_case_user_actions'; import { useOnUpdateField } from '../use_on_update_field'; +import { useCasesFeatures } from '../../../common/use_cases_features'; jest.mock('../../../containers/use_infinite_find_case_user_actions'); jest.mock('../../../containers/use_find_case_user_actions'); @@ -55,6 +55,7 @@ jest.mock('../../../containers/user_profiles/use_bulk_get_user_profiles'); jest.mock('../../../containers/use_get_case_connectors'); jest.mock('../../../containers/use_get_case_users'); jest.mock('../use_on_update_field'); +jest.mock('../../../common/use_cases_features'); (useGetTags as jest.Mock).mockReturnValue({ data: ['coke', 'pepsi'], refetch: jest.fn() }); (useGetCategories as jest.Mock).mockReturnValue({ data: ['foo', 'bar'], refetch: jest.fn() }); @@ -107,7 +108,7 @@ const userActionsStats = { totalOtherActions: 11, }; -export const caseProps = { +const caseProps = { ...caseViewProps, caseData, fetchCaseMetrics: jest.fn(), @@ -115,6 +116,13 @@ export const caseProps = { }; const caseUsers = getCaseUsersMockResponse(); +const useGetCasesFeaturesRes = { + metricsFeatures: ['alerts.count'], + pushToServiceAuthorized: true, + caseAssignmentAuthorized: true, + isAlertsEnabled: true, + isSyncAlertsEnabled: true, +}; const useFindCaseUserActionsMock = useFindCaseUserActions as jest.Mock; const useInfiniteFindCaseUserActionsMock = useInfiniteFindCaseUserActions as jest.Mock; @@ -124,10 +132,8 @@ const usePostPushToServiceMock = usePostPushToService as jest.Mock; const useGetCaseConnectorsMock = useGetCaseConnectors as jest.Mock; const useGetCaseUsersMock = useGetCaseUsers as jest.Mock; const useOnUpdateFieldMock = useOnUpdateField as jest.Mock; +const useCasesFeaturesMock = useCasesFeatures as jest.Mock; -// FLAKY: https://github.com/elastic/kibana/issues/151979 -// FLAKY: https://github.com/elastic/kibana/issues/151980 -// FLAKY: https://github.com/elastic/kibana/issues/151981 describe('Case View Page activity tab', () => { const caseConnectors = getCaseConnectorsMockResponse(); @@ -162,19 +168,21 @@ describe('Case View Page activity tab', () => { beforeEach(() => { jest.clearAllMocks(); appMockRender = createAppMockRenderer(); + useGetCaseUsersMock.mockReturnValue({ isLoading: false, data: caseUsers }); + useCasesFeaturesMock.mockReturnValue(useGetCasesFeaturesRes); }); it('should render the activity content and main components', async () => { appMockRender = createAppMockRenderer({ license: platinumLicense }); appMockRender.render(); - expect(screen.getByTestId('case-view-activity')).toBeInTheDocument(); - expect(screen.getAllByTestId('user-actions-list')).toHaveLength(2); - expect(screen.getByTestId('case-tags')).toBeInTheDocument(); - expect(screen.getByTestId('cases-categories')).toBeInTheDocument(); - expect(screen.getByTestId('connector-edit-header')).toBeInTheDocument(); - expect(screen.getByTestId('case-view-status-action-button')).toBeInTheDocument(); + expect(await screen.findByTestId('case-view-activity')).toBeInTheDocument(); + expect(await screen.findAllByTestId('user-actions-list')).toHaveLength(2); + expect(await screen.findByTestId('case-tags')).toBeInTheDocument(); + expect(await screen.findByTestId('cases-categories')).toBeInTheDocument(); + expect(await screen.findByTestId('connector-edit-header')).toBeInTheDocument(); + expect(await screen.findByTestId('case-view-status-action-button')).toBeInTheDocument(); await waitForComponentToUpdate(); }); @@ -185,18 +193,18 @@ describe('Case View Page activity tab', () => { const lastPageForAll = Math.ceil(userActionsStats.total / userActivityQueryParams.perPage); - expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( - caseData.id, - userActivityQueryParams, - true - ); - expect(useFindCaseUserActionsMock).toHaveBeenCalledWith( - caseData.id, - { ...userActivityQueryParams, page: lastPageForAll }, - true - ); - - await waitForComponentToUpdate(); + await waitFor(() => { + expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( + caseData.id, + userActivityQueryParams, + true + ); + expect(useFindCaseUserActionsMock).toHaveBeenCalledWith( + caseData.id, + { ...userActivityQueryParams, page: lastPageForAll }, + true + ); + }); }); it('should not render the case view status button when the user does not have update permissions', async () => { @@ -205,13 +213,13 @@ describe('Case View Page activity tab', () => { license: platinumLicense, }); - const result = appMockRender.render(); - expect(result.getByTestId('case-view-activity')).toBeInTheDocument(); - expect(screen.getAllByTestId('user-actions-list')).toHaveLength(2); - expect(result.getByTestId('case-tags')).toBeInTheDocument(); - expect(screen.getByTestId('cases-categories')).toBeInTheDocument(); - expect(result.getByTestId('connector-edit-header')).toBeInTheDocument(); - expect(result.queryByTestId('case-view-status-action-button')).not.toBeInTheDocument(); + appMockRender.render(); + expect(await screen.findByTestId('case-view-activity')).toBeInTheDocument(); + expect(await screen.findAllByTestId('user-actions-list')).toHaveLength(2); + expect(await screen.findByTestId('case-tags')).toBeInTheDocument(); + expect(await screen.findByTestId('cases-categories')).toBeInTheDocument(); + expect(await screen.findByTestId('connector-edit-header')).toBeInTheDocument(); + expect(screen.queryByTestId('case-view-status-action-button')).not.toBeInTheDocument(); await waitForComponentToUpdate(); }); @@ -222,80 +230,88 @@ describe('Case View Page activity tab', () => { license: platinumLicense, }); - const result = appMockRender.render(); - expect(result.getByTestId('case-view-activity')).toBeInTheDocument(); - expect(screen.getAllByTestId('user-actions-list')).toHaveLength(2); - expect(result.getByTestId('case-tags')).toBeInTheDocument(); - expect(screen.getByTestId('cases-categories')).toBeInTheDocument(); - expect(result.getByTestId('connector-edit-header')).toBeInTheDocument(); - expect(result.getByTestId('case-severity-selection')).toBeDisabled(); + appMockRender.render(); + expect(await screen.findByTestId('case-view-activity')).toBeInTheDocument(); + expect(await screen.findAllByTestId('user-actions-list')).toHaveLength(2); + expect(await screen.findByTestId('case-tags')).toBeInTheDocument(); + expect(await screen.findByTestId('cases-categories')).toBeInTheDocument(); + expect(await screen.findByTestId('connector-edit-header')).toBeInTheDocument(); + expect(await screen.findByTestId('case-severity-selection')).toBeDisabled(); await waitForComponentToUpdate(); }); - it('should show a loading when loading user actions stats', () => { + it('should show a loading when loading user actions stats', async () => { useGetCaseUserActionsStatsMock.mockReturnValue({ isLoading: true }); - const result = appMockRender.render(); - expect(result.getByTestId('case-view-loading-content')).toBeInTheDocument(); - expect(result.queryByTestId('case-view-activity')).not.toBeInTheDocument(); - expect(result.queryByTestId('user-actions-list')).not.toBeInTheDocument(); + appMockRender.render(); + expect(await screen.findByTestId('case-view-loading-content')).toBeInTheDocument(); + expect(screen.queryByTestId('case-view-activity')).not.toBeInTheDocument(); + expect(screen.queryByTestId('user-actions-list')).not.toBeInTheDocument(); }); it('should show a loading when updating severity ', async () => { useOnUpdateFieldMock.mockReturnValue({ isLoading: true, loadingKey: 'severity' }); - const result = appMockRender.render(); + appMockRender.render(); expect( - result - .getByTestId('case-severity-selection') - .classList.contains('euiSuperSelectControl-isLoading') + (await screen.findByTestId('case-severity-selection')).classList.contains( + 'euiSuperSelectControl-isLoading' + ) ).toBeTruthy(); }); it('should not show a loading for severity when updating tags', async () => { useOnUpdateFieldMock.mockReturnValue({ isLoading: true, loadingKey: 'tags' }); - const result = appMockRender.render(); + appMockRender.render(); expect( - result - .getByTestId('case-severity-selection') - .classList.contains('euiSuperSelectControl-isLoading') + (await screen.findByTestId('case-severity-selection')).classList.contains( + 'euiSuperSelectControl-isLoading' + ) ).not.toBeTruthy(); }); it('should not render the assignees on basic license', () => { + useCasesFeaturesMock.mockReturnValue({ + ...useGetCasesFeaturesRes, + caseAssignmentAuthorized: false, + }); + appMockRender = createAppMockRenderer({ license: basicLicense }); - const result = appMockRender.render(); - expect(result.queryByTestId('case-view-assignees')).toBeNull(); + appMockRender.render(); + expect(screen.queryByTestId('case-view-assignees')).not.toBeInTheDocument(); }); it('should render the assignees on platinum license', async () => { appMockRender = createAppMockRenderer({ license: platinumLicense }); - const result = appMockRender.render(); - expect(result.getByTestId('case-view-assignees')).toBeInTheDocument(); + appMockRender.render(); + expect(await screen.findByTestId('case-view-assignees')).toBeInTheDocument(); await waitForComponentToUpdate(); }); it('should not render the connector on basic license', () => { + useCasesFeaturesMock.mockReturnValue({ + ...useGetCasesFeaturesRes, + pushToServiceAuthorized: false, + }); + appMockRender = createAppMockRenderer({ license: basicLicense }); - const result = appMockRender.render(); - expect(result.queryByTestId('case-view-edit-connector')).toBeNull(); + appMockRender.render(); + expect(screen.queryByTestId('case-view-edit-connector')).not.toBeInTheDocument(); }); it('should render the connector on platinum license', async () => { appMockRender = createAppMockRenderer({ license: platinumLicense }); - const result = appMockRender.render(); + appMockRender.render(); - await waitFor(() => { - expect(result.getByTestId('case-view-edit-connector')).toBeInTheDocument(); - }); + expect(await screen.findByTestId('case-view-edit-connector')).toBeInTheDocument(); }); describe('filter activity', () => { @@ -303,7 +319,10 @@ describe('Case View Page activity tab', () => { jest.clearAllMocks(); useFindCaseUserActionsMock.mockReturnValue(defaultUseFindCaseUserActions); useInfiniteFindCaseUserActionsMock.mockReturnValue(defaultInfiniteUseFindCaseUserActions); - useGetCaseUserActionsStatsMock.mockReturnValue({ data: userActionsStats, isLoading: false }); + useGetCaseUserActionsStatsMock.mockReturnValue({ + data: userActionsStats, + isLoading: false, + }); }); it('should show all filter as active', async () => { @@ -311,28 +330,32 @@ describe('Case View Page activity tab', () => { const lastPageForAll = Math.ceil(userActionsStats.total / userActivityQueryParams.perPage); + expect(await screen.findByTestId('user-actions-activity-bar')); userEvent.click(screen.getByTestId('user-actions-filter-activity-button-all')); - await waitFor(() => { - expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( - caseData.id, - userActivityQueryParams, - true - ); - expect(useFindCaseUserActionsMock).toHaveBeenCalledWith( - caseData.id, - { ...userActivityQueryParams, page: lastPageForAll }, - true - ); - expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); - }); + expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( + caseData.id, + userActivityQueryParams, + true + ); - await waitFor(() => { - expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); - expect(screen.getByLabelText(`${userActionsStats.total} active filters`)); - expect(screen.getByLabelText(`${userActionsStats.totalComments} available filters`)); - expect(screen.getByLabelText(`${userActionsStats.totalOtherActions} available filters`)); - }); + expect(useFindCaseUserActionsMock).toHaveBeenCalledWith( + caseData.id, + { ...userActivityQueryParams, page: lastPageForAll }, + true + ); + + expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); + }); + + it('should call user action hooks correctly when filtering for all', async () => { + appMockRender.render(); + + userEvent.click(await screen.findByTestId('user-actions-filter-activity-button-all')); + + expect(screen.getByLabelText(`${userActionsStats.total} active filters`)); + expect(screen.getByLabelText(`${userActionsStats.totalComments} available filters`)); + expect(screen.getByLabelText(`${userActionsStats.totalOtherActions} available filters`)); }); it('should show comment filter as active', async () => { @@ -342,72 +365,87 @@ describe('Case View Page activity tab', () => { userActionsStats.totalComments / userActivityQueryParams.perPage ); + expect(await screen.findByTestId('user-actions-activity-bar')); userEvent.click(screen.getByTestId('user-actions-filter-activity-button-comments')); - await waitFor(() => { - expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); - expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( - caseData.id, - { ...userActivityQueryParams, type: 'user' }, - true - ); - expect(useFindCaseUserActionsMock).toHaveBeenCalledWith( - caseData.id, - { ...userActivityQueryParams, type: 'user', page: lastPageForComment }, - false - ); - }); + expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); + expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( + caseData.id, + { ...userActivityQueryParams, type: 'user' }, + true + ); + expect(useFindCaseUserActionsMock).toHaveBeenCalledWith( + caseData.id, + { ...userActivityQueryParams, type: 'user', page: lastPageForComment }, + false + ); + }); - await waitFor(() => { - expect(screen.getByLabelText(`${userActionsStats.totalComments} active filters`)); - expect(screen.getByLabelText(`${userActionsStats.total} available filters`)); - expect(screen.getByLabelText(`${userActionsStats.totalOtherActions} available filters`)); - }); + it('should call user action hooks correctly when filtering for comments', async () => { + appMockRender.render(); + + expect(await screen.findByTestId('user-actions-activity-bar')); + userEvent.click(screen.getByTestId('user-actions-filter-activity-button-comments')); + + expect(screen.getByLabelText(`${userActionsStats.totalComments} active filters`)); + expect(screen.getByLabelText(`${userActionsStats.total} available filters`)); + expect(screen.getByLabelText(`${userActionsStats.totalOtherActions} available filters`)); }); - it('should show history filter as active', async () => { + it('should show history as active filter correctly', async () => { + appMockRender.render(); + + expect(await screen.findByTestId('user-actions-activity-bar')); + userEvent.click(screen.getByTestId('user-actions-filter-activity-button-history')); + + expect(screen.getByLabelText(`${userActionsStats.totalOtherActions} active filters`)); + expect(screen.getByLabelText(`${userActionsStats.totalComments} available filters`)); + expect(screen.getByLabelText(`${userActionsStats.total} available filters`)); + }); + + it('should call user action hooks correctly when filtering for history', async () => { appMockRender.render(); const lastPageForHistory = Math.ceil( userActionsStats.totalOtherActions / userActivityQueryParams.perPage ); + expect(await screen.findByTestId('user-actions-activity-bar')); userEvent.click(screen.getByTestId('user-actions-filter-activity-button-history')); - await waitFor(() => { - expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); - expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( - caseData.id, - { ...userActivityQueryParams, type: 'action' }, - true - ); - expect(useFindCaseUserActionsMock).toHaveBeenCalledWith( - caseData.id, - { ...userActivityQueryParams, type: 'action', page: lastPageForHistory }, - true - ); - }); - - await waitFor(() => { - expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); - expect(screen.getByLabelText(`${userActionsStats.totalOtherActions} active filters`)); - expect(screen.getByLabelText(`${userActionsStats.totalComments} available filters`)); - expect(screen.getByLabelText(`${userActionsStats.total} available filters`)); - }); + expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); + expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( + caseData.id, + { ...userActivityQueryParams, type: 'action' }, + true + ); + expect(useFindCaseUserActionsMock).toHaveBeenCalledWith( + caseData.id, + { ...userActivityQueryParams, type: 'action', page: lastPageForHistory }, + true + ); }); it('should render by desc sort order', async () => { appMockRender.render(); - const sortSelect = screen.getByTestId('user-actions-sort-select'); + const sortSelect = await screen.findByTestId('user-actions-sort-select'); fireEvent.change(sortSelect, { target: { value: 'desc' } }); await waitFor(() => { expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); - expect(screen.getByLabelText(`${userActionsStats.total} active filters`)); - expect(screen.getByLabelText(`${userActionsStats.totalComments} available filters`)); - expect(screen.getByLabelText(`${userActionsStats.totalOtherActions} available filters`)); + expect(useFindCaseUserActionsMock).toHaveBeenCalledWith( + caseData.id, + { type: 'all', sortOrder: 'desc', page: 3, perPage: 10 }, + true + ); + + expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( + caseData.id, + { type: 'all', sortOrder: 'desc', page: 1, perPage: 10 }, + true + ); }); }); }); @@ -416,54 +454,55 @@ describe('Case View Page activity tab', () => { describe('Participants', () => { it('should render the participants correctly', async () => { appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); - const participantsSection = within(result.getByTestId('case-view-user-list-participants')); - - await waitFor(() => { - expect(participantsSection.getByText('Participant 1')).toBeInTheDocument(); - expect(participantsSection.getByText('participant_2@elastic.co')).toBeInTheDocument(); - expect(participantsSection.getByText('participant_3')).toBeInTheDocument(); - expect(participantsSection.getByText('P4')).toBeInTheDocument(); - expect(participantsSection.getByText('Participant 5')).toBeInTheDocument(); - }); + appMockRender.render(); + + const participantsSection = within( + await screen.findByTestId('case-view-user-list-participants') + ); + + expect(await participantsSection.findByText('Participant 1')).toBeInTheDocument(); + expect( + await participantsSection.findByText('participant_2@elastic.co') + ).toBeInTheDocument(); + expect(await participantsSection.findByText('participant_3')).toBeInTheDocument(); + expect(await participantsSection.findByText('P4')).toBeInTheDocument(); + expect(await participantsSection.findByText('Participant 5')).toBeInTheDocument(); }); it('should render Unknown users correctly', async () => { appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); + appMockRender.render(); - const participantsSection = within(result.getByTestId('case-view-user-list-participants')); + const participantsSection = within( + await screen.findByTestId('case-view-user-list-participants') + ); - await waitFor(() => { - expect(participantsSection.getByText('Unknown')).toBeInTheDocument(); - }); + expect(await participantsSection.findByText('Unknown')).toBeInTheDocument(); }); it('should render assignees in the participants section', async () => { appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); + appMockRender.render(); - const participantsSection = within(result.getByTestId('case-view-user-list-participants')); + const participantsSection = within( + await screen.findByTestId('case-view-user-list-participants') + ); - await waitFor(() => { - expect(participantsSection.getByText('Unknown')).toBeInTheDocument(); - expect(participantsSection.getByText('Fuzzy Marten')).toBeInTheDocument(); - expect(participantsSection.getByText('elastic')).toBeInTheDocument(); - expect(participantsSection.getByText('Misty Mackerel')).toBeInTheDocument(); - }); + expect(await participantsSection.findByText('Unknown')).toBeInTheDocument(); + expect(await participantsSection.findByText('Fuzzy Marten')).toBeInTheDocument(); + expect(await participantsSection.findByText('elastic')).toBeInTheDocument(); + expect(await participantsSection.findByText('Misty Mackerel')).toBeInTheDocument(); }); }); describe('Reporter', () => { it('should render the reporter correctly', async () => { appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); - const reporterSection = within(result.getByTestId('case-view-user-list-reporter')); + appMockRender.render(); + const reporterSection = within(await screen.findByTestId('case-view-user-list-reporter')); - await waitFor(() => { - expect(reporterSection.getByText('Reporter 1')).toBeInTheDocument(); - expect(reporterSection.getByText('R1')).toBeInTheDocument(); - }); + expect(await reporterSection.findByText('Reporter 1')).toBeInTheDocument(); + expect(await reporterSection.findByText('R1')).toBeInTheDocument(); }); it('should render a reporter without uid correctly', async () => { @@ -482,12 +521,11 @@ describe('Case View Page activity tab', () => { }); appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); - const reporterSection = within(result.getByTestId('case-view-user-list-reporter')); + appMockRender.render(); - await waitFor(() => { - expect(reporterSection.getByText('Reporter No UID')).toBeInTheDocument(); - }); + const reporterSection = within(await screen.findByTestId('case-view-user-list-reporter')); + + expect(await reporterSection.findByText('Reporter No UID')).toBeInTheDocument(); }); it('fallbacks to the caseData reporter correctly', async () => { @@ -497,19 +535,17 @@ describe('Case View Page activity tab', () => { }); appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); - const reporterSection = within(result.getByTestId('case-view-user-list-reporter')); + appMockRender.render(); + const reporterSection = within(await screen.findByTestId('case-view-user-list-reporter')); - await waitFor(() => { - expect(reporterSection.getByText('Leslie Knope')).toBeInTheDocument(); - }); + expect(await reporterSection.findByText('Leslie Knope')).toBeInTheDocument(); }); }); describe('Assignees', () => { it('should render assignees in the participants section', async () => { appMockRender = createAppMockRenderer({ license: platinumLicense }); - const result = appMockRender.render( + appMockRender.render( { /> ); - const assigneesSection = within(await result.findByTestId('case-view-assignees')); + const assigneesSection = within(await screen.findByTestId('case-view-assignees')); - await waitFor(() => { - expect(assigneesSection.getByText('Unknown')).toBeInTheDocument(); - expect(assigneesSection.getByText('Fuzzy Marten')).toBeInTheDocument(); - expect(assigneesSection.getByText('elastic')).toBeInTheDocument(); - expect(assigneesSection.getByText('Misty Mackerel')).toBeInTheDocument(); - }); + expect(await assigneesSection.findByText('Unknown')).toBeInTheDocument(); + expect(await assigneesSection.findByText('Fuzzy Marten')).toBeInTheDocument(); + expect(await assigneesSection.findByText('elastic')).toBeInTheDocument(); + expect(await assigneesSection.findByText('Misty Mackerel')).toBeInTheDocument(); }); }); describe('User actions', () => { it('renders the description correctly', async () => { appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); + appMockRender.render(); - const description = within(result.getByTestId('description')); + const description = within(await screen.findByTestId('description')); - await waitFor(() => { - expect(description.getByText(caseData.description)).toBeInTheDocument(); - }); + expect(await description.findByText(caseData.description)).toBeInTheDocument(); }); it('renders edit description user action correctly', async () => { @@ -556,9 +588,9 @@ describe('Case View Page activity tab', () => { }); appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); + appMockRender.render(); - const userActions = within(result.getAllByTestId('user-actions-list')[1]); + const userActions = within((await screen.findAllByTestId('user-actions-list'))[1]); expect( userActions.getByTestId('description-update-action-description-update') @@ -574,14 +606,12 @@ describe('Case View Page activity tab', () => { }); appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); + appMockRender.render(); - const userActions = within(result.getAllByTestId('user-actions-list')[1]); + const userActions = within((await screen.findAllByTestId('user-actions-list'))[1]); - await waitFor(() => { - expect(userActions.getByText('cases_no_connectors')).toBeInTheDocument(); - expect(userActions.getByText('Valid Chimpanzee')).toBeInTheDocument(); - }); + expect(await userActions.findByText('cases_no_connectors')).toBeInTheDocument(); + expect(await userActions.findByText('Valid Chimpanzee')).toBeInTheDocument(); }); it('renders the assigned users correctly', async () => { @@ -602,14 +632,12 @@ describe('Case View Page activity tab', () => { }); appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); + appMockRender.render(); - const userActions = within(result.getAllByTestId('user-actions-list')[1]); + const userActions = within((await screen.findAllByTestId('user-actions-list'))[1]); - await waitFor(() => { - expect(userActions.getByText('Fuzzy Marten')).toBeInTheDocument(); - expect(userActions.getByText('Unknown')).toBeInTheDocument(); - }); + expect(await userActions.findByText('Fuzzy Marten')).toBeInTheDocument(); + expect(await userActions.findByText('Unknown')).toBeInTheDocument(); }); it('renders the user action users correctly', async () => { @@ -658,17 +686,15 @@ describe('Case View Page activity tab', () => { }); appMockRender = createAppMockRenderer(); - const result = appMockRender.render(); + appMockRender.render(); - const userActions = within(result.getAllByTestId('user-actions-list')[1]); + const userActions = within((await screen.findAllByTestId('user-actions-list'))[1]); - await waitFor(() => { - expect(userActions.getByText('Participant 1')).toBeInTheDocument(); - expect(userActions.getByText('participant_2@elastic.co')).toBeInTheDocument(); - expect(userActions.getByText('participant_3')).toBeInTheDocument(); - expect(userActions.getByText('P4')).toBeInTheDocument(); - expect(userActions.getByText('Participant 5')).toBeInTheDocument(); - }); + expect(await userActions.findByText('Participant 1')).toBeInTheDocument(); + expect(await userActions.findByText('participant_2@elastic.co')).toBeInTheDocument(); + expect(await userActions.findByText('participant_3')).toBeInTheDocument(); + expect(await userActions.findByText('P4')).toBeInTheDocument(); + expect(await userActions.findByText('Participant 5')).toBeInTheDocument(); }); }); @@ -684,9 +710,7 @@ describe('Case View Page activity tab', () => { /> ); - await waitFor(() => { - expect(screen.getByText('My category')); - }); + expect(await screen.findByText('My category')); }); }); }); From 9bc73379d44f14548497e89912bbbe3162bd1eea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20G=C3=BCrkan=20YALAMAN?= Date: Thu, 29 Jun 2023 18:35:59 +0200 Subject: [PATCH 24/41] [Enterprise Search] Fix scheduling wrongfully disabled for all types. (#160907) Scheduling is gated on certain conditions and only for Access Control syncs. This fixes an issue introduced by a previous PR. https://github.com/elastic/kibana/assets/1410658/d6d10aab-f283-42fa-bf01-54d0cdd8be26 ### Checklist Delete any items that are not applicable to this PR. - [ ] [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 --- .../connector/connector_scheduling/full_content.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 e260e1237af14..da8aaa3bb1a75 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 @@ -118,6 +118,9 @@ export const ConnectorContentScheduling: React.FC @@ -165,7 +168,7 @@ export const ConnectorContentScheduling: React.FC { if (e.target.checked) { @@ -187,7 +190,7 @@ export const ConnectorContentScheduling: React.FC ) : ( { if (e.target.checked) { From f3c6d0421d110034a537e7dd5d3feeb5b8aa9810 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 29 Jun 2023 17:37:09 +0100 Subject: [PATCH 25/41] skip failing es promotion suites (#160929) --- .../test/functional/apps/snapshot_restore/snapshot_restore.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/snapshot_restore/snapshot_restore.ts b/x-pack/test/functional/apps/snapshot_restore/snapshot_restore.ts index a1a6bfe6276f5..3b8ea30f5e98d 100644 --- a/x-pack/test/functional/apps/snapshot_restore/snapshot_restore.ts +++ b/x-pack/test/functional/apps/snapshot_restore/snapshot_restore.ts @@ -15,7 +15,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const es = getService('es'); const security = getService('security'); - describe('Snapshot restore', function () { + // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/160929 + describe.skip('Snapshot restore', function () { before(async () => { await security.testUser.setRoles(['snapshot_restore_user'], { skipBrowserRefresh: true }); await pageObjects.common.navigateToApp('snapshotRestore'); From 6f58507ea1a1af1ac3814e8973bd2cdebe7c80e2 Mon Sep 17 00:00:00 2001 From: Kevin Delemme Date: Thu, 29 Jun 2023 12:55:23 -0400 Subject: [PATCH 26/41] fix(slo): optimistic update (#160804) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves https://github.com/elastic/kibana/issues/160805 ## ⭐ Summary This PR fixes the optimistic updates when creating, updating, cloning or deleting an SLO. In a previous PR, I've introduced an issue with react query that breaks the optimistic updates in a few cases. The main issue is that `getQueryData` was not doing what I was expecting, therefore I reintroduced the previous `getQueriesData` usage. Also when no `queryKey` and `previousData` are present in `getQueriesData`, we don't set the optimistic data as it was initially done. This handles cases where you go directly to the creation form for example. Finally, I forgot to update an invalidateQueries for the rules when one is created on an SLO. https://www.loom.com/share/c9521bd9d04549b1bd5cc59a0a6ba1cd?sid=a72ea1dc-aa4d-4536-a410-16fe2a1d9416 --- .../public/hooks/slo/query_key_factory.ts | 4 +- .../public/hooks/slo/use_clone_slo.ts | 44 +++++++-------- .../public/hooks/slo/use_create_slo.ts | 51 +++++++++++------- .../public/hooks/slo/use_delete_slo.ts | 48 ++++++++--------- .../public/hooks/slo/use_fetch_slo_list.ts | 8 +-- .../public/hooks/slo/use_update_slo.ts | 53 +++++++++++++++---- .../pages/slos/components/slo_list_item.tsx | 3 +- 7 files changed, 129 insertions(+), 82 deletions(-) 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 1618ac0b3680a..28cf100d97bc9 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 @@ -7,7 +7,7 @@ import type { Indicator } from '@kbn/slo-schema'; -interface SloKeyFilter { +interface SloListFilter { name: string; page: number; sortBy: string; @@ -23,7 +23,7 @@ interface CompositeSloKeyFilter { export const sloKeys = { all: ['slo'] as const, lists: () => [...sloKeys.all, 'list'] as const, - list: (filters: SloKeyFilter) => [...sloKeys.lists(), filters] as const, + list: (filters: SloListFilter) => [...sloKeys.lists(), filters] as const, details: () => [...sloKeys.all, 'details'] as const, detail: (sloId?: string) => [...sloKeys.details(), sloId] as const, rules: () => [...sloKeys.all, 'rules'] as const, diff --git a/x-pack/plugins/observability/public/hooks/slo/use_clone_slo.ts b/x-pack/plugins/observability/public/hooks/slo/use_clone_slo.ts index 53853e993fd35..95fa7928ae299 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_clone_slo.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_clone_slo.ts @@ -5,11 +5,10 @@ * 2.0. */ -import { v1 as uuidv1 } from 'uuid'; -import { useMutation, useQueryClient } from '@tanstack/react-query'; import { i18n } from '@kbn/i18n'; import type { CreateSLOInput, CreateSLOResponse, FindSLOResponse } from '@kbn/slo-schema'; - +import { QueryKey, useMutation, useQueryClient } from '@tanstack/react-query'; +import { v1 as uuidv1 } from 'uuid'; import { useKibana } from '../../utils/kibana_react'; import { sloKeys } from './query_key_factory'; @@ -24,7 +23,7 @@ export function useCloneSlo() { CreateSLOResponse, string, { slo: CreateSLOInput; originalSloId?: string }, - { previousSloList: FindSLOResponse | undefined } + { previousData?: FindSLOResponse; queryKey?: QueryKey } >( ['cloneSlo'], ({ slo }: { slo: CreateSLOInput; originalSloId?: string }) => { @@ -33,34 +32,35 @@ export function useCloneSlo() { }, { onMutate: async ({ slo, originalSloId }) => { - // Cancel any outgoing refetches (so they don't overwrite our optimistic update) - await queryClient.cancelQueries(sloKeys.lists()); + await queryClient.cancelQueries({ queryKey: sloKeys.lists(), exact: false }); - const latestQueriesData = ( - queryClient.getQueriesData(sloKeys.lists()) ?? [] - ).at(0); - const [queryKey, data] = latestQueriesData ?? []; + const queriesData = queryClient.getQueriesData({ + queryKey: sloKeys.lists(), + exact: false, + }); + const [queryKey, previousData] = queriesData?.at(0) ?? []; - const originalSlo = data?.results?.find((el) => el.id === originalSloId); + const originalSlo = previousData?.results?.find((el) => el.id === originalSloId); const optimisticUpdate = { - ...data, + page: previousData?.page ?? 1, + perPage: previousData?.perPage ?? 25, + total: previousData?.total ? previousData.total + 1 : 1, results: [ - ...(data?.results ?? []), + ...(previousData?.results ?? []), { ...originalSlo, name: slo.name, id: uuidv1(), summary: undefined }, ], - total: data?.total ? data.total + 1 : 1, }; - // Optimistically update to the new value - queryClient.setQueryData(queryKey ?? sloKeys.lists(), optimisticUpdate); + if (queryKey) { + queryClient.setQueryData(queryKey, optimisticUpdate); + } - // Return a context object with the snapshotted value - return { previousSloList: data }; + return { queryKey, previousData }; }, // If the mutation fails, use the context returned from onMutate to roll back onError: (_err, { slo }, context) => { - if (context?.previousSloList) { - queryClient.setQueryData(sloKeys.lists(), context.previousSloList); + if (context?.previousData && context?.queryKey) { + queryClient.setQueryData(context.queryKey, context.previousData); } toasts.addDanger( i18n.translate('xpack.observability.slo.clone.errorNotification', { @@ -76,7 +76,9 @@ export function useCloneSlo() { values: { name: slo.name }, }) ); - queryClient.invalidateQueries(sloKeys.lists()); + }, + onSettled: () => { + queryClient.invalidateQueries({ queryKey: sloKeys.lists(), exact: false }); }, } ); diff --git a/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts b/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts index 87711d3d6136b..bcb97c6668f84 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts @@ -8,9 +8,8 @@ import { i18n } from '@kbn/i18n'; import { encode } from '@kbn/rison'; import type { CreateSLOInput, CreateSLOResponse, FindSLOResponse } from '@kbn/slo-schema'; -import { useMutation, useQueryClient } from '@tanstack/react-query'; +import { QueryKey, useMutation, useQueryClient } from '@tanstack/react-query'; import { v1 as uuidv1 } from 'uuid'; - import { paths } from '../../routes/paths'; import { useKibana } from '../../utils/kibana_react'; import { sloKeys } from './query_key_factory'; @@ -23,34 +22,42 @@ export function useCreateSlo() { } = useKibana().services; const queryClient = useQueryClient(); - return useMutation( - ({ slo }: { slo: CreateSLOInput }) => { + return useMutation< + CreateSLOResponse, + string, + { slo: CreateSLOInput }, + { previousData?: FindSLOResponse; queryKey?: QueryKey } + >( + ['createSlo'], + ({ slo }) => { const body = JSON.stringify(slo); return http.post(`/api/observability/slos`, { body }); }, { - mutationKey: ['createSlo'], onMutate: async ({ slo }) => { - // Cancel any outgoing refetches (so they don't overwrite our optimistic update) - await queryClient.cancelQueries(sloKeys.lists()); + await queryClient.cancelQueries({ queryKey: sloKeys.lists(), exact: false }); - const latestQueriesData = ( - queryClient.getQueriesData(sloKeys.lists()) ?? [] - ).at(0); + const queriesData = queryClient.getQueriesData({ + queryKey: sloKeys.lists(), + exact: false, + }); - const [queryKey, data] = latestQueriesData || []; + const [queryKey, previousData] = queriesData?.at(0) ?? []; const newItem = { ...slo, id: uuidv1() }; + const optimisticUpdate = { - ...data, - results: [...(data?.results ?? []), newItem], - total: data?.total ? data.total + 1 : 1, + page: previousData?.page ?? 1, + perPage: previousData?.perPage ?? 25, + total: previousData?.total ? previousData.total + 1 : 1, + results: [...(previousData?.results ?? []), newItem], }; - queryClient.setQueryData(queryKey ?? sloKeys.lists(), optimisticUpdate); + if (queryKey) { + queryClient.setQueryData(queryKey, optimisticUpdate); + } - // Return a context object with the snapshotted value - return { previousSloList: data }; + return { queryKey, previousData }; }, onSuccess: (_data, { slo }) => { toasts.addSuccess( @@ -59,9 +66,12 @@ export function useCreateSlo() { values: { name: slo.name }, }) ); - queryClient.invalidateQueries(sloKeys.lists()); }, - onError: (error, { slo }) => { + onError: (error, { slo }, context) => { + if (context?.previousData && context?.queryKey) { + queryClient.setQueryData(context.queryKey, context.previousData); + } + toasts.addError(new Error(String(error)), { title: i18n.translate('xpack.observability.slo.create.errorNotification', { defaultMessage: 'Something went wrong while creating {name}', @@ -73,6 +83,9 @@ export function useCreateSlo() { http.basePath.prepend(paths.observability.sloCreateWithEncodedForm(encode(slo))) ); }, + onSettled: () => { + queryClient.invalidateQueries({ queryKey: sloKeys.lists(), exact: false }); + }, } ); } diff --git a/x-pack/plugins/observability/public/hooks/slo/use_delete_slo.ts b/x-pack/plugins/observability/public/hooks/slo/use_delete_slo.ts index aa1a38bc02ade..9da12e73979f6 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_delete_slo.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_delete_slo.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { useMutation, useQueryClient } from '@tanstack/react-query'; +import { QueryKey, useMutation, useQueryClient } from '@tanstack/react-query'; import { i18n } from '@kbn/i18n'; import { FindSLOResponse } from '@kbn/slo-schema'; import { useKibana } from '../../utils/kibana_react'; @@ -18,11 +18,11 @@ export function useDeleteSlo() { } = useKibana().services; const queryClient = useQueryClient(); - const deleteSlo = useMutation< + return useMutation< string, string, { id: string; name: string }, - { previousSloList: FindSLOResponse | undefined } + { previousData?: FindSLOResponse; queryKey?: QueryKey } >( ['deleteSlo'], ({ id }) => { @@ -34,30 +34,31 @@ export function useDeleteSlo() { }, { onMutate: async (slo) => { - // Cancel any outgoing refetches (so they don't overwrite our optimistic update) - await queryClient.cancelQueries(sloKeys.lists()); + await queryClient.cancelQueries({ queryKey: sloKeys.lists(), exact: false }); - const latestQueriesData = ( - queryClient.getQueriesData(sloKeys.lists()) || [] - ).at(0); - const [queryKey, data] = latestQueriesData || []; + const queriesData = queryClient.getQueriesData({ + queryKey: sloKeys.lists(), + exact: false, + }); + const [queryKey, previousData] = queriesData?.at(0) ?? []; const optimisticUpdate = { - ...data, - results: data?.results?.filter((result) => result.id !== slo.id) ?? [], - total: data?.total ? data.total - 1 : 0, + page: previousData?.page ?? 1, + perPage: previousData?.perPage ?? 25, + total: previousData?.total ? previousData.total - 1 : 0, + results: previousData?.results?.filter((result) => result.id !== slo.id) ?? [], }; - // Optimistically update to the new value - queryClient.setQueryData(queryKey ?? sloKeys.lists(), optimisticUpdate); + if (queryKey) { + queryClient.setQueryData(queryKey, optimisticUpdate); + } - // Return a context object with the snapshotted value - return { previousSloList: data }; + return { previousData, queryKey }; }, // If the mutation fails, use the context returned from onMutate to roll back onError: (_err, { name }, context) => { - if (context?.previousSloList) { - queryClient.setQueryData(sloKeys.lists(), context.previousSloList); + if (context?.previousData && context?.queryKey) { + queryClient.setQueryData(context.queryKey, context.previousData); } toasts.addDanger( @@ -74,15 +75,10 @@ export function useDeleteSlo() { values: { name }, }) ); - if ( - // @ts-ignore - queryClient.getQueryCache().find(sloKeys.lists())?.options.refetchInterval === undefined - ) { - queryClient.invalidateQueries(sloKeys.lists()); - } + }, + onSettled: () => { + queryClient.invalidateQueries({ queryKey: sloKeys.lists(), exact: false }); }, } ); - - return deleteSlo; } diff --git a/x-pack/plugins/observability/public/hooks/slo/use_fetch_slo_list.ts b/x-pack/plugins/observability/public/hooks/slo/use_fetch_slo_list.ts index d8fc07ef0db1b..f2d1627114a0d 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_fetch_slo_list.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_fetch_slo_list.ts @@ -93,6 +93,10 @@ export function useFetchSloList({ return failureCount < 4; }, onSuccess: ({ results }: FindSLOResponse) => { + queryClient.invalidateQueries({ queryKey: sloKeys.historicalSummaries(), exact: false }); + queryClient.invalidateQueries({ queryKey: sloKeys.activeAlerts(), exact: false }); + queryClient.invalidateQueries({ queryKey: sloKeys.rules(), exact: false }); + if (!shouldRefetch) { return; } @@ -102,10 +106,6 @@ export function useFetchSloList({ } else { setStateRefetchInterval(LONG_REFETCH_INTERVAL); } - - queryClient.invalidateQueries(sloKeys.historicalSummaries()); - queryClient.invalidateQueries(sloKeys.activeAlerts()); - queryClient.invalidateQueries(sloKeys.rules()); }, onError: (error: Error) => { toasts.addError(error, { diff --git a/x-pack/plugins/observability/public/hooks/slo/use_update_slo.ts b/x-pack/plugins/observability/public/hooks/slo/use_update_slo.ts index 01fb1c2618747..c158fa3f31f5e 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_update_slo.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_update_slo.ts @@ -5,10 +5,9 @@ * 2.0. */ -import { useMutation, useQueryClient } from '@tanstack/react-query'; import { i18n } from '@kbn/i18n'; -import type { UpdateSLOInput, UpdateSLOResponse } from '@kbn/slo-schema'; - +import type { FindSLOResponse, UpdateSLOInput, UpdateSLOResponse } from '@kbn/slo-schema'; +import { QueryKey, useMutation, useQueryClient } from '@tanstack/react-query'; import { useKibana } from '../../utils/kibana_react'; import { sloKeys } from './query_key_factory'; @@ -19,13 +18,44 @@ export function useUpdateSlo() { } = useKibana().services; const queryClient = useQueryClient(); - return useMutation( - ({ sloId, slo }: { sloId: string; slo: UpdateSLOInput }) => { + return useMutation< + UpdateSLOResponse, + string, + { sloId: string; slo: UpdateSLOInput }, + { previousData?: FindSLOResponse; queryKey?: QueryKey } + >( + ['updateSlo'], + ({ sloId, slo }) => { const body = JSON.stringify(slo); return http.put(`/api/observability/slos/${sloId}`, { body }); }, { - mutationKey: ['updateSlo'], + onMutate: async ({ sloId, slo }) => { + await queryClient.cancelQueries({ queryKey: sloKeys.lists(), exact: false }); + + const queriesData = queryClient.getQueriesData({ + queryKey: sloKeys.lists(), + exact: false, + }); + const [queryKey, previousData] = queriesData?.at(0) ?? []; + + const updatedItem = { ...slo, id: sloId }; + const optimisticUpdate = { + page: previousData?.page ?? 1, + perPage: previousData?.perPage ?? 25, + total: previousData?.total ? previousData.total : 1, + results: [ + ...(previousData?.results?.filter((result) => result.id !== sloId) ?? []), + updatedItem, + ], + }; + + if (queryKey) { + queryClient.setQueryData(queryKey, optimisticUpdate); + } + + return { previousData, queryKey }; + }, onSuccess: (_data, { slo: { name } }) => { toasts.addSuccess( i18n.translate('xpack.observability.slo.update.successNotification', { @@ -33,10 +63,12 @@ export function useUpdateSlo() { values: { name }, }) ); - queryClient.invalidateQueries(sloKeys.lists()); - queryClient.invalidateQueries(sloKeys.historicalSummaries()); }, - onError: (error, { slo: { name } }) => { + onError: (error, { slo: { name } }, context) => { + if (context?.previousData && context?.queryKey) { + queryClient.setQueryData(context.queryKey, context.previousData); + } + toasts.addError(new Error(String(error)), { title: i18n.translate('xpack.observability.slo.update.errorNotification', { defaultMessage: 'Something went wrong when updating {name}', @@ -44,6 +76,9 @@ export function useUpdateSlo() { }), }); }, + onSettled: () => { + queryClient.invalidateQueries({ queryKey: sloKeys.lists(), exact: false }); + }, } ); } diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx index fdbe1668a9288..3d9e70f68dc6e 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx @@ -22,6 +22,7 @@ import { i18n } from '@kbn/i18n'; import { HistoricalSummaryResponse, SLOWithSummaryResponse } from '@kbn/slo-schema'; import type { Rule } from '@kbn/triggers-actions-ui-plugin/public'; +import { sloKeys } from '../../../hooks/slo/query_key_factory'; import { useCapabilities } from '../../../hooks/slo/use_capabilities'; import { useKibana } from '../../../utils/kibana_react'; import { useCloneSlo } from '../../../hooks/slo/use_clone_slo'; @@ -94,7 +95,7 @@ export function SloListItem({ }; const handleSavedRule = async () => { - queryClient.invalidateQueries(['fetchRulesForSlo']); + queryClient.invalidateQueries({ queryKey: sloKeys.rules(), exact: false }); }; const handleNavigateToRules = async () => { From bfb07386b2c0088a168a144a6f232685c5d5536c Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Thu, 29 Jun 2023 18:57:59 +0200 Subject: [PATCH 27/41] [Enterprise Search] Disable text extraction config for native SPO (#160914) ## Summary This stops text extraction from showing up for native SharePoint Online connectors. --- .../enterprise_search/common/connectors/native_connectors.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a3eec3a152c48..53afe0ff6b74c 100644 --- a/x-pack/plugins/enterprise_search/common/connectors/native_connectors.ts +++ b/x-pack/plugins/enterprise_search/common/connectors/native_connectors.ts @@ -1622,7 +1622,7 @@ export const NATIVE_CONNECTOR_DEFINITIONS: Record Date: Thu, 29 Jun 2023 11:15:20 -0600 Subject: [PATCH 28/41] [maps] time series geo line (#159267) Part of https://github.com/elastic/kibana/issues/141978 PR updates tracks layer with "group by time series" logic. When true, geo_line metric aggregation is proceeded by `time_series` bucket aggregation instead of `filters` bucket aggregation (used by existing terms split). ### UI when creating tracks layer with time series data view Screen Shot 2023-06-22 at 12 35 46 PM Screen Shot 2023-06-22 at 12 35 55 PM Screen Shot 2023-06-22 at 12 49 22 PM ### UI when editing tracks layer with time series data view Screen Shot 2023-06-22 at 12 36 17 PM Screen Shot 2023-06-22 at 12 36 24 PM ### Test instructions * clone https://github.com/thomasneirynck/faketracks * cd into `faketracks` * run `npm install` * run `node ./generate_tracks.js --isTimeSeries` * In Kibana, create `tracks` data view * In Maps, create new map and add `Tracks` layer. Select `Tracks` data view. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- src/plugins/data_views/common/types.ts | 3 +- .../server/fetcher/index_patterns_fetcher.ts | 3 +- .../field_capabilities/field_caps_response.ts | 8 +- .../source_descriptor_types.ts | 6 +- .../render_as_select/show_as_label.tsx | 2 +- .../sources/es_geo_line_source/constants.ts | 17 ++ .../es_geo_line_source/convert_to_geojson.ts | 4 +- .../create_source_editor.tsx | 95 ++++--- .../es_geo_line_source/es_geo_line_source.tsx | 235 +++++++++++++++--- .../es_geo_line_source/geo_line_form.tsx | 79 ------ .../geo_line_form/geo_line_form.tsx | 123 +++++++++ .../geo_line_form/group_by_button_group.tsx | 47 ++++ .../geo_line_form/group_by_label.tsx | 50 ++++ .../geo_line_form/i18n_constants.ts | 27 ++ .../es_geo_line_source/geo_line_form/index.ts | 9 + .../geo_line_form/size_slider.tsx | 47 ++++ .../es_geo_line_source/layer_wizard.tsx | 10 +- .../update_source_editor.tsx | 23 +- .../plugins/maps/public/index_pattern_util.ts | 6 + .../translations/translations/fr-FR.json | 3 - .../translations/translations/ja-JP.json | 3 - .../translations/translations/zh-CN.json | 3 - 22 files changed, 630 insertions(+), 173 deletions(-) create mode 100644 x-pack/plugins/maps/public/classes/sources/es_geo_line_source/constants.ts delete mode 100644 x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form.tsx create mode 100644 x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/geo_line_form.tsx create mode 100644 x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/group_by_button_group.tsx create mode 100644 x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/group_by_label.tsx create mode 100644 x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/i18n_constants.ts create mode 100644 x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/index.ts create mode 100644 x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/size_slider.tsx diff --git a/src/plugins/data_views/common/types.ts b/src/plugins/data_views/common/types.ts index 91943b7d87790..6c42664c90ffb 100644 --- a/src/plugins/data_views/common/types.ts +++ b/src/plugins/data_views/common/types.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import type { SavedObject } from '@kbn/core/server'; import type { ErrorToastOptions, ToastInputFields } from '@kbn/core-notifications-browser'; @@ -437,7 +438,7 @@ export type FieldSpec = DataViewFieldBase & { /** * set if field is a TSDB metric field */ - timeSeriesMetric?: 'histogram' | 'summary' | 'gauge' | 'counter'; + timeSeriesMetric?: estypes.MappingTimeSeriesMetricType; // not persisted diff --git a/src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts b/src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts index dc73cebb8855d..3511cefd34d87 100644 --- a/src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts +++ b/src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { ElasticsearchClient } from '@kbn/core/server'; import { keyBy } from 'lodash'; import type { QueryDslQueryContainer } from '../../common/types'; @@ -27,7 +28,7 @@ export interface FieldDescriptor { metadata_field?: boolean; fixedInterval?: string[]; timeZone?: string[]; - timeSeriesMetric?: 'histogram' | 'summary' | 'counter' | 'gauge'; + timeSeriesMetric?: estypes.MappingTimeSeriesMetricType; timeSeriesDimension?: boolean; } diff --git a/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_caps_response.ts b/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_caps_response.ts index 0cf2e460d35f5..ee029f1271297 100644 --- a/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_caps_response.ts +++ b/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_caps_response.ts @@ -122,13 +122,17 @@ export function readFieldCapsResponse( return agg; } - let timeSeriesMetricType: 'gauge' | 'counter' | undefined; + let timeSeriesMetricType: 'gauge' | 'counter' | 'position' | undefined; if (timeSeriesMetricProp.length === 1 && timeSeriesMetricProp[0] === 'gauge') { timeSeriesMetricType = 'gauge'; } if (timeSeriesMetricProp.length === 1 && timeSeriesMetricProp[0] === 'counter') { timeSeriesMetricType = 'counter'; } + // @ts-expect-error MappingTimeSeriesMetricType does not contain 'position' + if (timeSeriesMetricProp.length === 1 && timeSeriesMetricProp[0] === 'position') { + timeSeriesMetricType = 'position'; + } const esType = types[0]; const field = { name: fieldName, @@ -144,7 +148,9 @@ export function readFieldCapsResponse( timeSeriesDimension: capsByType[types[0]].time_series_dimension, }; // This is intentionally using a "hash" and a "push" to be highly optimized with very large indexes + // @ts-expect-error MappingTimeSeriesMetricType does not contain 'position' agg.array.push(field); + // @ts-expect-error MappingTimeSeriesMetricType does not contain 'position' agg.hash[fieldName] = field; return agg; }, diff --git a/x-pack/plugins/maps/common/descriptor_types/source_descriptor_types.ts b/x-pack/plugins/maps/common/descriptor_types/source_descriptor_types.ts index 3ac86807ff7f6..3094596a3f13b 100644 --- a/x-pack/plugins/maps/common/descriptor_types/source_descriptor_types.ts +++ b/x-pack/plugins/maps/common/descriptor_types/source_descriptor_types.ts @@ -91,8 +91,10 @@ export type ESGeoGridSourceDescriptor = AbstractESAggSourceDescriptor & { export type ESGeoLineSourceDescriptor = AbstractESAggSourceDescriptor & { geoField: string; - splitField: string; - sortField: string; + groupByTimeseries: boolean; + lineSimplificationSize: number; + splitField?: string; + sortField?: string; }; export type ESSearchSourceDescriptor = AbstractESSourceDescriptor & { diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/render_as_select/show_as_label.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/render_as_select/show_as_label.tsx index e16bc1cb8bcff..22c4417308a73 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/render_as_select/show_as_label.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/render_as_select/show_as_label.tsx @@ -19,7 +19,7 @@ export function ShowAsLabel(props: Props) { return ( +
    {CLUSTER_LABEL}
    diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/constants.ts b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/constants.ts new file mode 100644 index 0000000000000..a95c779b85a9a --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/constants.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// geo_line aggregation without time series buckets uses lots of resources +// limit resource consumption by limiting number of tracks to smaller amount +export const MAX_TERMS_TRACKS = 250; + +// Constant is used to identify time series id field in UIs, tooltips, and styling. +// Constant is not passed to Elasticsearch APIs and is not related to '_tsid' document metadata field. +// Constant value of '_tsid' is arbitrary. +export const TIME_SERIES_ID_FIELD_NAME = '_tsid'; + +export const DEFAULT_LINE_SIMPLIFICATION_SIZE = 500; diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/convert_to_geojson.ts b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/convert_to_geojson.ts index de571dd69f3c6..2323078c2c09c 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/convert_to_geojson.ts +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/convert_to_geojson.ts @@ -20,7 +20,9 @@ export function convertToGeoJson(esResponse: any, entitySplitFieldName: string) for (let i = 0; i < entityKeys.length; i++) { const entityKey = entityKeys[i]; const bucket = buckets[entityKey]; - const feature = bucket.path as Feature; + const feature = { + ...(bucket.path as Feature), + }; if (!feature.properties!.complete) { numTrimmedTracks++; } diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/create_source_editor.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/create_source_editor.tsx index 25f946d88db55..f847db00b5210 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/create_source_editor.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/create_source_editor.tsx @@ -7,39 +7,38 @@ import React, { Component } from 'react'; -import { DataView } from '@kbn/data-plugin/common'; -import { i18n } from '@kbn/i18n'; -import { EuiFormRow, EuiPanel } from '@elastic/eui'; -import { SingleFieldSelect } from '../../../components/single_field_select'; +import type { DataView, DataViewField } from '@kbn/data-plugin/common'; +import { EuiPanel } from '@elastic/eui'; import { GeoIndexPatternSelect } from '../../../components/geo_index_pattern_select'; - -import { getGeoPointFields } from '../../../index_pattern_util'; +import { GeoFieldSelect } from '../../../components/geo_field_select'; +import { ESGeoLineSourceDescriptor } from '../../../../common/descriptor_types'; +import { getGeoPointFields, getIsTimeseries } from '../../../index_pattern_util'; import { GeoLineForm } from './geo_line_form'; +import { DEFAULT_LINE_SIMPLIFICATION_SIZE } from './constants'; interface Props { - onSourceConfigChange: ( - sourceConfig: { - indexPatternId: string; - geoField: string; - splitField: string; - sortField: string; - } | null - ) => void; + onSourceConfigChange: (sourceConfig: Partial | null) => void; } interface State { indexPattern: DataView | null; + pointFields: DataViewField[]; geoField: string; + groupByTimeseries: boolean; splitField: string; sortField: string; + lineSimplificationSize: number; } export class CreateSourceEditor extends Component { state: State = { indexPattern: null, + pointFields: [], geoField: '', + groupByTimeseries: false, splitField: '', sortField: '', + lineSimplificationSize: DEFAULT_LINE_SIMPLIFICATION_SIZE, }; _onIndexPatternSelect = (indexPattern: DataView) => { @@ -47,6 +46,8 @@ export class CreateSourceEditor extends Component { this.setState( { indexPattern, + pointFields, + groupByTimeseries: getIsTimeseries(indexPattern), geoField: pointFields.length ? pointFields[0].name : '', sortField: indexPattern.timeFieldName ? indexPattern.timeFieldName : '', }, @@ -67,6 +68,24 @@ export class CreateSourceEditor extends Component { ); }; + _onGroupByTimeseriesChange = (groupByTimeseries: boolean) => { + this.setState( + { + groupByTimeseries, + }, + this.previewLayer + ); + }; + + _onLineSimplificationSizeChange = (lineSimplificationSize: number) => { + this.setState( + { + lineSimplificationSize, + }, + this.previewLayer + ); + }; + _onSplitFieldSelect = (newValue: string) => { this.setState( { @@ -86,11 +105,28 @@ export class CreateSourceEditor extends Component { }; previewLayer = () => { - const { indexPattern, geoField, splitField, sortField } = this.state; + const { + indexPattern, + geoField, + groupByTimeseries, + splitField, + sortField, + lineSimplificationSize, + } = this.state; const sourceConfig = - indexPattern && indexPattern.id && geoField && splitField && sortField - ? { indexPatternId: indexPattern.id, geoField, splitField, sortField } + indexPattern && + indexPattern.id && + geoField && + (groupByTimeseries || (splitField && sortField)) + ? { + indexPatternId: indexPattern.id, + geoField, + groupByTimeseries, + lineSimplificationSize, + splitField, + sortField, + } : null; this.props.onSourceConfigChange(sourceConfig); }; @@ -101,20 +137,12 @@ export class CreateSourceEditor extends Component { } return ( - - - + ); } @@ -125,9 +153,14 @@ export class CreateSourceEditor extends Component { return ( diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx index 65a4d5f2fb5b3..24cafe66de35c 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx @@ -30,6 +30,7 @@ import { AbstractESAggSource, ESAggsSourceSyncMeta } from '../es_agg_source'; import { DataRequest } from '../../util/data_request'; import { convertToGeoJson } from './convert_to_geojson'; import { ESDocField } from '../../fields/es_doc_field'; +import { InlineField } from '../../fields/inline_field'; import { UpdateSourceEditor } from './update_source_editor'; import { ImmutableSourceProperty, SourceEditorArgs } from '../source'; import { GeoJsonWithMeta } from '../vector_source'; @@ -39,11 +40,18 @@ import { ITooltipProperty, TooltipProperty } from '../../tooltips/tooltip_proper import { getIsGoldPlus } from '../../../licensed_features'; import { LICENSED_FEATURES } from '../../../licensed_features'; import { mergeExecutionContext } from '../execution_context_utils'; +import { ENTITY_INPUT_LABEL, SORT_INPUT_LABEL } from './geo_line_form'; +import { + DEFAULT_LINE_SIMPLIFICATION_SIZE, + MAX_TERMS_TRACKS, + TIME_SERIES_ID_FIELD_NAME, +} from './constants'; type ESGeoLineSourceSyncMeta = ESAggsSourceSyncMeta & - Pick; - -const MAX_TRACKS = 250; + Pick< + ESGeoLineSourceDescriptor, + 'groupByTimeseries' | 'lineSimplificationSize' | 'splitField' | 'sortField' + >; export const geoLineTitle = i18n.translate('xpack.maps.source.esGeoLineTitle', { defaultMessage: 'Tracks', @@ -64,21 +72,27 @@ export class ESGeoLineSource extends AbstractESAggSource { const normalizedDescriptor = AbstractESAggSource.createDescriptor( descriptor ) as ESGeoLineSourceDescriptor; + if (!isValidStringConfig(normalizedDescriptor.geoField)) { throw new Error('Cannot create an ESGeoLineSource without a geoField'); } - if (!isValidStringConfig(normalizedDescriptor.splitField)) { - throw new Error('Cannot create an ESGeoLineSource without a splitField'); - } - if (!isValidStringConfig(normalizedDescriptor.sortField)) { - throw new Error('Cannot create an ESGeoLineSource without a sortField'); - } + + const groupByTimeseries = + typeof normalizedDescriptor.groupByTimeseries === 'boolean' + ? normalizedDescriptor.groupByTimeseries + : false; + return { ...normalizedDescriptor, type: SOURCE_TYPES.ES_GEO_LINE, + groupByTimeseries, + lineSimplificationSize: + typeof normalizedDescriptor.lineSimplificationSize === 'number' + ? normalizedDescriptor.lineSimplificationSize + : DEFAULT_LINE_SIMPLIFICATION_SIZE, geoField: normalizedDescriptor.geoField!, - splitField: normalizedDescriptor.splitField!, - sortField: normalizedDescriptor.sortField!, + splitField: normalizedDescriptor.splitField, + sortField: normalizedDescriptor.sortField, }; } @@ -103,8 +117,10 @@ export class ESGeoLineSource extends AbstractESAggSource { indexPatternId={this.getIndexPatternId()} onChange={onChange} metrics={this._descriptor.metrics} - splitField={this._descriptor.splitField} - sortField={this._descriptor.sortField} + groupByTimeseries={this._descriptor.groupByTimeseries} + lineSimplificationSize={this._descriptor.lineSimplificationSize} + splitField={this._descriptor.splitField ?? ''} + sortField={this._descriptor.sortField ?? ''} /> ); } @@ -112,6 +128,8 @@ export class ESGeoLineSource extends AbstractESAggSource { getSyncMeta(dataFilters: DataFilters): ESGeoLineSourceSyncMeta { return { ...super.getSyncMeta(dataFilters), + groupByTimeseries: this._descriptor.groupByTimeseries, + lineSimplificationSize: this._descriptor.lineSimplificationSize, splitField: this._descriptor.splitField, sortField: this._descriptor.sortField, }; @@ -136,22 +154,43 @@ export class ESGeoLineSource extends AbstractESAggSource { ]; } - _createSplitField(): IField { - return new ESDocField({ - fieldName: this._descriptor.splitField, + _createSplitField(): IField | null { + return this._descriptor.splitField + ? new ESDocField({ + fieldName: this._descriptor.splitField, + source: this, + origin: FIELD_ORIGIN.SOURCE, + }) + : null; + } + + _createTsidField(): IField | null { + return new InlineField({ + fieldName: TIME_SERIES_ID_FIELD_NAME, + label: TIME_SERIES_ID_FIELD_NAME, source: this, origin: FIELD_ORIGIN.SOURCE, + dataType: 'string', }); } async getFields(): Promise { - return [...this.getMetricFields(), this._createSplitField()]; + const groupByField = this._descriptor.groupByTimeseries + ? this._createTsidField() + : this._createSplitField(); + return groupByField ? [...this.getMetricFields(), groupByField] : this.getMetricFields(); } getFieldByName(name: string): IField | null { - return name === this._descriptor.splitField - ? this._createSplitField() - : this.getMetricFieldForName(name); + if (name === this._descriptor.splitField) { + return this._createSplitField(); + } + + if (name === TIME_SERIES_ID_FIELD_NAME) { + return this._createTsidField(); + } + + return this.getMetricFieldForName(name); } isGeoGridPrecisionAware() { @@ -173,6 +212,126 @@ export class ESGeoLineSource extends AbstractESAggSource { throw new Error(REQUIRES_GOLD_LICENSE_MSG); } + return this._descriptor.groupByTimeseries + ? this._getGeoLineByTimeseries( + layerName, + requestMeta, + registerCancelCallback, + isRequestStillActive, + inspectorAdapters + ) + : this._getGeoLineByTerms( + layerName, + requestMeta, + registerCancelCallback, + isRequestStillActive, + inspectorAdapters + ); + } + + async _getGeoLineByTimeseries( + layerName: string, + requestMeta: VectorSourceRequestMeta, + registerCancelCallback: (callback: () => void) => void, + isRequestStillActive: () => boolean, + inspectorAdapters: Adapters + ): Promise { + const indexPattern = await this.getIndexPattern(); + const searchSource = await this.makeSearchSource(requestMeta, 0); + searchSource.setField('trackTotalHits', false); + searchSource.setField('aggs', { + totalEntities: { + cardinality: { + field: '_tsid', + }, + }, + tracks: { + time_series: {}, + aggs: { + path: { + geo_line: { + point: { + field: this._descriptor.geoField, + }, + size: this._descriptor.lineSimplificationSize, + }, + }, + ...this.getValueAggsDsl(indexPattern), + }, + }, + }); + + const resp = await this._runEsQuery({ + requestId: `${this.getId()}_tracks`, + requestName: i18n.translate('xpack.maps.source.esGeoLine.timeSeriesTrackRequestName', { + defaultMessage: `'{layerName}' tracks request (time series)`, + values: { + layerName, + }, + }), + searchSource, + registerCancelCallback, + requestDescription: i18n.translate( + 'xpack.maps.source.esGeoLine.timeSeriesTrackRequestDescription', + { + defaultMessage: + 'Get tracks from data view: {dataViewName}, geospatial field: {geoFieldName}', + values: { + dataViewName: indexPattern.getName(), + geoFieldName: this._descriptor.geoField, + }, + } + ), + searchSessionId: requestMeta.searchSessionId, + executionContext: mergeExecutionContext( + { description: 'es_geo_line:time_series_tracks' }, + requestMeta.executionContext + ), + requestsAdapter: inspectorAdapters.requests, + }); + + const { featureCollection } = convertToGeoJson(resp, TIME_SERIES_ID_FIELD_NAME); + + const entityCount = featureCollection.features.length; + const areEntitiesTrimmed = entityCount >= 10000; // 10000 is max buckets created by time_series aggregation + + return { + data: featureCollection, + meta: { + areResultsTrimmed: areEntitiesTrimmed, + areEntitiesTrimmed, + entityCount, + numTrimmedTracks: 0, // geo_line by time series never truncates tracks and instead simplifies tracks + totalEntities: resp?.aggregations?.totalEntities?.value ?? 0, + } as ESGeoLineSourceResponseMeta, + }; + } + + async _getGeoLineByTerms( + layerName: string, + requestMeta: VectorSourceRequestMeta, + registerCancelCallback: (callback: () => void) => void, + isRequestStillActive: () => boolean, + inspectorAdapters: Adapters + ): Promise { + if (!this._descriptor.splitField) { + throw new Error( + i18n.translate('xpack.maps.source.esGeoLine.missingConfigurationError', { + defaultMessage: `Unable to create tracks. Provide a value for required configuration '{inputLabel}'`, + values: { inputLabel: ENTITY_INPUT_LABEL }, + }) + ); + } + + if (!this._descriptor.sortField) { + throw new Error( + i18n.translate('xpack.maps.source.esGeoLine.missingConfigurationError', { + defaultMessage: `Unable to create tracks. Provide a value for required configuration '{inputLabel}'`, + values: { inputLabel: SORT_INPUT_LABEL }, + }) + ); + } + const indexPattern = await this.getIndexPattern(); // Request is broken into 2 requests @@ -186,8 +345,8 @@ export class ESGeoLineSource extends AbstractESAggSource { const entitySearchSource = await this.makeSearchSource(requestMeta, 0); entitySearchSource.setField('trackTotalHits', false); const splitField = getField(indexPattern, this._descriptor.splitField); - const cardinalityAgg = { precision_threshold: 1 }; - const termsAgg = { size: MAX_TRACKS }; + const cardinalityAgg = { precision_threshold: MAX_TERMS_TRACKS }; + const termsAgg = { size: MAX_TERMS_TRACKS }; entitySearchSource.setField('aggs', { totalEntities: { cardinality: addFieldToDSL(cardinalityAgg, splitField), @@ -208,7 +367,7 @@ export class ESGeoLineSource extends AbstractESAggSource { const entityResp = await this._runEsQuery({ requestId: `${this.getId()}_entities`, requestName: i18n.translate('xpack.maps.source.esGeoLine.entityRequestName', { - defaultMessage: '{layerName} entities request', + defaultMessage: `'{layerName}' entities request`, values: { layerName, }, @@ -236,7 +395,7 @@ export class ESGeoLineSource extends AbstractESAggSource { [] ); const totalEntities = _.get(entityResp, 'aggregations.totalEntities.value', 0); - const areEntitiesTrimmed = entityBuckets.length >= MAX_TRACKS; + const areEntitiesTrimmed = entityBuckets.length >= MAX_TERMS_TRACKS; if (totalEntities === 0) { return { data: EMPTY_FEATURE_COLLECTION, @@ -288,7 +447,7 @@ export class ESGeoLineSource extends AbstractESAggSource { const tracksResp = await this._runEsQuery({ requestId: `${this.getId()}_tracks`, requestName: i18n.translate('xpack.maps.source.esGeoLine.trackRequestName', { - defaultMessage: '{layerName} tracks request', + defaultMessage: `'{layerName}' tracks request (terms)`, values: { layerName, }, @@ -306,7 +465,7 @@ export class ESGeoLineSource extends AbstractESAggSource { }), searchSessionId: requestMeta.searchSessionId, executionContext: mergeExecutionContext( - { description: 'es_geo_line:tracks' }, + { description: 'es_geo_line:terms_tracks' }, requestMeta.executionContext ), requestsAdapter: inspectorAdapters.requests, @@ -392,15 +551,21 @@ export class ESGeoLineSource extends AbstractESAggSource { async getTooltipProperties(properties: GeoJsonProperties): Promise { const tooltipProperties = await super.getTooltipProperties(properties); - tooltipProperties.push( - new TooltipProperty( - 'isTrackComplete', - i18n.translate('xpack.maps.source.esGeoLine.isTrackCompleteLabel', { - defaultMessage: 'track is complete', - }), - properties!.complete.toString() - ) - ); + if (properties && typeof properties!.complete === 'boolean') { + tooltipProperties.push( + new TooltipProperty( + '__kbn__track__complete', + this._descriptor.groupByTimeseries + ? i18n.translate('xpack.maps.source.esGeoLine.isTrackSimplifiedLabel', { + defaultMessage: 'track is simplified', + }) + : i18n.translate('xpack.maps.source.esGeoLine.isTrackTruncatedLabel', { + defaultMessage: 'track is truncated', + }), + (!properties.complete).toString() + ) + ); + } return tooltipProperties; } diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form.tsx deleted file mode 100644 index e079d25a4c628..0000000000000 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form.tsx +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; - -import { DataView } from '@kbn/data-plugin/common'; -import { EuiFormRow } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { indexPatterns } from '@kbn/data-plugin/public'; -import { SingleFieldSelect } from '../../../components/single_field_select'; -import { getTermsFields } from '../../../index_pattern_util'; - -interface Props { - indexPattern: DataView; - onSortFieldChange: (fieldName: string) => void; - onSplitFieldChange: (fieldName: string) => void; - sortField: string; - splitField: string; -} - -export function GeoLineForm(props: Props) { - function onSortFieldChange(fieldName: string | undefined) { - if (fieldName !== undefined) { - props.onSortFieldChange(fieldName); - } - } - function onSplitFieldChange(fieldName: string | undefined) { - if (fieldName !== undefined) { - props.onSplitFieldChange(fieldName); - } - } - return ( - <> - - - - - - { - const isSplitField = props.splitField ? field.name === props.splitField : false; - return ( - !isSplitField && - field.sortable && - !indexPatterns.isNestedField(field) && - ['number', 'date'].includes(field.type) - ); - })} - isClearable={false} - /> - - - ); -} diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/geo_line_form.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/geo_line_form.tsx new file mode 100644 index 0000000000000..49e377731709e --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/geo_line_form.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, { useMemo } from 'react'; +import { DataView } from '@kbn/data-plugin/common'; +import { EuiFormRow } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { indexPatterns } from '@kbn/data-plugin/public'; +import { SingleFieldSelect } from '../../../../components/single_field_select'; +import { getTermsFields, getIsTimeseries } from '../../../../index_pattern_util'; +import { ENTITY_INPUT_LABEL, SORT_INPUT_LABEL } from './i18n_constants'; +import { GroupByButtonGroup } from './group_by_button_group'; +import { GroupByLabel } from './group_by_label'; +import { SizeSlider } from './size_slider'; + +interface Props { + isColumnCompressed: boolean; + indexPattern: DataView; + groupByTimeseries: boolean; + lineSimplificationSize: number; + onGroupByTimeseriesChange: (groupByTimeseries: boolean) => void; + onLineSimplificationSizeChange: (lineSimplificationSize: number) => void; + onSortFieldChange: (fieldName: string) => void; + onSplitFieldChange: (fieldName: string) => void; + sortField: string; + splitField: string; +} + +export function GeoLineForm(props: Props) { + const isTimeseries = useMemo(() => { + return getIsTimeseries(props.indexPattern); + }, [props.indexPattern]); + + function onSortFieldChange(fieldName: string | undefined) { + if (fieldName !== undefined) { + props.onSortFieldChange(fieldName); + } + } + function onSplitFieldChange(fieldName: string | undefined) { + if (fieldName !== undefined) { + props.onSplitFieldChange(fieldName); + } + } + + return ( + <> + {isTimeseries && ( + } + display={props.isColumnCompressed ? 'columnCompressed' : 'row'} + > + + + )} + {props.groupByTimeseries ? ( + + + + ) : ( + <> + + + + + + { + const isSplitField = props.splitField ? field.name === props.splitField : false; + return ( + !isSplitField && + field.sortable && + !indexPatterns.isNestedField(field) && + ['number', 'date'].includes(field.type) + ); + })} + isClearable={false} + compressed={props.isColumnCompressed} + /> + + + )} + + ); +} diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/group_by_button_group.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/group_by_button_group.tsx new file mode 100644 index 0000000000000..55133463b413a --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/group_by_button_group.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiButtonGroup } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { TIME_SERIES_LABEL, TERMS_LABEL } from './i18n_constants'; + +const GROUP_BY_TIME_SERIES = 'timeseries'; +const GROUP_BY_TERM = 'terms'; +const GROUP_BY_OPTIONS = [ + { + id: GROUP_BY_TIME_SERIES, + label: TIME_SERIES_LABEL, + }, + { + id: GROUP_BY_TERM, + label: TERMS_LABEL, + }, +]; + +interface Props { + groupByTimeseries: boolean; + onGroupByTimeseriesChange: (groupByTimeseries: boolean) => void; +} + +export function GroupByButtonGroup({ groupByTimeseries, onGroupByTimeseriesChange }: Props) { + return ( + { + onGroupByTimeseriesChange(id === GROUP_BY_TIME_SERIES); + }} + isFullWidth={true} + buttonSize="compressed" + /> + ); +} diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/group_by_label.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/group_by_label.tsx new file mode 100644 index 0000000000000..455d6ee3f3913 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/group_by_label.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiIcon, EuiText, EuiToolTip } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { TIME_SERIES_LABEL, TERMS_LABEL } from './i18n_constants'; +import { MAX_TERMS_TRACKS } from '../constants'; + +export function GroupByLabel() { + return ( + +
    +
    {TIME_SERIES_LABEL}
    +
    +

    + +

    +
    + +
    {TERMS_LABEL}
    +
    +

    + +

    +
    +
    + + } + > + + {' '} + + +
    + ); +} diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/i18n_constants.ts b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/i18n_constants.ts new file mode 100644 index 0000000000000..784e1e5b40900 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/i18n_constants.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const TIME_SERIES_LABEL = i18n.translate( + 'xpack.maps.source.esGeoLine.groupBy.timeseriesLabel', + { + defaultMessage: 'Time series', + } +); + +export const TERMS_LABEL = i18n.translate('xpack.maps.source.esGeoLine.groupBy.termsLabel', { + defaultMessage: 'Top terms', +}); + +export const ENTITY_INPUT_LABEL = i18n.translate('xpack.maps.source.esGeoLine.splitFieldLabel', { + defaultMessage: 'Entity', +}); + +export const SORT_INPUT_LABEL = i18n.translate('xpack.maps.source.esGeoLine.sortFieldLabel', { + defaultMessage: 'Sort', +}); diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/index.ts b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/index.ts new file mode 100644 index 0000000000000..1f8f65e9feb04 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/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 { ENTITY_INPUT_LABEL, SORT_INPUT_LABEL } from './i18n_constants'; +export { GeoLineForm } from './geo_line_form'; diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/size_slider.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/size_slider.tsx new file mode 100644 index 0000000000000..4d8dd73903e63 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/geo_line_form/size_slider.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect, useState } from 'react'; +import useDebounce from 'react-use/lib/useDebounce'; +import { EuiRange } from '@elastic/eui'; + +interface Props { + value: number; + onChange: (size: number) => void; +} + +export function SizeSlider({ onChange, value }: Props) { + const [size, setSize] = useState(value); + + const [, cancel] = useDebounce( + () => { + onChange(size); + }, + 150, + [size] + ); + + useEffect(() => { + return () => { + cancel(); + }; + }, [cancel]); + + return ( + { + setSize(parseInt(event.currentTarget.value, 10)); + }} + min={100} + max={10000} + showLabels + showValue + step={100} + /> + ); +} diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/layer_wizard.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/layer_wizard.tsx index 2957235602d7b..5392232feb26e 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/layer_wizard.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/layer_wizard.tsx @@ -16,6 +16,7 @@ import { VECTOR_STYLES, WIZARD_ID, } from '../../../../common/constants'; +import { ESGeoLineSourceDescriptor } from '../../../../common/descriptor_types'; import { VectorStyle } from '../../styles/vector/vector_style'; import { GeoJsonVectorLayer } from '../../layers/vector_layer'; import { getIsGoldPlus } from '../../../licensed_features'; @@ -34,14 +35,7 @@ export const geoLineLayerWizardConfig: LayerWizard = { return !getIsGoldPlus(); }, renderWizard: ({ previewLayers }: RenderWizardArguments) => { - const onSourceConfigChange = ( - sourceConfig: { - indexPatternId: string; - geoField: string; - splitField: string; - sortField: string; - } | null - ) => { + const onSourceConfigChange = (sourceConfig: Partial | null) => { if (!sourceConfig) { previewLayers([]); return; diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/update_source_editor.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/update_source_editor.tsx index 1201358225ca3..d411b64734718 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/update_source_editor.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/update_source_editor.tsx @@ -19,6 +19,8 @@ import type { OnSourceChangeArgs } from '../source'; interface Props { bucketsName: string; indexPatternId: string; + groupByTimeseries: boolean; + lineSimplificationSize: number; splitField: string; sortField: string; metrics: AggDescriptor[]; @@ -69,12 +71,20 @@ export class UpdateSourceEditor extends Component { this.props.onChange({ propName: 'metrics', value: metrics }); }; - _onSplitFieldChange = (fieldName: string) => { - this.props.onChange({ propName: 'splitField', value: fieldName }); + _onGroupByTimeseriesChange = (value: boolean) => { + this.props.onChange({ propName: 'groupByTimeseries', value }); }; - _onSortFieldChange = (fieldName: string) => { - this.props.onChange({ propName: 'sortField', value: fieldName }); + _onLineSimplificationSizeChange = (value: number) => { + this.props.onChange({ propName: 'lineSimplificationSize', value }); + }; + + _onSplitFieldChange = (value: string) => { + this.props.onChange({ propName: 'splitField', value }); + }; + + _onSortFieldChange = (value: string) => { + this.props.onChange({ propName: 'sortField', value }); }; render() { @@ -116,9 +126,14 @@ export class UpdateSourceEditor extends Component { diff --git a/x-pack/plugins/maps/public/index_pattern_util.ts b/x-pack/plugins/maps/public/index_pattern_util.ts index fc31b62f79a7b..c27b7285fd3eb 100644 --- a/x-pack/plugins/maps/public/index_pattern_util.ts +++ b/x-pack/plugins/maps/public/index_pattern_util.ts @@ -13,6 +13,12 @@ import { getIndexPatternService } from './kibana_services'; import { ES_GEO_FIELD_TYPE, ES_GEO_FIELD_TYPES } from '../common/constants'; import { getIsGoldPlus } from './licensed_features'; +export function getIsTimeseries(dataView: DataView): boolean { + return dataView.fields.some((field) => { + return field.timeSeriesDimension || field.timeSeriesMetric; + }); +} + export function getGeoTileAggNotSupportedReason(field: DataViewField): string | null { if (!field.aggregatable) { return i18n.translate('xpack.maps.geoTileAgg.disabled.docValues', { diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index e5924a78dcbbb..f1f5ffece0a0c 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -21810,10 +21810,7 @@ "xpack.maps.source.esGeoGrid.showAsLabel": "Afficher en tant que", "xpack.maps.source.esGeoGrid.showAsSelector": "Sélectionner la méthode d’affichage", "xpack.maps.source.esGeoLine.bucketsName": "pistes", - "xpack.maps.source.esGeoLine.geofieldLabel": "Champ géospatial", - "xpack.maps.source.esGeoLine.geofieldPlaceholder": "Sélectionner un champ géographique", "xpack.maps.source.esGeoLine.geospatialFieldLabel": "Champ géospatial", - "xpack.maps.source.esGeoLine.isTrackCompleteLabel": "la piste est complète", "xpack.maps.source.esGeoLine.metricsLabel": "Indicateurs de piste", "xpack.maps.source.esGeoLine.sortFieldLabel": "Trier", "xpack.maps.source.esGeoLine.sortFieldPlaceholder": "Sélectionner le champ de tri", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index ede24d36d52c3..5888ea9cf64f6 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -21810,10 +21810,7 @@ "xpack.maps.source.esGeoGrid.showAsLabel": "表示形式", "xpack.maps.source.esGeoGrid.showAsSelector": "表示方法を選択", "xpack.maps.source.esGeoLine.bucketsName": "追跡", - "xpack.maps.source.esGeoLine.geofieldLabel": "地理空間フィールド", - "xpack.maps.source.esGeoLine.geofieldPlaceholder": "ジオフィールドを選択", "xpack.maps.source.esGeoLine.geospatialFieldLabel": "地理空間フィールド", - "xpack.maps.source.esGeoLine.isTrackCompleteLabel": "トラックは完了しました", "xpack.maps.source.esGeoLine.metricsLabel": "トラックメトリック", "xpack.maps.source.esGeoLine.sortFieldLabel": "並べ替え", "xpack.maps.source.esGeoLine.sortFieldPlaceholder": "ソートフィールドを選択", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 2a4f31a69af74..2845576f68992 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -21810,10 +21810,7 @@ "xpack.maps.source.esGeoGrid.showAsLabel": "显示为", "xpack.maps.source.esGeoGrid.showAsSelector": "选择显示方法", "xpack.maps.source.esGeoLine.bucketsName": "轨迹", - "xpack.maps.source.esGeoLine.geofieldLabel": "地理空间字段", - "xpack.maps.source.esGeoLine.geofieldPlaceholder": "选择地理字段", "xpack.maps.source.esGeoLine.geospatialFieldLabel": "地理空间字段", - "xpack.maps.source.esGeoLine.isTrackCompleteLabel": "轨迹完整", "xpack.maps.source.esGeoLine.metricsLabel": "轨迹指标", "xpack.maps.source.esGeoLine.sortFieldLabel": "排序", "xpack.maps.source.esGeoLine.sortFieldPlaceholder": "选择排序字段", From d0fe5e93b6df51f44ec8cfd438b07c0ca319f9be Mon Sep 17 00:00:00 2001 From: Devon Thomson Date: Thu, 29 Jun 2023 13:33:58 -0400 Subject: [PATCH 29/41] [Dashboard] 404 page (#160213) Adds a 404 page, and ensures that errors are properly surfaced both if they happen at dashboard container creation time and if they happen when navigating from one dashboard to the next. --- .../dashboard_app/_dashboard_app_strings.ts | 5 -- .../public/dashboard_app/dashboard_app.tsx | 8 +-- .../public/dashboard_app/dashboard_router.tsx | 5 +- .../use_dashboard_outcome_validation.tsx | 18 ++----- .../listing_page/dashboard_listing_page.tsx | 2 +- .../top_nav/dashboard_top_nav.tsx | 3 +- .../top_nav/use_dashboard_menu_items.tsx | 2 +- .../dashboard/public/dashboard_app/types.ts | 5 -- .../external_api/dashboard_404.tsx | 47 +++++++++++++++++ .../external_api/dashboard_renderer.test.tsx | 51 ++++++++++++++++++- .../external_api/dashboard_renderer.tsx | 32 +++++++++--- .../public/dashboard_container/types.ts | 5 ++ .../lib/load_dashboard_state.ts | 16 ++++-- src/plugins/dashboard/tsconfig.json | 3 +- .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - yarn.lock | 6 +-- 18 files changed, 158 insertions(+), 53 deletions(-) create mode 100644 src/plugins/dashboard/public/dashboard_container/external_api/dashboard_404.tsx diff --git a/src/plugins/dashboard/public/dashboard_app/_dashboard_app_strings.ts b/src/plugins/dashboard/public/dashboard_app/_dashboard_app_strings.ts index dfc5a648f50aa..ec2bb389755a7 100644 --- a/src/plugins/dashboard/public/dashboard_app/_dashboard_app_strings.ts +++ b/src/plugins/dashboard/public/dashboard_app/_dashboard_app_strings.ts @@ -91,11 +91,6 @@ export const getPanelAddedSuccessString = (savedObjectName: string) => }, }); -export const getDashboardURL404String = () => - i18n.translate('dashboard.loadingError.dashboardNotFound', { - defaultMessage: 'The requested dashboard could not be found.', - }); - export const getPanelTooOldErrorString = () => i18n.translate('dashboard.loadURLError.PanelTooOld', { defaultMessage: 'Cannot load panels from a URL created in a version older than 7.3', diff --git a/src/plugins/dashboard/public/dashboard_app/dashboard_app.tsx b/src/plugins/dashboard/public/dashboard_app/dashboard_app.tsx index 456e422e90f13..daa6c94f7f60d 100644 --- a/src/plugins/dashboard/public/dashboard_app/dashboard_app.tsx +++ b/src/plugins/dashboard/public/dashboard_app/dashboard_app.tsx @@ -30,11 +30,12 @@ import { createSessionRestorationDataProvider, } from './url/search_sessions_integration'; import { DashboardAPI, DashboardRenderer } from '..'; +import { type DashboardEmbedSettings } from './types'; import { DASHBOARD_APP_ID } from '../dashboard_constants'; import { pluginServices } from '../services/plugin_services'; import { DashboardTopNav } from './top_nav/dashboard_top_nav'; import { AwaitingDashboardAPI } from '../dashboard_container'; -import { type DashboardEmbedSettings, DashboardRedirect } from './types'; +import { DashboardRedirect } from '../dashboard_container/types'; import { useDashboardMountContext } from './hooks/dashboard_mount_context'; import { useDashboardOutcomeValidation } from './hooks/use_dashboard_outcome_validation'; import { loadDashboardHistoryLocationState } from './locator/load_dashboard_history_location_state'; @@ -113,9 +114,7 @@ export function DashboardApp({ /** * Validate saved object load outcome */ - const { validateOutcome, getLegacyConflictWarning } = useDashboardOutcomeValidation({ - redirectTo, - }); + const { validateOutcome, getLegacyConflictWarning } = useDashboardOutcomeValidation(); /** * Create options to pass into the dashboard renderer @@ -202,6 +201,7 @@ export function DashboardApp({ { +export const useDashboardOutcomeValidation = () => { const [aliasId, setAliasId] = useState(); const [outcome, setOutcome] = useState(); const [savedObjectId, setSavedObjectId] = useState(); @@ -30,17 +24,11 @@ export const useDashboardOutcomeValidation = ({ /** * Unpack dashboard services */ - const { - notifications: { toasts }, - screenshotMode, - spaces, - } = pluginServices.getServices(); + const { screenshotMode, spaces } = pluginServices.getServices(); const validateOutcome = useCallback( ({ dashboardFound, resolveMeta, dashboardId }: LoadDashboardReturn) => { if (!dashboardFound) { - toasts.addDanger(getDashboardURL404String()); - redirectTo({ destination: 'listing' }); return false; // redirected. Stop loading dashboard. } @@ -64,7 +52,7 @@ export const useDashboardOutcomeValidation = ({ } return true; }, - [scopedHistory, redirectTo, screenshotMode, spaces, toasts] + [scopedHistory, screenshotMode, spaces] ); const getLegacyConflictWarning = useMemo(() => { diff --git a/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_listing_page.tsx b/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_listing_page.tsx index 019bd3a7749ab..d02a9a31ef667 100644 --- a/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_listing_page.tsx +++ b/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_listing_page.tsx @@ -16,9 +16,9 @@ import { DashboardAppNoDataPage, isDashboardAppInNoDataState, } from '../no_data/dashboard_app_no_data'; -import { DashboardRedirect } from '../types'; import { pluginServices } from '../../services/plugin_services'; import { getDashboardBreadcrumb } from '../_dashboard_app_strings'; +import { DashboardRedirect } from '../../dashboard_container/types'; import { getDashboardListItemLink } from './get_dashboard_list_item_link'; import { DashboardListing } from '../../dashboard_listing/dashboard_listing'; diff --git a/src/plugins/dashboard/public/dashboard_app/top_nav/dashboard_top_nav.tsx b/src/plugins/dashboard/public/dashboard_app/top_nav/dashboard_top_nav.tsx index ba1b0740ad8a7..512c8b5fe7ebc 100644 --- a/src/plugins/dashboard/public/dashboard_app/top_nav/dashboard_top_nav.tsx +++ b/src/plugins/dashboard/public/dashboard_app/top_nav/dashboard_top_nav.tsx @@ -26,9 +26,10 @@ import { } from '../_dashboard_app_strings'; import { UI_SETTINGS } from '../../../common'; import { useDashboardAPI } from '../dashboard_app'; +import { DashboardEmbedSettings } from '../types'; import { pluginServices } from '../../services/plugin_services'; import { useDashboardMenuItems } from './use_dashboard_menu_items'; -import { DashboardEmbedSettings, DashboardRedirect } from '../types'; +import { DashboardRedirect } from '../../dashboard_container/types'; import { DashboardEditingToolbar } from './dashboard_editing_toolbar'; import { useDashboardMountContext } from '../hooks/dashboard_mount_context'; import { getFullEditPath, LEGACY_DASHBOARD_APP_ID } from '../../dashboard_constants'; diff --git a/src/plugins/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx b/src/plugins/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx index 13e45678134d5..22b12b4726fcd 100644 --- a/src/plugins/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx +++ b/src/plugins/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx @@ -12,13 +12,13 @@ import { Dispatch, SetStateAction, useCallback, useMemo, useState } from 'react' import { ViewMode } from '@kbn/embeddable-plugin/public'; import { TopNavMenuData } from '@kbn/navigation-plugin/public'; -import { DashboardRedirect } from '../types'; import { UI_SETTINGS } from '../../../common'; import { useDashboardAPI } from '../dashboard_app'; import { topNavStrings } from '../_dashboard_app_strings'; import { ShowShareModal } from './share/show_share_modal'; import { pluginServices } from '../../services/plugin_services'; import { CHANGE_CHECK_DEBOUNCE } from '../../dashboard_constants'; +import { DashboardRedirect } from '../../dashboard_container/types'; import { SaveDashboardReturn } from '../../services/dashboard_content_management/types'; import { confirmDiscardUnsavedChanges } from '../../dashboard_listing/confirm_overlays'; diff --git a/src/plugins/dashboard/public/dashboard_app/types.ts b/src/plugins/dashboard/public/dashboard_app/types.ts index cc33cec973eeb..45991264cfa6a 100644 --- a/src/plugins/dashboard/public/dashboard_app/types.ts +++ b/src/plugins/dashboard/public/dashboard_app/types.ts @@ -8,11 +8,6 @@ import { AppMountParameters, ScopedHistory } from '@kbn/core-application-browser'; -export type DashboardRedirect = (props: RedirectToProps) => void; -export type RedirectToProps = - | { destination: 'dashboard'; id?: string; useReplace?: boolean; editMode?: boolean } - | { destination: 'listing'; filter?: string; useReplace?: boolean }; - export interface DashboardEmbedSettings { forceHideFilterBar?: boolean; forceShowTopNavMenu?: boolean; diff --git a/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_404.tsx b/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_404.tsx new file mode 100644 index 0000000000000..a6af7f09af210 --- /dev/null +++ b/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_404.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiButtonEmpty } from '@elastic/eui'; +import { NotFoundPrompt } from '@kbn/shared-ux-prompt-not-found'; + +import { DashboardRedirect } from '../types'; + +export const Dashboard404Page = ({ + dashboardRedirect, +}: { + dashboardRedirect?: DashboardRedirect; +}) => { + return ( + dashboardRedirect({ destination: 'listing' })} + > + {i18n.translate('dashboard.renderer.404Action', { + defaultMessage: 'View available dashboards', + })} + , + ] + : undefined // if dashboard redirect not given, fall back to `go back`. + } + /> + ); +}; 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 501fab38f186c..c85909f8881fc 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 @@ -10,6 +10,7 @@ import React from 'react'; import { ReactWrapper } from 'enzyme'; import { act } from 'react-dom/test-utils'; import { mountWithIntl } from '@kbn/test-jest-helpers'; +import { NotFoundPrompt } from '@kbn/shared-ux-prompt-not-found'; import { DashboardContainerFactory } from '..'; import { DASHBOARD_CONTAINER_TYPE } from '../..'; @@ -17,6 +18,7 @@ import { DashboardRenderer } from './dashboard_renderer'; import { pluginServices } from '../../services/plugin_services'; import { DashboardContainer } from '../embeddable/dashboard_container'; import { DashboardCreationOptions } from '../embeddable/dashboard_container_factory'; +import { SavedObjectNotFound } from '@kbn/kibana-utils-plugin/common'; describe('dashboard renderer', () => { let mockDashboardContainer: DashboardContainer; @@ -26,7 +28,7 @@ describe('dashboard renderer', () => { mockDashboardContainer = { destroy: jest.fn(), render: jest.fn(), - navigateToDashboard: jest.fn(), + navigateToDashboard: jest.fn().mockResolvedValue({}), } as unknown as DashboardContainer; mockDashboardFactory = { create: jest.fn().mockReturnValue(mockDashboardContainer), @@ -162,4 +164,51 @@ describe('dashboard renderer', () => { // instead we should call create on the factory again. expect(mockSuccessFactory.create).toHaveBeenCalledTimes(1); }); + + test('renders a 404 page when initial dashboard creation returns a savedObjectNotFound error', async () => { + // ensure that the first attempt at creating a dashboard results in a 404 + const mockErrorEmbeddable = { + error: new SavedObjectNotFound('dashboard', 'gat em'), + 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(); + }); + await wrapper!.update(); + + // The shared UX not found prompt should be rendered. + expect(wrapper!.find(NotFoundPrompt).exists()).toBeTruthy(); + }); + + test('renders a 404 page when dashboard navigation returns a savedObjectNotFound error', async () => { + mockDashboardContainer.navigateToDashboard = jest + .fn() + .mockRejectedValue(new SavedObjectNotFound('dashboard', 'gat em')); + + let wrapper: ReactWrapper; + await act(async () => { + wrapper = await mountWithIntl(); + }); + // The shared UX not found prompt should not be rendered. + expect(wrapper!.find(NotFoundPrompt).exists()).toBeFalsy(); + + expect(mockDashboardContainer.render).toHaveBeenCalled(); + await act(async () => { + await wrapper.setProps({ savedObjectId: 'saved_object_kibanakiwi' }); + }); + await wrapper!.update(); + + // The shared UX not found prompt should be rendered. + expect(wrapper!.find(NotFoundPrompt).exists()).toBeTruthy(); + }); }); 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 13a1c82416aed..2a10b4dedb79e 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 @@ -21,6 +21,7 @@ import classNames from 'classnames'; import useUnmount from 'react-use/lib/useUnmount'; import { EuiLoadingElastic, EuiLoadingSpinner } from '@elastic/eui'; +import { SavedObjectNotFound } from '@kbn/kibana-utils-plugin/common'; import { ErrorEmbeddable, isErrorEmbeddable } from '@kbn/embeddable-plugin/public'; import { @@ -33,23 +34,27 @@ import { DashboardContainerFactory, DashboardContainerFactoryDefinition, } from '../embeddable/dashboard_container_factory'; +import { DashboardRedirect } from '../types'; import { DASHBOARD_CONTAINER_TYPE } from '..'; import { DashboardContainerInput } from '../../../common'; import type { DashboardContainer } from '../embeddable/dashboard_container'; +import { Dashboard404Page } from './dashboard_404'; export interface DashboardRendererProps { savedObjectId?: string; showPlainSpinner?: boolean; + dashboardRedirect?: DashboardRedirect; getCreationOptions?: () => Promise; } export const DashboardRenderer = forwardRef( - ({ savedObjectId, getCreationOptions, showPlainSpinner }, ref) => { + ({ savedObjectId, getCreationOptions, dashboardRedirect, showPlainSpinner }, ref) => { const dashboardRoot = useRef(null); const [loading, setLoading] = useState(true); const [screenshotMode, setScreenshotMode] = useState(false); const [dashboardContainer, setDashboardContainer] = useState(); const [fatalError, setFatalError] = useState(); + const [dashboardMissing, setDashboardMissing] = useState(false); useImperativeHandle( ref, @@ -71,19 +76,30 @@ export const DashboardRenderer = forwardRef uuidv4(), []); useEffect(() => { + /** + * Here we attempt to build a dashboard or navigate to a new dashboard. Clear all error states + * if they exist in case this dashboard loads correctly. + */ + fatalError?.destroy(); + setDashboardMissing(false); + setFatalError(undefined); + if (dashboardContainer) { // When a dashboard already exists, don't rebuild it, just set a new id. - dashboardContainer.navigateToDashboard(savedObjectId); - + dashboardContainer.navigateToDashboard(savedObjectId).catch((e) => { + dashboardContainer?.destroy(); + setDashboardContainer(undefined); + setFatalError(new ErrorEmbeddable(e, { id })); + if (e instanceof SavedObjectNotFound) { + setDashboardMissing(true); + } + }); 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. @@ -109,6 +125,9 @@ export const DashboardRenderer = forwardRef { + if (dashboardMissing) return ; if (fatalError) return fatalError.render(); if (loading) return loadingSpinner; return
    ; diff --git a/src/plugins/dashboard/public/dashboard_container/types.ts b/src/plugins/dashboard/public/dashboard_container/types.ts index bdd7b7083a6da..8ec0082d4109d 100644 --- a/src/plugins/dashboard/public/dashboard_container/types.ts +++ b/src/plugins/dashboard/public/dashboard_container/types.ts @@ -16,6 +16,11 @@ export type DashboardReduxState = ReduxEmbeddableState< DashboardPublicState >; +export type DashboardRedirect = (props: RedirectToProps) => void; +export type RedirectToProps = + | { destination: 'dashboard'; id?: string; useReplace?: boolean; editMode?: boolean } + | { destination: 'listing'; filter?: string; useReplace?: boolean }; + export type DashboardStateFromSaveModal = Pick< DashboardContainerInput, 'title' | 'description' | 'tags' | 'timeRestore' | 'timeRange' | 'refreshInterval' diff --git a/src/plugins/dashboard/public/services/dashboard_content_management/lib/load_dashboard_state.ts b/src/plugins/dashboard/public/services/dashboard_content_management/lib/load_dashboard_state.ts index 2942270f86195..538162a8eacbc 100644 --- a/src/plugins/dashboard/public/services/dashboard_content_management/lib/load_dashboard_state.ts +++ b/src/plugins/dashboard/public/services/dashboard_content_management/lib/load_dashboard_state.ts @@ -10,6 +10,7 @@ import { has } from 'lodash'; import { Filter, Query } from '@kbn/es-query'; import { ViewMode } from '@kbn/embeddable-plugin/public'; +import { SavedObjectNotFound } from '@kbn/kibana-utils-plugin/public'; import { cleanFiltersForSerialize } from '@kbn/presentation-util-plugin/public'; import { rawControlGroupAttributesToControlGroupInput } from '@kbn/controls-plugin/common'; import { parseSearchSourceJSON, injectSearchSourceReferences } from '@kbn/data-plugin/public'; @@ -57,17 +58,22 @@ export const loadDashboardState = async ({ /** * Load the saved object from Content Management */ - const { item: rawDashboardContent, meta: resolveMeta } = await contentManagement.client.get< - DashboardCrudTypes['GetIn'], - DashboardCrudTypes['GetOut'] - >({ contentTypeId: DASHBOARD_CONTENT_ID, id }); - if (!rawDashboardContent.version) { + const { item: rawDashboardContent, meta: resolveMeta } = await contentManagement.client + .get({ + contentTypeId: DASHBOARD_CONTENT_ID, + id, + }) + .catch((e) => { + throw new SavedObjectNotFound(DASHBOARD_CONTENT_ID, id); + }); + if (!rawDashboardContent || !rawDashboardContent.version) { return { dashboardInput: newDashboardState, dashboardFound: false, dashboardId: savedObjectId, }; } + /** * Inject saved object references back into the saved object attributes */ diff --git a/src/plugins/dashboard/tsconfig.json b/src/plugins/dashboard/tsconfig.json index a4ca23893c48c..d867472e423c3 100644 --- a/src/plugins/dashboard/tsconfig.json +++ b/src/plugins/dashboard/tsconfig.json @@ -61,7 +61,8 @@ "@kbn/object-versioning", "@kbn/core-saved-objects-api-server", "@kbn/content-management-table-list-view", - "@kbn/content-management-table-list-view-table" + "@kbn/content-management-table-list-view-table", + "@kbn/shared-ux-prompt-not-found" ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index f1f5ffece0a0c..d9e041ec102d9 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -1189,7 +1189,6 @@ "dashboard.listing.unsaved.editTitle": "Poursuivre les modifications", "dashboard.listing.unsaved.loading": "Chargement", "dashboard.listing.unsaved.resetTitle": "Réinitialiser les modifications", - "dashboard.loadingError.dashboardNotFound": "Le tableau de bord demandé est introuvable.", "dashboard.loadURLError.PanelTooOld": "Impossible de charger les panneaux à partir d'une URL créée dans une version antérieure à 7.3", "dashboard.noMatchRoute.bannerTitleText": "Page introuvable", "dashboard.panel.AddToLibrary": "Enregistrer dans la bibliothèque", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 5888ea9cf64f6..499805b310a36 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -1189,7 +1189,6 @@ "dashboard.listing.unsaved.editTitle": "編集を続行", "dashboard.listing.unsaved.loading": "読み込み中", "dashboard.listing.unsaved.resetTitle": "変更をリセット", - "dashboard.loadingError.dashboardNotFound": "リクエストされたダッシュボードが見つかりませんでした。", "dashboard.loadURLError.PanelTooOld": "7.3より古いバージョンで作成されたURLからはパネルを読み込めません", "dashboard.noMatchRoute.bannerTitleText": "ページが見つかりません", "dashboard.panel.AddToLibrary": "ライブラリに保存", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 2845576f68992..08567d2070538 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -1189,7 +1189,6 @@ "dashboard.listing.unsaved.editTitle": "继续编辑", "dashboard.listing.unsaved.loading": "正在加载", "dashboard.listing.unsaved.resetTitle": "重置更改", - "dashboard.loadingError.dashboardNotFound": "找不到请求的仪表板。", "dashboard.loadURLError.PanelTooOld": "无法通过在早于 7.3 的版本中创建的 URL 加载面板", "dashboard.noMatchRoute.bannerTitleText": "未找到页面", "dashboard.panel.AddToLibrary": "保存到库", diff --git a/yarn.lock b/yarn.lock index d49579b5c58eb..bcc6e233f478c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18021,9 +18021,9 @@ inquirer@^8.2.3: wrap-ansi "^7.0.0" install-artifact-from-github@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.3.2.tgz#1a16d9508e40330523a3017ae0d4713ccc64de82" - integrity sha512-yCFcLvqk0yQdxx0uJz4t9Z3adDMLAYrcGYv546uRXCSvxE+GqNYhhz/KmrGcUKGI/gVLR9n/e/zM9jX/+ASMJQ== + version "1.3.3" + resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.3.3.tgz#57d89bacfa0f47d7307fe41b6247cda9f9a8079c" + integrity sha512-x79SL0d8WOi1ZjXSTUqqs0GPQZ92YArJAN9O46wgU9wdH2U9ecyyhB9YGDbPe2OLV4ptmt6AZYRQZ2GydQZosQ== internal-slot@^1.0.3: version "1.0.3" From 5a294c6e884aeb497700a6bd5dcc8836e2bdfbb8 Mon Sep 17 00:00:00 2001 From: Saarika Bhasi <55930906+saarikabhasi@users.noreply.github.com> Date: Thu, 29 Jun 2023 14:25:43 -0400 Subject: [PATCH 30/41] [Search Application]Handle invalid alias name exception (#160686) ## Summary * Adds a new error code `search_application_name_invalid` to denote invalid character in search application name * Adds test cases to check invalid characters * Adds new exception `isInvalidSearchApplicationNameException` to check if Elasticsearch returns `invalid_alias_name_exception` ### Screen Recording https://github.com/elastic/kibana/assets/55930906/4c8e188f-817b-4926-9960-86cb22327aed --- .../common/types/error_codes.ts | 1 + .../search_applications.test.ts | 26 +++++++++ .../enterprise_search/search_applications.ts | 53 ++++++++++++++----- .../server/utils/identify_exceptions.ts | 3 ++ 4 files changed, 69 insertions(+), 14 deletions(-) diff --git a/x-pack/plugins/enterprise_search/common/types/error_codes.ts b/x-pack/plugins/enterprise_search/common/types/error_codes.ts index fe1a2a266dba5..6724e35f057b8 100644 --- a/x-pack/plugins/enterprise_search/common/types/error_codes.ts +++ b/x-pack/plugins/enterprise_search/common/types/error_codes.ts @@ -21,6 +21,7 @@ export enum ErrorCode { PIPELINE_NOT_FOUND = 'pipeline_not_found', RESOURCE_NOT_FOUND = 'resource_not_found', SEARCH_APPLICATION_ALREADY_EXISTS = 'search_application_already_exists', + SEARCH_APPLICATION_NAME_INVALID = 'search_application_name_invalid', UNAUTHORIZED = 'unauthorized', UNCAUGHT_EXCEPTION = 'uncaught_exception', } diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.test.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.test.ts index c8186cd9511ec..20f2709e41647 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.test.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.test.ts @@ -206,6 +206,32 @@ describe('engines routes', () => { }, }); }); + it('returns 400, create search application with invalid characters', async () => { + (mockClient.asCurrentUser.searchApplication.put as jest.Mock).mockRejectedValueOnce({ + meta: { + body: { + error: { + reason: `Invalid alias name [engine name]: must not contain the following characters ['\',' ','"','<','*','?','>','|',',','/']`, + type: 'invalid_alias_name_exception', + }, + }, + statusCode: 400, + }, + }); + await mockRouter.callRoute({ + params: { engine_name: 'engine name' }, + }); + const exceptionReason = `Search application name must not contain: [ '' , ' ' , '\"' , '<' , '*' , '?' , '>' , '|' , ',' , '/' ]`; + expect(mockRouter.response.customError).toHaveBeenCalledWith({ + body: { + attributes: { + error_code: 'search_application_name_invalid', + }, + message: `Invalid Search application name. ${exceptionReason}`, + }, + statusCode: 400, + }); + }); it('PUT - Upsert API creates request - update', async () => { mockClient.asCurrentUser.searchApplication.put.mockImplementation(() => ({ acknowledged: true, diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.ts index 464fc6b45c554..67af98c13dec9 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.ts @@ -23,6 +23,7 @@ import { RouteDependencies } from '../../plugin'; import { createError } from '../../utils/create_error'; import { elasticsearchErrorHandler } from '../../utils/elasticsearch_error_handler'; import { + isInvalidSearchApplicationNameException, isNotFoundException, isVersionConflictEngineException, } from '../../utils/identify_exceptions'; @@ -100,21 +101,45 @@ export function registerSearchApplicationsRoutes({ log, router }: RouteDependenc return response.ok({ body: engine }); } catch (error) { - if (isVersionConflictEngineException(error)) { - return createError({ - errorCode: ErrorCode.SEARCH_APPLICATION_ALREADY_EXISTS, - message: i18n.translate( - 'xpack.enterpriseSearch.server.routes.createSearchApplication.searchApplciationExistsError', - { - defaultMessage: 'Search application name already taken. Choose another name.', - } - ), - response, - statusCode: 409, - }); + switch (true) { + case isVersionConflictEngineException(error): + return createError({ + errorCode: ErrorCode.SEARCH_APPLICATION_ALREADY_EXISTS, + message: i18n.translate( + 'xpack.enterpriseSearch.server.routes.createSearchApplication.searchApplciationExistsError', + { + defaultMessage: 'Search application name already taken. Choose another name.', + } + ), + response, + statusCode: 409, + }); + case isInvalidSearchApplicationNameException(error): + let exceptionReason = ''; + const unSupportedCharacters = + error.meta?.body?.error?.reason?.match(/\[(.*?)\]|'(.*?)'/gi); + + if (unSupportedCharacters && unSupportedCharacters.length === 2) { + exceptionReason = + 'Search application name must not contain: ' + + unSupportedCharacters[1].replace(/\'(.*?)\'/g, ' $& '); + } + return createError({ + errorCode: ErrorCode.SEARCH_APPLICATION_NAME_INVALID, + message: i18n.translate( + 'xpack.enterpriseSearch.server.routes.createSearchApplication.searchApplicationInvalidName', + { + defaultMessage: 'Invalid Search application name. {exceptionReason}', + values: { exceptionReason }, + } + ), + response, + statusCode: 400, + }); + + default: + throw error; } - - throw error; } }) ); diff --git a/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts b/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts index 915d80312ee79..48cc27fa9f03d 100644 --- a/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts +++ b/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts @@ -42,3 +42,6 @@ export const isIllegalArgumentException = (error: ElasticsearchResponseError) => export const isVersionConflictEngineException = (error: ElasticsearchResponseError) => error.meta?.body?.error?.type === 'version_conflict_engine_exception'; + +export const isInvalidSearchApplicationNameException = (error: ElasticsearchResponseError) => + error.meta?.body?.error?.type === 'invalid_alias_name_exception'; From ff4559cb7700fdaed7568a1909bab29cb99ba226 Mon Sep 17 00:00:00 2001 From: christineweng <18648970+christineweng@users.noreply.github.com> Date: Thu, 29 Jun 2023 13:47:21 -0500 Subject: [PATCH 31/41] [Security Solution] Add validations to investigation query in markdown editor (#160574) ### Summary This PR adds validations for filters in investigation guide query. Currently validations are not sufficient on the form: - User can save query without filter field, operator or value (https://github.com/elastic/kibana/issues/153092) - User can save query with values in invalid format (i.e. string in date time field) Validations added reference checks in unified search `kibana/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts` **How to test** The `Save changes` button should be disabled if: - Label of form is empty - Filter is missing field name, operator type and/or value - Filter value is of incorrect format, possible types and example fields: - date (`@timestamp`) - string (`host.name`) - number (`event.risk_score`). - boolean (`Target.dll.Ext.code_signature.exists`) - ip (`host.ip`) - For `is one of` and `is not one of` operators, it should not allow user to save if any value specified in the array is invalid - For range operators, it should not allow user to save if `from` or `to` has invalid value ### After https://github.com/elastic/kibana/assets/18648970/f0424e10-0099-4e02-be00-d8247ab44389 ### 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/insight/helpers.test.tsx | 266 ++++++++++++++++++ .../plugins/insight/helpers.tsx | 84 ++++++ .../markdown_editor/plugins/insight/index.tsx | 14 +- 3 files changed, 361 insertions(+), 3 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.test.tsx create mode 100644 x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.test.tsx b/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.test.tsx new file mode 100644 index 0000000000000..899c668884273 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.test.tsx @@ -0,0 +1,266 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import isSemverValid from 'semver/functions/valid'; +import { DataViewField } from '@kbn/data-views-plugin/public'; +import { validateProvider, isProviderValid } from './helpers'; +import type { Provider } from './use_insight_data_providers'; + +const mockDataViewFieldSpec = { + name: 'data view', + type: 'string', + searchable: true, + aggregatable: false, +}; + +const mockProvider: Provider = { + field: 'field', + excluded: false, + queryType: 'phrase', + value: 'value', + valueType: 'string', +}; + +describe('Filter validation utils', () => { + describe('validateProvider', () => { + it('should return false if value or value type is null', () => { + const dataViewField = new DataViewField(mockDataViewFieldSpec); + expect(validateProvider(dataViewField, '', 'string')).toBe(false); + expect(validateProvider(dataViewField, 'text', 'undefined')).toBe(false); + expect(validateProvider(dataViewField, undefined)).toBe(false); + }); + + it('should validate value correctly when type is date', () => { + const dataViewField = new DataViewField({ ...mockDataViewFieldSpec, type: 'date' }); + expect(validateProvider(dataViewField, '45621', 'string')).toBe(true); + expect(validateProvider(dataViewField, 'Jan 2022', 'string')).toBe(true); + expect(validateProvider(dataViewField, 'Jun 28, 2023 @ 00:00:00.000', 'string')).toBe(true); + expect(validateProvider(dataViewField, '4562100000', 'string')).toBe(false); + expect(validateProvider(dataViewField, 'date text', 'string')).toBe(false); + expect(validateProvider(dataViewField, true, 'boolean')).toBe(false); + }); + + it('should validate value correctly when type is ip', () => { + const dataViewField = new DataViewField({ ...mockDataViewFieldSpec, type: 'ip' }); + expect(validateProvider(dataViewField, '123.000.000', 'string')).toBe(true); + expect(validateProvider(dataViewField, '123215672', 'string')).toBe(true); + expect(validateProvider(dataViewField, '123.000', 'string')).toBe(true); + expect(validateProvider(dataViewField, 123215672, 'number')).toBe(true); + expect(validateProvider(dataViewField, '12345678910', 'string')).toBe(false); + expect(validateProvider(dataViewField, 'text', 'string')).toBe(false); + expect(validateProvider(dataViewField, true, 'boolean')).toBe(false); + }); + + it('should validate value correctly when type is string and esType available', () => { + const dataViewField = new DataViewField({ + ...mockDataViewFieldSpec, + type: 'string', + }); + expect(validateProvider(dataViewField, 'host.name', 'string')).toBe(true); + expect(validateProvider(dataViewField, '123', 'string')).toBe(true); + expect(validateProvider(dataViewField, true, 'boolean')).toBe(false); + expect(validateProvider(dataViewField, 123, 'number')).toBe(false); + }); + + it('should validate value correctly when type is string and esType has ES type versions', () => { + const dataViewField = new DataViewField({ + ...mockDataViewFieldSpec, + type: 'string', + esTypes: ['keyword', 'version'], + }); + expect(validateProvider(dataViewField, 'host.name', 'string')).toBe( + Boolean(isSemverValid('host.name')) + ); + expect(validateProvider(dataViewField, '123', 'string')).toBe(Boolean(isSemverValid('123'))); + expect(validateProvider(dataViewField, true, 'boolean')).toBe(false); + expect(validateProvider(dataViewField, 123, 'number')).toBe(false); + }); + + it('should validate value correctly when type is boolean', () => { + const dataViewField = new DataViewField({ + ...mockDataViewFieldSpec, + type: 'boolean', + }); + expect(validateProvider(dataViewField, true, 'boolean')).toBe(true); + expect(validateProvider(dataViewField, false, 'boolean')).toBe(true); + expect(validateProvider(dataViewField, 'host.name', 'string')).toBe(false); + expect(validateProvider(dataViewField, '123', 'string')).toBe(false); + expect(validateProvider(dataViewField, 123, 'number')).toBe(false); + }); + + it('should validate value correctly when type is number', () => { + const dataViewField = new DataViewField({ + ...mockDataViewFieldSpec, + type: 'number', + }); + expect(validateProvider(dataViewField, 123, 'number')).toBe(true); + expect(validateProvider(dataViewField, '123', 'number')).toBe(true); + expect(validateProvider(dataViewField, 'host.name', 'string')).toBe(false); + }); + }); + + describe('isProviderValid', () => { + const dataViewField = new DataViewField(mockDataViewFieldSpec); + const dataViewFieldHostName = new DataViewField({ + ...mockDataViewFieldSpec, + name: 'host.name', + type: 'string', + }); + const dataViewFieldHostIP = new DataViewField({ + ...mockDataViewFieldSpec, + name: 'host.ip', + type: 'ip', + }); + const dataViewFieldCount = new DataViewField({ + ...mockDataViewFieldSpec, + name: 'count', + type: 'number', + }); + + const mockPhrasesProvider = { ...mockProvider, queryType: 'phrases' }; + const mockRangeProvider = { ...mockProvider, queryType: 'range' }; + const mockExistProvider = { ...mockProvider, queryType: 'exists' }; + + it('should return false if dataViewField or field name is empty', () => { + expect(isProviderValid(mockProvider, undefined)).toBe(false); + expect(isProviderValid({ ...mockProvider, field: '' }, dataViewField)).toBe(false); + }); + + describe('should validate phrases query correctly', () => { + it('should validate string field type correctly', () => { + expect( + isProviderValid( + { + ...mockPhrasesProvider, + field: 'host.name', + value: JSON.stringify(['host1', 'host2']), + }, + dataViewFieldHostName + ) + ).toBe(true); + expect( + isProviderValid( + { ...mockPhrasesProvider, field: 'host.name', value: JSON.stringify([]) }, + dataViewFieldHostName + ) + ).toBe(false); + }); + + it('should validate ip field type correctly', () => { + expect( + isProviderValid( + { + ...mockPhrasesProvider, + field: 'host.ip', + value: JSON.stringify([123, '123.000.000']), + }, + dataViewFieldHostIP + ) + ).toBe(true); + expect( + isProviderValid( + { + ...mockPhrasesProvider, + field: 'host.ip', + value: JSON.stringify([123, 'random text']), + }, + dataViewFieldHostIP + ) + ).toBe(false); + expect( + isProviderValid( + { ...mockPhrasesProvider, field: 'host.ip', value: JSON.stringify('123, random text') }, + dataViewFieldHostIP + ) + ).toBe(false); + }); + + it('should validate number field type correctly', () => { + expect( + isProviderValid( + { ...mockPhrasesProvider, field: 'count', value: JSON.stringify([123, 456]) }, + dataViewFieldCount + ) + ).toBe(true); + expect( + isProviderValid( + { ...mockPhrasesProvider, field: 'count', value: JSON.stringify('123, 456') }, + dataViewFieldCount + ) + ).toBe(false); + expect( + isProviderValid( + { ...mockPhrasesProvider, field: 'count', value: JSON.stringify([123, true]) }, + dataViewFieldCount + ) + ).toBe(false); + }); + }); + + describe('should validate range query correctly', () => { + it('should return false if value is not object type', () => { + expect( + isProviderValid( + { ...mockRangeProvider, field: 'host.ip', value: JSON.stringify('gte:120.000') }, + dataViewFieldHostIP + ) + ).toBe(false); + }); + + it('should validate ip field type correctly', () => { + expect( + isProviderValid( + { ...mockRangeProvider, field: 'host.ip', value: JSON.stringify({ gte: 120.0 }) }, + dataViewFieldHostIP + ) + ).toBe(true); + expect( + isProviderValid( + { + ...mockRangeProvider, + field: 'host.ip', + value: JSON.stringify({ gte: 120.0, lt: 'text' }), + }, + dataViewFieldHostIP + ) + ).toBe(false); + }); + + it('should validate number field type correctly', () => { + expect( + isProviderValid( + { ...mockRangeProvider, field: 'count', value: JSON.stringify({ gte: 12, lt: 40 }) }, + dataViewFieldCount + ) + ).toBe(true); + expect( + isProviderValid( + { ...mockRangeProvider, field: 'count', value: JSON.stringify({}) }, + dataViewFieldCount + ) + ).toBe(true); + expect( + isProviderValid( + { + ...mockRangeProvider, + field: 'count', + value: JSON.stringify({ gte: 120, lt: 'text' }), + }, + dataViewFieldCount + ) + ).toBe(false); + }); + }); + + it('should validate exist query correctly', () => { + expect(isProviderValid({ ...mockExistProvider, field: 'host.ip' }, dataViewFieldHostIP)).toBe( + true + ); + expect(isProviderValid({ ...mockExistProvider, field: '' }, dataViewFieldHostIP)).toBe(false); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.tsx b/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.tsx new file mode 100644 index 0000000000000..8d17303d76487 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.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 dateMath from '@kbn/datemath'; +import isSemverValid from 'semver/functions/valid'; +import { IpAddress } from '@kbn/data-plugin/common'; +import { ES_FIELD_TYPES } from '@kbn/field-types'; +import type { DataViewField } from '@kbn/data-views-plugin/public'; +import type { Provider } from './use_insight_data_providers'; + +export function validateProvider( + dataViewField: DataViewField, + value?: string | number | boolean, + valueType?: string +): boolean { + if (value === undefined || valueType === 'undefined') { + return false; + } + + const fieldType = dataViewField.type; + switch (fieldType) { + case 'date': + const moment = typeof value === 'string' ? dateMath.parse(value) : null; + return Boolean(typeof value === 'string' && moment && moment.isValid()); + case 'ip': + if (typeof value === 'string' || typeof value === 'number') { + try { + return Boolean(new IpAddress(value)); + } catch (e) { + return false; + } + } + return false; + case 'string': + if (typeof value === 'string' && dataViewField.esTypes?.includes(ES_FIELD_TYPES.VERSION)) { + return Boolean(isSemverValid(value)); + } + return typeof value === 'string' && value.trim().length > 0; + case 'boolean': + return typeof value === 'boolean'; + case 'number': + return typeof value === 'number' || (typeof value === 'string' && !isNaN(parseFloat(value))); + default: + return true; + } +} + +export function isProviderValid(provider: Provider, dataViewField?: DataViewField): boolean { + if (!dataViewField || !provider.field) { + return false; + } + + switch (provider.queryType) { + case 'phrase': + return validateProvider(dataViewField, provider.value, provider.valueType); + case 'phrases': + const phraseArray = + typeof provider.value === 'string' ? JSON.parse(`${provider.value}`) : null; + if (!Array.isArray(phraseArray) || !phraseArray.length) { + return false; + } + return phraseArray.every((phrase) => + validateProvider(dataViewField, phrase, provider.valueType) + ); + case 'range': + const rangeObject = JSON.parse(typeof provider.value === 'string' ? provider.value : ''); + if (typeof rangeObject !== 'object') { + return false; + } + + return ( + (!rangeObject.gte || + validateProvider(dataViewField, rangeObject.gte, provider.valueType)) && + (!rangeObject.lt || validateProvider(dataViewField, rangeObject.lt, provider.valueType)) + ); + case 'exists': + return true; + default: + throw new Error(`Unknown operator type: ${provider.queryType}`); + } +} 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 b20983b8b4b37..7ff1a0ef82a65 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 @@ -55,6 +55,7 @@ import { useSourcererDataView } from '../../../../containers/sourcerer'; import { SourcererScopeName } from '../../../../store/sourcerer/model'; import { filtersToInsightProviders } from './provider'; import { useLicense } from '../../../../hooks/use_license'; +import { isProviderValid } from './helpers'; import * as i18n from './translations'; interface InsightComponentProps { @@ -388,9 +389,16 @@ const InsightEditorComponent = ({ [relativeTimerangeController.field] ); const disableSubmit = useMemo(() => { - const labelOrEmpty = labelController.field.value ? labelController.field.value : ''; - return labelOrEmpty.trim() === '' || providers.length === 0; - }, [labelController.field.value, providers]); + const labelOrEmpty = labelController.field.value ?? ''; + const flattenedProviders = providers.flat(); + return ( + labelOrEmpty.trim() === '' || + flattenedProviders.length === 0 || + flattenedProviders.some( + (provider) => !isProviderValid(provider, dataView?.getFieldByName(provider.field)) + ) + ); + }, [labelController.field.value, providers, dataView]); const filtersStub = useMemo(() => { const index = indexPattern && indexPattern.getName ? indexPattern.getName() : '*'; return [ From 1e918df6592aeb5c52bef05ccfe19d2bb1f498a4 Mon Sep 17 00:00:00 2001 From: Yngrid Coello Date: Thu, 29 Jun 2023 21:35:01 +0200 Subject: [PATCH 32/41] [Logs onboarding] Added api tests for progress endpoints (#160750) Relates to https://github.com/elastic/kibana/issues/159451. This PR adds * api integration tests to: - [x] GET /internal/observability_onboarding/custom_logs/{onboardingId}/progress - [x] ~~GET /api/observability_onboarding/custom_logs/{id}/step/{name} 2023-05-24~~ POST /internal/observability_onboarding/custom_logs/{id}/step/{name} - [x] GET /api/observability_onboarding/elastic_agent/config * unit tests to: - [x] `generate_yml.ts` as part of GET /api/observability_onboarding/elastic_agent/config --- .../scripts/test/jest.js | 18 ++ .../server/routes/custom_logs/route.ts | 61 +++--- .../__snapshots__/generate_yml.test.ts.snap | 96 ++++++++++ .../routes/elastic_agent/generate_yml.test.ts | 63 +++++++ .../observability_onboarding_api_supertest.ts | 1 + .../tests/custom_logs/progress/es_utils.ts | 46 +++++ .../custom_logs/progress/progress.spec.ts | 173 ++++++++++++++++++ .../custom_logs/update_step_progress.spec.ts | 99 ++++++++++ .../tests/elastic_agent/config.spec.ts | 83 +++++++++ 9 files changed, 612 insertions(+), 28 deletions(-) create mode 100644 x-pack/plugins/observability_onboarding/scripts/test/jest.js create mode 100644 x-pack/plugins/observability_onboarding/server/routes/elastic_agent/__snapshots__/generate_yml.test.ts.snap create mode 100644 x-pack/plugins/observability_onboarding/server/routes/elastic_agent/generate_yml.test.ts create mode 100644 x-pack/test/observability_onboarding_api_integration/tests/custom_logs/progress/es_utils.ts create mode 100644 x-pack/test/observability_onboarding_api_integration/tests/custom_logs/progress/progress.spec.ts create mode 100644 x-pack/test/observability_onboarding_api_integration/tests/custom_logs/update_step_progress.spec.ts create mode 100644 x-pack/test/observability_onboarding_api_integration/tests/elastic_agent/config.spec.ts diff --git a/x-pack/plugins/observability_onboarding/scripts/test/jest.js b/x-pack/plugins/observability_onboarding/scripts/test/jest.js new file mode 100644 index 0000000000000..30e983204252d --- /dev/null +++ b/x-pack/plugins/observability_onboarding/scripts/test/jest.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('@kbn/babel-register').install(); + +const { run } = require('jest'); + +process.env.NODE_ENV = process.env.NODE_ENV || 'test'; + +const config = require('../../jest.config'); + +const argv = [...process.argv.slice(2), '--config', JSON.stringify(config)]; + +run(argv); diff --git a/x-pack/plugins/observability_onboarding/server/routes/custom_logs/route.ts b/x-pack/plugins/observability_onboarding/server/routes/custom_logs/route.ts index 0ffd8cd0ffe90..c34094136b9c4 100644 --- a/x-pack/plugins/observability_onboarding/server/routes/custom_logs/route.ts +++ b/x-pack/plugins/observability_onboarding/server/routes/custom_logs/route.ts @@ -5,6 +5,7 @@ * 2.0. */ +import Boom from '@hapi/boom'; import * as t from 'io-ts'; import { ObservabilityOnboardingState } from '../../saved_objects/observability_onboarding_status'; import { createObservabilityOnboardingServerRoute } from '../create_observability_onboarding_server_route'; @@ -167,10 +168,9 @@ const stepProgressUpdateRoute = createObservabilityOnboardingServerRoute({ }); if (!savedObservabilityOnboardingState) { - return { - message: - 'Unable to report setup progress - onboarding session not found.', - }; + throw Boom.notFound( + 'Unable to report setup progress - onboarding session not found.' + ); } const { @@ -212,39 +212,44 @@ const getProgressRoute = createObservabilityOnboardingServerRoute({ request, } = resources; const coreStart = await core.start(); - const savedObjectsClient = - coreStart.savedObjects.createInternalRepository(); + const savedObjectsClient = coreStart.savedObjects.getScopedClient(request); const savedObservabilityOnboardingState = - (await getObservabilityOnboardingState({ + await getObservabilityOnboardingState({ savedObjectsClient, savedObjectId: onboardingId, - })) || null; + }); + + if (!savedObservabilityOnboardingState) { + throw Boom.notFound( + 'Unable to report setup progress - onboarding session not found.' + ); + } + const progress = { ...savedObservabilityOnboardingState?.progress }; const esClient = coreStart.elasticsearch.client.asScoped(request).asCurrentUser; - if (savedObservabilityOnboardingState) { - const { - state: { datasetName: dataset, namespace }, - } = savedObservabilityOnboardingState; - if (progress['ea-status'] === 'complete') { - try { - const hasLogs = await getHasLogs({ - dataset, - namespace, - esClient, - }); - if (hasLogs) { - progress['logs-ingest'] = 'complete'; - } else { - progress['logs-ingest'] = 'loading'; - } - } catch (error) { - progress['logs-ingest'] = 'warning'; + + const { + state: { datasetName: dataset, namespace }, + } = savedObservabilityOnboardingState; + if (progress['ea-status'] === 'complete') { + try { + const hasLogs = await getHasLogs({ + dataset, + namespace, + esClient, + }); + if (hasLogs) { + progress['logs-ingest'] = 'complete'; + } else { + progress['logs-ingest'] = 'loading'; } - } else { - progress['logs-ingest'] = 'incomplete'; + } catch (error) { + progress['logs-ingest'] = 'warning'; } + } else { + progress['logs-ingest'] = 'incomplete'; } return { progress }; diff --git a/x-pack/plugins/observability_onboarding/server/routes/elastic_agent/__snapshots__/generate_yml.test.ts.snap b/x-pack/plugins/observability_onboarding/server/routes/elastic_agent/__snapshots__/generate_yml.test.ts.snap new file mode 100644 index 0000000000000..1023c1dcd8b1c --- /dev/null +++ b/x-pack/plugins/observability_onboarding/server/routes/elastic_agent/__snapshots__/generate_yml.test.ts.snap @@ -0,0 +1,96 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`generateYml should return a basic yml configuration 1`] = ` +"outputs: + default: + type: elasticsearch + hosts: + - 'http://localhost:9200' + api_key: 'elastic:changeme' +inputs: + - id: my-logs-id + type: logfile + data_stream: + namespace: default + streams: + - id: logs-onboarding-my-dataset + data_stream: + dataset: my-dataset + paths: + - /my-service.logs +" +`; + +exports[`generateYml should return a yml configuration with customConfigurations 1`] = ` +"outputs: + default: + type: elasticsearch + hosts: + - 'http://localhost:9200' + api_key: 'elastic:changeme' +inputs: + - id: my-logs-id + type: logfile + data_stream: + namespace: default + streams: + - id: logs-onboarding-my-dataset + data_stream: + dataset: my-dataset + paths: + - /my-service.logs +agent.retry: + enabled: true + retriesCount: 3 +agent.monitoring: + metrics: false +" +`; + +exports[`generateYml should return a yml configuration with multiple logFilePaths 1`] = ` +"outputs: + default: + type: elasticsearch + hosts: + - 'http://localhost:9200' + api_key: 'elastic:changeme' +inputs: + - id: my-logs-id + type: logfile + data_stream: + namespace: default + streams: + - id: logs-onboarding-my-dataset + data_stream: + dataset: my-dataset + paths: + - /my-service-1.logs + - /my-service-2.logs +" +`; + +exports[`generateYml should return a yml configuration with service name 1`] = ` +"outputs: + default: + type: elasticsearch + hosts: + - 'http://localhost:9200' + api_key: 'elastic:changeme' +inputs: + - id: my-logs-id + type: logfile + data_stream: + namespace: default + streams: + - id: logs-onboarding-my-dataset + data_stream: + dataset: my-dataset + paths: + - /my-service.logs + processors: + - add_fields: + target: service + fields: + name: my-service +" +`; diff --git a/x-pack/plugins/observability_onboarding/server/routes/elastic_agent/generate_yml.test.ts b/x-pack/plugins/observability_onboarding/server/routes/elastic_agent/generate_yml.test.ts new file mode 100644 index 0000000000000..7b50ba67f2796 --- /dev/null +++ b/x-pack/plugins/observability_onboarding/server/routes/elastic_agent/generate_yml.test.ts @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { dump } from 'js-yaml'; +import { generateYml } from './generate_yml'; + +const baseMockConfig = { + datasetName: 'my-dataset', + namespace: 'default', + logFilePaths: ['/my-service.logs'], + apiKey: 'elastic:changeme', + esHost: ['http://localhost:9200'], + logfileId: 'my-logs-id', +}; + +describe('generateYml', () => { + it('should return a basic yml configuration', () => { + const result = generateYml(baseMockConfig); + expect(result).toMatchSnapshot(); + }); + + it('should return a yml configuration with multiple logFilePaths', () => { + const mockConfig = { + ...baseMockConfig, + logFilePaths: ['/my-service-1.logs', '/my-service-2.logs'], + }; + + const result = generateYml(mockConfig); + expect(result).toMatchSnapshot(); + }); + + it('should return a yml configuration with service name', () => { + const mockConfig = { + ...baseMockConfig, + serviceName: 'my-service', + }; + + const result = generateYml(mockConfig); + expect(result).toMatchSnapshot(); + }); + + it('should return a yml configuration with customConfigurations', () => { + const mockConfig = { + ...baseMockConfig, + customConfigurations: dump({ + ['agent.retry']: { + enabled: true, + retriesCount: 3, + }, + ['agent.monitoring']: { + metrics: false, + }, + }), + }; + + const result = generateYml(mockConfig); + expect(result).toMatchSnapshot(); + }); +}); diff --git a/x-pack/test/observability_onboarding_api_integration/common/observability_onboarding_api_supertest.ts b/x-pack/test/observability_onboarding_api_integration/common/observability_onboarding_api_supertest.ts index f3fe42f96120f..c679c91e96525 100644 --- a/x-pack/test/observability_onboarding_api_integration/common/observability_onboarding_api_supertest.ts +++ b/x-pack/test/observability_onboarding_api_integration/common/observability_onboarding_api_supertest.ts @@ -92,6 +92,7 @@ export class ObservabilityOnboardingApiError extends Error { } export interface SupertestReturnType { + text: string; status: number; body: APIReturnType; } diff --git a/x-pack/test/observability_onboarding_api_integration/tests/custom_logs/progress/es_utils.ts b/x-pack/test/observability_onboarding_api_integration/tests/custom_logs/progress/es_utils.ts new file mode 100644 index 0000000000000..a82ccc230b124 --- /dev/null +++ b/x-pack/test/observability_onboarding_api_integration/tests/custom_logs/progress/es_utils.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export function createLogDoc({ + time, + logFilepath, + serviceName, + namespace, + datasetName, + message, +}: { + time: number; + logFilepath: string; + serviceName: string; + namespace: string; + datasetName: string; + message: string; +}) { + return { + input: { + type: 'log', + }, + '@timestamp': new Date(time).toISOString(), + log: { + file: { + path: logFilepath, + }, + }, + service: { + name: serviceName, + }, + data_stream: { + namespace, + type: 'logs', + dataset: datasetName, + }, + message, + event: { + dataset: datasetName, + }, + }; +} diff --git a/x-pack/test/observability_onboarding_api_integration/tests/custom_logs/progress/progress.spec.ts b/x-pack/test/observability_onboarding_api_integration/tests/custom_logs/progress/progress.spec.ts new file mode 100644 index 0000000000000..4c6c8d1240a49 --- /dev/null +++ b/x-pack/test/observability_onboarding_api_integration/tests/custom_logs/progress/progress.spec.ts @@ -0,0 +1,173 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { ObservabilityOnboardingApiClientKey } from '../../../common/config'; +import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { ObservabilityOnboardingApiError } from '../../../common/observability_onboarding_api_supertest'; +import { expectToReject } from '../../../common/utils/expect_to_reject'; +import { createLogDoc } from './es_utils'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const registry = getService('registry'); + const observabilityOnboardingApiClient = getService('observabilityOnboardingApiClient'); + const es = getService('es'); + + async function callApi({ + onboardingId, + user = 'logMonitoringUser', + }: { + onboardingId: string; + user?: ObservabilityOnboardingApiClientKey; + }) { + return await observabilityOnboardingApiClient[user]({ + endpoint: 'GET /internal/observability_onboarding/custom_logs/{onboardingId}/progress', + params: { + path: { + onboardingId, + }, + }, + }); + } + + registry.when('Get progress', { config: 'basic' }, () => { + let onboardingId: string; + const datasetName = 'api-tests'; + const namespace = 'default'; + + before(async () => { + const req = await observabilityOnboardingApiClient.logMonitoringUser({ + endpoint: 'POST /internal/observability_onboarding/custom_logs/save', + params: { + body: { + name: 'name', + state: { + datasetName, + namespace, + }, + }, + }, + }); + + onboardingId = req.body.onboardingId; + }); + + describe('when missing required privileges', () => { + it('fails with a 404 error', async () => { + const err = await expectToReject( + async () => + await callApi({ + onboardingId, + user: 'noAccessUser', + }) + ); + + expect(err.res.status).to.be(404); + expect(err.res.body.message).to.contain('onboarding session not found'); + }); + }); + + describe('when required privileges are set', () => { + describe("when onboardingId doesn't exists", () => { + it('fails with a 404 error', async () => { + const err = await expectToReject( + async () => + await callApi({ + onboardingId: 'my-onboarding-id', + }) + ); + + expect(err.res.status).to.be(404); + expect(err.res.body.message).to.contain('onboarding session not found'); + }); + }); + + describe('when onboardingId exists', () => { + describe('when ea-status is not complete', () => { + it('should skip log verification and return log-ingest as incomplete', async () => { + const request = await callApi({ + onboardingId, + }); + + expect(request.status).to.be(200); + + expect(request.body.progress['logs-ingest']).to.be('incomplete'); + }); + }); + + describe('when ea-status is complete', () => { + describe('should not skip logs verification', () => { + before(async () => { + await observabilityOnboardingApiClient.logMonitoringUser({ + endpoint: 'POST /internal/observability_onboarding/custom_logs/{id}/step/{name}', + params: { + path: { + id: onboardingId, + name: 'ea-status', + }, + body: { + status: 'complete', + }, + }, + }); + }); + + describe('when no logs have been ingested', () => { + it('should return log-ingest as loading', async () => { + const request = await callApi({ + onboardingId, + }); + + expect(request.status).to.be(200); + + expect(request.body.progress['logs-ingest']).to.be('loading'); + }); + }); + + describe('when logs have been ingested', () => { + before(async () => { + await es.indices.createDataStream({ + name: `logs-${datasetName}-${namespace}`, + }); + + const doc = createLogDoc({ + time: new Date('06/28/2023').getTime(), + logFilepath: '/my-service.log', + serviceName: 'my-service', + namespace, + datasetName, + message: 'This is a log message', + }); + + await es.bulk({ + body: [{ create: { _index: `logs-${datasetName}-${namespace}` } }, doc], + refresh: 'wait_for', + }); + }); + + it('should return log-ingest as complete', async () => { + const request = await callApi({ + onboardingId, + }); + + expect(request.status).to.be(200); + + expect(request.body.progress['logs-ingest']).to.be('complete'); + }); + + after(async () => { + await es.indices.deleteDataStream({ + name: `logs-${datasetName}-${namespace}`, + }); + }); + }); + }); + }); + }); + }); + }); +} diff --git a/x-pack/test/observability_onboarding_api_integration/tests/custom_logs/update_step_progress.spec.ts b/x-pack/test/observability_onboarding_api_integration/tests/custom_logs/update_step_progress.spec.ts new file mode 100644 index 0000000000000..068eef13cb6b7 --- /dev/null +++ b/x-pack/test/observability_onboarding_api_integration/tests/custom_logs/update_step_progress.spec.ts @@ -0,0 +1,99 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { OBSERVABILITY_ONBOARDING_STATE_SAVED_OBJECT_TYPE } from '@kbn/observability-onboarding-plugin/server/saved_objects/observability_onboarding_status'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; +import { ObservabilityOnboardingApiError } from '../../common/observability_onboarding_api_supertest'; +import { expectToReject } from '../../common/utils/expect_to_reject'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const registry = getService('registry'); + const kibanaServer = getService('kibanaServer'); + const observabilityOnboardingApiClient = getService('observabilityOnboardingApiClient'); + + async function callApi({ id, name, status }: { id: string; name: string; status: string }) { + return await observabilityOnboardingApiClient.logMonitoringUser({ + endpoint: 'POST /internal/observability_onboarding/custom_logs/{id}/step/{name}', + params: { + path: { + id, + name, + }, + body: { + status, + }, + }, + }); + } + + registry.when('Update step progress', { config: 'basic' }, () => { + let onboardingId: string; + + before(async () => { + const req = await observabilityOnboardingApiClient.logMonitoringUser({ + endpoint: 'POST /internal/observability_onboarding/custom_logs/save', + params: { + body: { + name: 'name', + state: {}, + }, + }, + }); + + onboardingId = req.body.onboardingId; + }); + + describe("when onboardingId doesn't exists", () => { + it('fails with a 404 error', async () => { + const err = await expectToReject( + async () => + await callApi({ + id: 'my-onboarding-id', + name: 'ea-download', + status: 'complete', + }) + ); + + expect(err.res.status).to.be(404); + expect(err.res.body.message).to.contain('onboarding session not found'); + }); + }); + + describe('when onboardingId exists', () => { + const step = { + name: 'ea-download', + status: 'complete', + }; + + before(async () => { + const savedState = await kibanaServer.savedObjects.get({ + type: OBSERVABILITY_ONBOARDING_STATE_SAVED_OBJECT_TYPE, + id: onboardingId, + }); + + expect(savedState.attributes.progress?.[step.name]).not.ok(); + }); + + it('updates step status', async () => { + const request = await callApi({ + id: onboardingId, + ...step, + }); + + expect(request.status).to.be(200); + + const savedState = await kibanaServer.savedObjects.get({ + type: OBSERVABILITY_ONBOARDING_STATE_SAVED_OBJECT_TYPE, + id: onboardingId, + }); + + expect(savedState.attributes.progress?.[step.name]).to.be(step.status); + }); + }); + }); +} diff --git a/x-pack/test/observability_onboarding_api_integration/tests/elastic_agent/config.spec.ts b/x-pack/test/observability_onboarding_api_integration/tests/elastic_agent/config.spec.ts new file mode 100644 index 0000000000000..0deffa986676a --- /dev/null +++ b/x-pack/test/observability_onboarding_api_integration/tests/elastic_agent/config.spec.ts @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { load } from 'js-yaml'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const registry = getService('registry'); + const observabilityOnboardingApiClient = getService('observabilityOnboardingApiClient'); + + async function callApi({ onboardingId }: { onboardingId: string }) { + return await observabilityOnboardingApiClient.logMonitoringUser({ + endpoint: 'GET /internal/observability_onboarding/elastic_agent/config', + params: { + query: { + onboardingId, + }, + }, + }); + } + + registry.when('Generate elastic_agent yml', { config: 'basic' }, () => { + let onboardingId: string; + const datasetName = 'api-tests'; + const namespace = 'default'; + const logFilepath = '/my-logs.log'; + const serviceName = 'my-service'; + + before(async () => { + const req = await observabilityOnboardingApiClient.logMonitoringUser({ + endpoint: 'POST /internal/observability_onboarding/custom_logs/save', + params: { + body: { + name: 'name', + state: { + datasetName, + namespace, + logFilePaths: [logFilepath], + serviceName, + }, + }, + }, + }); + + onboardingId = req.body.onboardingId; + }); + + describe("when onboardingId doesn't exists", () => { + it('should return input properties empty', async () => { + const req = await callApi({ + onboardingId: 'my-onboarding-id', + }); + + expect(req.status).to.be(200); + + const ymlConfig = load(req.text); + expect(ymlConfig.inputs[0].data_stream.namespace).to.be(''); + expect(ymlConfig.inputs[0].streams[0].data_stream.dataset).to.be(''); + expect(ymlConfig.inputs[0].streams[0].paths).to.be.empty(); + }); + }); + + describe('when onboardingId exists', () => { + it('should return input properties configured', async () => { + const req = await callApi({ + onboardingId, + }); + + expect(req.status).to.be(200); + + const ymlConfig = load(req.text); + expect(ymlConfig.inputs[0].data_stream.namespace).to.be(namespace); + expect(ymlConfig.inputs[0].streams[0].data_stream.dataset).to.be(datasetName); + expect(ymlConfig.inputs[0].streams[0].paths).to.be.eql([logFilepath]); + }); + }); + }); +} From 95a2d32c7a9c4da614f4dd69d7a3c61a829d1312 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 29 Jun 2023 20:46:25 +0100 Subject: [PATCH 33/41] skip flaky suite (#160178) --- test/functional/apps/management/_files.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/functional/apps/management/_files.ts b/test/functional/apps/management/_files.ts index deebdb18f374b..54b22028275d7 100644 --- a/test/functional/apps/management/_files.ts +++ b/test/functional/apps/management/_files.ts @@ -13,7 +13,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'filesManagement']); const testSubjects = getService('testSubjects'); - describe('Files management', () => { + // FLAKY: https://github.com/elastic/kibana/issues/160178 + describe.skip('Files management', () => { before(async () => { await PageObjects.filesManagement.navigateTo(); }); From 72d30c8ee26baef1b0cfb0c7f104801b67da9a0e Mon Sep 17 00:00:00 2001 From: "Quynh Nguyen (Quinn)" <43350163+qn895@users.noreply.github.com> Date: Thu, 29 Jun 2023 15:15:04 -0500 Subject: [PATCH 34/41] [ML] Fix Transform flaky DefinePivotForm tests (#160659) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../components/step_define/step_define_form.test.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.test.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.test.tsx index ea19ddad91825..6d5d6d0ea6fc9 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.test.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/step_define_form.test.tsx @@ -63,8 +63,7 @@ const createMockStorage = () => ({ clear: jest.fn(), }); -// FLAKY: https://github.com/elastic/kibana/issues/150777 -describe.skip('Transform: ', () => { +describe('Transform: ', () => { test('Minimal initialization', async () => { // Arrange const mlSharedImports = await getMlSharedImports(); @@ -84,12 +83,14 @@ describe.skip('Transform: ', () => { storage: createMockStorage(), }; + const mockOnChange = jest.fn(); + const { getByText } = render( - + @@ -103,8 +104,9 @@ describe.skip('Transform: ', () => { await waitFor(() => { expect(getByText('Data view')).toBeInTheDocument(); expect(getByText(searchItems.dataView.getIndexPattern())).toBeInTheDocument(); + expect(mockOnChange).toBeCalled(); }); - }); + }, 10000); }); describe('Transform: isAggNameConflict()', () => { From 70355afe7dbe44892796cbec2e08afd025a0f6b2 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 29 Jun 2023 21:43:01 +0100 Subject: [PATCH 35/41] chore(NA): update versions after v8.8.3 bump (#160916) This PR is a simple update of our versions file after the recent bumps. --- versions.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/versions.json b/versions.json index f04f94012f08c..8433b16f6b581 100644 --- a/versions.json +++ b/versions.json @@ -13,12 +13,6 @@ "currentMajor": true, "previousMinor": true }, - { - "version": "8.8.2", - "branch": "8.8", - "currentMajor": true, - "previousMinor": true - }, { "version": "7.17.11", "branch": "7.17", From a68a28a9b37e52f5ea805510dbf3aad5cdf1e8d5 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 29 Jun 2023 21:59:23 +0100 Subject: [PATCH 36/41] chore(NA): update versions after v7.17.12 bump (#160917) This PR is a simple update of our versions file after the recent bumps. --- versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.json b/versions.json index 8433b16f6b581..afd1d62694e59 100644 --- a/versions.json +++ b/versions.json @@ -14,7 +14,7 @@ "previousMinor": true }, { - "version": "7.17.11", + "version": "7.17.12", "branch": "7.17", "previousMajor": true } From 50049aca8e13695d374156853682430bdadc63ec Mon Sep 17 00:00:00 2001 From: Ying Mao Date: Thu, 29 Jun 2023 17:11:43 -0400 Subject: [PATCH 37/41] [Response Ops][Alerting] Updating `AlertsClient` to provide feature parity with rule registry lifecycle executor (#160466) Resolves https://github.com/elastic/kibana/issues/160173 ## Summary The rule registry lifecycle executor automatically sets the following fields in alert docs: - `event.action` - `open`, `active` or `close` depending on what type of alert - `event.kind` - always `signal` - `tags` - merges rule tags with rule executor reported tags - `kibana.version` - `kibana.alert.workflow_status` - set to `open` - `kibana.alert.time_range` In addition, the rule registry lifecycle executor provides some helper functions for the rule executors to get the alert UUID, the alert start time (if it exists) and the alert document for recovered alerts (used to set recovered context variables). This PR augments the framework `AlertsClient` to set the same fields and to provide the same functionality to the rule executors. When an alert is reported via the `AlertsClient`, the UUID (either existing or newly generated) and the start time (for ongoing alerts) is returned back to the rule executors. When an executor requests the recovered alerts in order to set context information, the existing alert document is returned. ## To Verify Check out [this commit](https://github.com/elastic/kibana/pull/160466/commits/dc5bebab1b86c7065fb9ef66b8d01da5491ae5d7) which removes the metric threshold rule from the rule registry lifecycle executor and onboards it to use the framework alerts client. Create a metric threshold rule that creates active alerts and recovers alerts. Inspect the alerts documents to make sure all the fields mentioned above exist. Compare these documents with alerts created using the lifecycle executor. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../src/field_maps/alert_field_map.ts | 18 + .../src/field_maps/legacy_alert_field_map.ts | 18 - .../src/schemas/generated/alert_schema.ts | 5 + .../schemas/generated/legacy_alert_schema.ts | 5 - .../field_maps/mapping_from_field_map.test.ts | 15 +- .../alerting/server/alert/alert.test.ts | 18 + x-pack/plugins/alerting/server/alert/alert.ts | 5 + .../alerts_client/alerts_client.test.ts | 707 ++++++++++++------ .../server/alerts_client/alerts_client.ts | 21 +- .../alerts_client/lib/build_new_alert.test.ts | 154 ++++ .../alerts_client/lib/build_new_alert.ts | 30 +- .../lib/build_ongoing_alert.test.ts | 149 ++++ .../alerts_client/lib/build_ongoing_alert.ts | 22 +- .../lib/build_recovered_alert.test.ts | 154 ++++ .../lib/build_recovered_alert.ts | 30 +- .../lib/strip_framework_fields.test.ts | 11 +- .../lib/strip_framework_fields.ts | 10 +- .../alerting/server/alerts_client/types.ts | 22 +- .../alerts_service/alerts_service.test.ts | 5 + .../server/alerts_service/alerts_service.ts | 1 + .../server/task_runner/task_runner.test.ts | 88 ++- .../task_runner_alerts_client.test.ts | 10 + .../task_runner/task_runner_cancel.test.ts | 10 +- .../alert_instance_factory_stub.ts | 3 + .../rule_preview/api/preview_rules/route.ts | 1 + .../rule_types/es_query/rule_type.test.ts | 3 +- .../index_threshold/rule_type.test.ts | 12 +- .../plugins/alerts/server/alert_types.ts | 2 +- .../group4/alerts_as_data/alerts_as_data.ts | 70 ++ 29 files changed, 1278 insertions(+), 321 deletions(-) diff --git a/packages/kbn-alerts-as-data-utils/src/field_maps/alert_field_map.ts b/packages/kbn-alerts-as-data-utils/src/field_maps/alert_field_map.ts index 1b78ce21021fc..f22e902bbbeaa 100644 --- a/packages/kbn-alerts-as-data-utils/src/field_maps/alert_field_map.ts +++ b/packages/kbn-alerts-as-data-utils/src/field_maps/alert_field_map.ts @@ -37,6 +37,9 @@ import { SPACE_IDS, TIMESTAMP, VERSION, + EVENT_ACTION, + EVENT_KIND, + TAGS, } from '@kbn/rule-data-utils'; export const alertFieldMap = { @@ -179,11 +182,26 @@ export const alertFieldMap = { array: true, required: false, }, + [EVENT_ACTION]: { + type: 'keyword', + array: false, + required: false, + }, + [EVENT_KIND]: { + type: 'keyword', + array: false, + required: false, + }, [SPACE_IDS]: { type: 'keyword', array: true, required: true, }, + [TAGS]: { + type: 'keyword', + array: true, + required: false, + }, [TIMESTAMP]: { type: 'date', required: true, diff --git a/packages/kbn-alerts-as-data-utils/src/field_maps/legacy_alert_field_map.ts b/packages/kbn-alerts-as-data-utils/src/field_maps/legacy_alert_field_map.ts index 6faa403188fdb..05749816c823b 100644 --- a/packages/kbn-alerts-as-data-utils/src/field_maps/legacy_alert_field_map.ts +++ b/packages/kbn-alerts-as-data-utils/src/field_maps/legacy_alert_field_map.ts @@ -35,9 +35,6 @@ import { ALERT_WORKFLOW_REASON, ALERT_WORKFLOW_USER, ECS_VERSION, - EVENT_ACTION, - EVENT_KIND, - TAGS, } from '@kbn/rule-data-utils'; export const legacyAlertFieldMap = { @@ -182,21 +179,6 @@ export const legacyAlertFieldMap = { array: false, required: false, }, - [EVENT_ACTION]: { - type: 'keyword', - array: false, - required: false, - }, - [EVENT_KIND]: { - type: 'keyword', - array: false, - required: false, - }, - [TAGS]: { - type: 'keyword', - array: true, - required: false, - }, } as const; export type LegacyAlertFieldMap = typeof legacyAlertFieldMap; diff --git a/packages/kbn-alerts-as-data-utils/src/schemas/generated/alert_schema.ts b/packages/kbn-alerts-as-data-utils/src/schemas/generated/alert_schema.ts index 112d41c243386..4978d8b1fa1e4 100644 --- a/packages/kbn-alerts-as-data-utils/src/schemas/generated/alert_schema.ts +++ b/packages/kbn-alerts-as-data-utils/src/schemas/generated/alert_schema.ts @@ -89,6 +89,10 @@ const AlertRequired = rt.type({ }), }); const AlertOptional = rt.partial({ + event: rt.partial({ + action: schemaString, + kind: schemaString, + }), kibana: rt.partial({ alert: rt.partial({ action_group: schemaString, @@ -117,6 +121,7 @@ const AlertOptional = rt.partial({ }), version: schemaString, }), + tags: schemaStringArray, }); // prettier-ignore diff --git a/packages/kbn-alerts-as-data-utils/src/schemas/generated/legacy_alert_schema.ts b/packages/kbn-alerts-as-data-utils/src/schemas/generated/legacy_alert_schema.ts index 2073541391ecc..107cdd65464bc 100644 --- a/packages/kbn-alerts-as-data-utils/src/schemas/generated/legacy_alert_schema.ts +++ b/packages/kbn-alerts-as-data-utils/src/schemas/generated/legacy_alert_schema.ts @@ -72,10 +72,6 @@ const LegacyAlertOptional = rt.partial({ ecs: rt.partial({ version: schemaString, }), - event: rt.partial({ - action: schemaString, - kind: schemaString, - }), kibana: rt.partial({ alert: rt.partial({ risk_score: schemaNumber, @@ -113,7 +109,6 @@ const LegacyAlertOptional = rt.partial({ workflow_user: schemaString, }), }), - tags: schemaStringArray, }); // prettier-ignore diff --git a/x-pack/plugins/alerting/common/alert_schema/field_maps/mapping_from_field_map.test.ts b/x-pack/plugins/alerting/common/alert_schema/field_maps/mapping_from_field_map.test.ts index 879d1f8212cb2..aea967a056028 100644 --- a/x-pack/plugins/alerting/common/alert_schema/field_maps/mapping_from_field_map.test.ts +++ b/x-pack/plugins/alerting/common/alert_schema/field_maps/mapping_from_field_map.test.ts @@ -190,6 +190,16 @@ describe('mappingFromFieldMap', () => { '@timestamp': { type: 'date', }, + event: { + properties: { + action: { + type: 'keyword', + }, + kind: { + type: 'keyword', + }, + }, + }, kibana: { properties: { alert: { @@ -305,6 +315,9 @@ describe('mappingFromFieldMap', () => { }, }, }, + tags: { + type: 'keyword', + }, }, }); expect(mappingFromFieldMap(legacyAlertFieldMap)).toEqual({ @@ -355,8 +368,6 @@ describe('mappingFromFieldMap', () => { }, }, ecs: { properties: { version: { type: 'keyword' } } }, - event: { properties: { action: { type: 'keyword' }, kind: { type: 'keyword' } } }, - tags: { type: 'keyword' }, }, }); }); diff --git a/x-pack/plugins/alerting/server/alert/alert.test.ts b/x-pack/plugins/alerting/server/alert/alert.test.ts index 46269d2e2843e..95894fe440107 100644 --- a/x-pack/plugins/alerting/server/alert/alert.test.ts +++ b/x-pack/plugins/alerting/server/alert/alert.test.ts @@ -250,6 +250,24 @@ describe('getUUID()', () => { }); }); +describe('getStart()', () => { + test('returns null for new alert', () => { + const alert = new Alert('1'); + expect(alert.getStart()).toBeNull(); + }); + + test('returns start time if set in state', () => { + const uuid = 'previous-uuid'; + const meta = { uuid }; + const state = { foo: true, start: '2023-03-28T12:27:28.159Z', duration: '0' }; + const alert = new Alert('1', { + state, + meta, + }); + expect(alert.getStart()).toEqual('2023-03-28T12:27:28.159Z'); + }); +}); + describe('scheduleActions()', () => { test('makes hasScheduledActions() return true', () => { const alert = new Alert('1', { diff --git a/x-pack/plugins/alerting/server/alert/alert.ts b/x-pack/plugins/alerting/server/alert/alert.ts index 541a76216e367..4e08a314bb3a4 100644 --- a/x-pack/plugins/alerting/server/alert/alert.ts +++ b/x-pack/plugins/alerting/server/alert/alert.ts @@ -39,6 +39,7 @@ export type PublicAlert< | 'getContext' | 'getState' | 'getUuid' + | 'getStart' | 'hasContext' | 'replaceState' | 'scheduleActions' @@ -76,6 +77,10 @@ export class Alert< return this.meta.uuid!; } + getStart(): string | null { + return this.state.start ? `${this.state.start}` : null; + } + hasScheduledActions() { return this.scheduledExecutionOptions !== undefined; } diff --git a/x-pack/plugins/alerting/server/alerts_client/alerts_client.test.ts b/x-pack/plugins/alerting/server/alerts_client/alerts_client.test.ts index 1a2bfe87045a4..4cc568c3be71d 100644 --- a/x-pack/plugins/alerting/server/alerts_client/alerts_client.test.ts +++ b/x-pack/plugins/alerting/server/alerts_client/alerts_client.test.ts @@ -9,8 +9,8 @@ import { UntypedNormalizedRuleType } from '../rule_type_registry'; import { DEFAULT_FLAPPING_SETTINGS, RecoveredActionGroup, RuleNotifyWhen } from '../types'; import * as LegacyAlertsClientModule from './legacy_alerts_client'; import { Alert } from '../alert/alert'; -import { AlertsClient } from './alerts_client'; -import { AlertRuleData } from './types'; +import { AlertsClient, AlertsClientParams } from './alerts_client'; +import { AlertRuleData, ProcessAndLogAlertsOpts } from './types'; import { legacyAlertsClientMock } from './legacy_alerts_client.mock'; import { keys, range } from 'lodash'; import { alertingEventLoggerMock } from '../lib/alerting_event_logger/alerting_event_logger.mock'; @@ -36,6 +36,7 @@ const ruleType: jest.Mocked = { cancelAlertsOnRuleTimeout: true, ruleTaskTimeout: '5m', autoRecoverAlerts: true, + doesSetRecoveryContext: true, validate: { params: { validate: (params) => params }, }, @@ -48,10 +49,18 @@ const ruleType: jest.Mocked = { const mockLegacyAlertsClient = legacyAlertsClientMock.create(); const mockReplaceState = jest.fn(); -const mockScheduleActions = jest - .fn() - .mockImplementation(() => ({ replaceState: mockReplaceState })); -const mockCreate = jest.fn().mockImplementation(() => ({ scheduleActions: mockScheduleActions })); +const mockGetUuid = jest.fn().mockReturnValue('uuidabc'); +const mockGetStart = jest.fn().mockReturnValue(date); +const mockScheduleActions = jest.fn().mockImplementation(() => ({ + replaceState: mockReplaceState, + getUuid: mockGetUuid, + getStart: mockGetStart, +})); +const mockCreate = jest.fn().mockImplementation(() => ({ + scheduleActions: mockScheduleActions, + getUuid: mockGetUuid, + getStart: mockGetStart, +})); const mockSetContext = jest.fn(); const alertRuleData: AlertRuleData = { consumer: 'bar', @@ -67,6 +76,8 @@ const alertRuleData: AlertRuleData = { }; describe('Alerts Client', () => { + let alertsClientParams: AlertsClientParams; + let processAndLogAlertsOpts: ProcessAndLogAlertsOpts; beforeAll(() => { jest.useFakeTimers(); jest.setSystemTime(new Date(date)); @@ -75,6 +86,22 @@ describe('Alerts Client', () => { beforeEach(() => { jest.clearAllMocks(); logger = loggingSystemMock.createLogger(); + alertsClientParams = { + logger, + elasticsearchClientPromise: Promise.resolve(clusterClient), + ruleType, + namespace: 'default', + rule: alertRuleData, + kibanaVersion: '8.9.0', + }; + processAndLogAlertsOpts = { + eventLogger: alertingEventLogger, + ruleRunMetricsStore, + shouldLogAlerts: false, + flappingSettings: DEFAULT_FLAPPING_SETTINGS, + notifyWhen: RuleNotifyWhen.CHANGE, + maintenanceWindowIds: [], + }; }); afterAll(() => { @@ -91,13 +118,7 @@ describe('Alerts Client', () => { .spyOn(LegacyAlertsClientModule, 'LegacyAlertsClient') .mockImplementation(() => mockLegacyAlertsClient); - const alertsClient = new AlertsClient({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient(alertsClientParams); const opts = { maxAlerts, @@ -152,13 +173,7 @@ describe('Alerts Client', () => { .spyOn(LegacyAlertsClientModule, 'LegacyAlertsClient') .mockImplementation(() => mockLegacyAlertsClient); - const alertsClient = new AlertsClient({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient(alertsClientParams); const opts = { maxAlerts, @@ -209,13 +224,7 @@ describe('Alerts Client', () => { .spyOn(LegacyAlertsClientModule, 'LegacyAlertsClient') .mockImplementation(() => mockLegacyAlertsClient); - const alertsClient = new AlertsClient({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient(alertsClientParams); const opts = { maxAlerts, @@ -254,13 +263,7 @@ describe('Alerts Client', () => { .spyOn(LegacyAlertsClientModule, 'LegacyAlertsClient') .mockImplementation(() => mockLegacyAlertsClient); - const alertsClient = new AlertsClient({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient(alertsClientParams); const opts = { maxAlerts, @@ -297,13 +300,7 @@ describe('Alerts Client', () => { describe('persistAlerts()', () => { test('should index new alerts', async () => { - const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -318,14 +315,7 @@ describe('Alerts Client', () => { alertExecutorService.create('1').scheduleActions('default'); alertExecutorService.create('2').scheduleActions('default'); - alertsClient.processAndLogAlerts({ - eventLogger: alertingEventLogger, - ruleRunMetricsStore, - shouldLogAlerts: false, - flappingSettings: DEFAULT_FLAPPING_SETTINGS, - notifyWhen: RuleNotifyWhen.CHANGE, - maintenanceWindowIds: [], - }); + alertsClient.processAndLogAlerts(processAndLogAlertsOpts); await alertsClient.persistAlerts(); @@ -342,6 +332,10 @@ describe('Alerts Client', () => { // new alert doc { '@timestamp': date, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -372,15 +366,25 @@ describe('Alerts Client', () => { }, start: date, status: 'active', + time_range: { + gte: date, + }, uuid: uuid1, + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }, { index: { _id: uuid2 } }, // new alert doc { '@timestamp': date, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -411,10 +415,16 @@ describe('Alerts Client', () => { }, start: date, status: 'active', + time_range: { + gte: date, + }, uuid: uuid2, + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }, ], }); @@ -436,6 +446,10 @@ describe('Alerts Client', () => { _index: '.internal.alerts-test.alerts-default-000001', _source: { '@timestamp': '2023-03-28T12:27:28.159Z', + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -465,22 +479,22 @@ describe('Alerts Client', () => { }, start: '2023-03-28T12:27:28.159Z', status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abc', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.8.0', }, + tags: ['rule-', '-tags'], }, }, ], }, }); - const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -506,14 +520,7 @@ describe('Alerts Client', () => { alertExecutorService.create('1').scheduleActions('default'); alertExecutorService.create('2').scheduleActions('default'); - alertsClient.processAndLogAlerts({ - eventLogger: alertingEventLogger, - ruleRunMetricsStore, - shouldLogAlerts: false, - flappingSettings: DEFAULT_FLAPPING_SETTINGS, - notifyWhen: RuleNotifyWhen.CHANGE, - maintenanceWindowIds: [], - }); + alertsClient.processAndLogAlerts(processAndLogAlertsOpts); await alertsClient.persistAlerts(); @@ -535,6 +542,10 @@ describe('Alerts Client', () => { // ongoing alert doc { '@timestamp': date, + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -565,15 +576,25 @@ describe('Alerts Client', () => { }, start: '2023-03-28T12:27:28.159Z', status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abc', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }, { index: { _id: uuid2 } }, // new alert doc { '@timestamp': date, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -604,10 +625,16 @@ describe('Alerts Client', () => { }, start: date, status: 'active', + time_range: { + gte: date, + }, uuid: uuid2, + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }, ], }); @@ -629,6 +656,10 @@ describe('Alerts Client', () => { _index: '.internal.alerts-test.alerts-default-000001', _source: { '@timestamp': '2023-03-28T12:27:28.159Z', + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -658,10 +689,16 @@ describe('Alerts Client', () => { }, start: '2023-03-28T12:27:28.159Z', status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abc', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.8.0', }, + tags: ['rule-', '-tags'], }, }, { @@ -669,6 +706,10 @@ describe('Alerts Client', () => { _index: '.internal.alerts-test.alerts-default-000002', _source: { '@timestamp': '2023-03-28T12:27:28.159Z', + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -698,22 +739,22 @@ describe('Alerts Client', () => { }, start: '2023-03-28T02:27:28.159Z', status: 'active', + time_range: { + gte: '2023-03-28T02:27:28.159Z', + }, uuid: 'def', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.8.0', }, + tags: ['rule-', '-tags'], }, }, ], }, }); - const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -749,14 +790,7 @@ describe('Alerts Client', () => { alertExecutorService.create('2').scheduleActions('default'); alertExecutorService.create('3').scheduleActions('default'); - alertsClient.processAndLogAlerts({ - eventLogger: alertingEventLogger, - ruleRunMetricsStore, - shouldLogAlerts: false, - flappingSettings: DEFAULT_FLAPPING_SETTINGS, - notifyWhen: RuleNotifyWhen.CHANGE, - maintenanceWindowIds: [], - }); + alertsClient.processAndLogAlerts(processAndLogAlertsOpts); await alertsClient.persistAlerts(); @@ -778,6 +812,10 @@ describe('Alerts Client', () => { // ongoing alert doc { '@timestamp': date, + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -808,15 +846,25 @@ describe('Alerts Client', () => { }, start: '2023-03-28T02:27:28.159Z', status: 'active', + time_range: { + gte: '2023-03-28T02:27:28.159Z', + }, uuid: 'def', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }, { index: { _id: uuid3 } }, // new alert doc { '@timestamp': date, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -847,10 +895,16 @@ describe('Alerts Client', () => { }, start: date, status: 'active', + time_range: { + gte: date, + }, uuid: uuid3, + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }, { index: { @@ -862,6 +916,10 @@ describe('Alerts Client', () => { // recovered alert doc { '@timestamp': date, + event: { + action: 'close', + kind: 'signal', + }, kibana: { alert: { action_group: 'recovered', @@ -893,23 +951,24 @@ describe('Alerts Client', () => { }, start: '2023-03-28T12:27:28.159Z', status: 'recovered', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + lte: date, + }, uuid: 'abc', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }, ], }); }); test('should not try to index if no alerts', async () => { - const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -921,14 +980,7 @@ describe('Alerts Client', () => { // Report no alerts - alertsClient.processAndLogAlerts({ - eventLogger: alertingEventLogger, - ruleRunMetricsStore, - shouldLogAlerts: false, - flappingSettings: DEFAULT_FLAPPING_SETTINGS, - notifyWhen: RuleNotifyWhen.CHANGE, - maintenanceWindowIds: [], - }); + alertsClient.processAndLogAlerts(processAndLogAlertsOpts); await alertsClient.persistAlerts(); @@ -968,13 +1020,7 @@ describe('Alerts Client', () => { }, ], }); - const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -989,14 +1035,7 @@ describe('Alerts Client', () => { alertExecutorService.create('1').scheduleActions('default'); alertExecutorService.create('2').scheduleActions('default'); - alertsClient.processAndLogAlerts({ - eventLogger: alertingEventLogger, - ruleRunMetricsStore, - shouldLogAlerts: false, - flappingSettings: DEFAULT_FLAPPING_SETTINGS, - notifyWhen: RuleNotifyWhen.CHANGE, - maintenanceWindowIds: [], - }); + alertsClient.processAndLogAlerts(processAndLogAlertsOpts); await alertsClient.persistAlerts(); @@ -1010,13 +1049,7 @@ describe('Alerts Client', () => { clusterClient.bulk.mockImplementation(() => { throw new Error('fail'); }); - const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -1031,14 +1064,7 @@ describe('Alerts Client', () => { alertExecutorService.create('1').scheduleActions('default'); alertExecutorService.create('2').scheduleActions('default'); - alertsClient.processAndLogAlerts({ - eventLogger: alertingEventLogger, - ruleRunMetricsStore, - shouldLogAlerts: false, - flappingSettings: DEFAULT_FLAPPING_SETTINGS, - notifyWhen: RuleNotifyWhen.CHANGE, - maintenanceWindowIds: [], - }); + alertsClient.processAndLogAlerts(processAndLogAlertsOpts); await alertsClient.persistAlerts(); @@ -1051,17 +1077,24 @@ describe('Alerts Client', () => { describe('report()', () => { test('should create legacy alert with id, action group', async () => { - mockLegacyAlertsClient.factory.mockImplementation(() => ({ create: mockCreate })); + const mockGetUuidCurrent = jest + .fn() + .mockReturnValueOnce('uuid1') + .mockReturnValueOnce('uuid2'); + const mockGetStartCurrent = jest.fn().mockReturnValue(null); + const mockScheduleActionsCurrent = jest.fn().mockImplementation(() => ({ + replaceState: mockReplaceState, + getUuid: mockGetUuidCurrent, + getStart: mockGetStartCurrent, + })); + const mockCreateCurrent = jest.fn().mockImplementation(() => ({ + scheduleActions: mockScheduleActionsCurrent, + })); + mockLegacyAlertsClient.factory.mockImplementation(() => ({ create: mockCreateCurrent })); const spy = jest .spyOn(LegacyAlertsClientModule, 'LegacyAlertsClient') .mockImplementation(() => mockLegacyAlertsClient); - const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -1072,18 +1105,33 @@ describe('Alerts Client', () => { }); // Report 2 new alerts - alertsClient.report({ id: '1', actionGroup: 'default', state: {}, context: {} }); - alertsClient.report({ id: '2', actionGroup: 'default', state: {}, context: {} }); + const { uuid: uuid1, start: start1 } = alertsClient.report({ + id: '1', + actionGroup: 'default', + state: {}, + context: {}, + }); + const { uuid: uuid2, start: start2 } = alertsClient.report({ + id: '2', + actionGroup: 'default', + state: {}, + context: {}, + }); - expect(mockCreate).toHaveBeenCalledTimes(2); - expect(mockCreate).toHaveBeenNthCalledWith(1, '1'); - expect(mockCreate).toHaveBeenNthCalledWith(2, '2'); - expect(mockScheduleActions).toHaveBeenCalledTimes(2); - expect(mockScheduleActions).toHaveBeenNthCalledWith(1, 'default', {}); - expect(mockScheduleActions).toHaveBeenNthCalledWith(2, 'default', {}); + expect(mockCreateCurrent).toHaveBeenCalledTimes(2); + expect(mockCreateCurrent).toHaveBeenNthCalledWith(1, '1'); + expect(mockCreateCurrent).toHaveBeenNthCalledWith(2, '2'); + expect(mockScheduleActionsCurrent).toHaveBeenCalledTimes(2); + expect(mockScheduleActionsCurrent).toHaveBeenNthCalledWith(1, 'default', {}); + expect(mockScheduleActionsCurrent).toHaveBeenNthCalledWith(2, 'default', {}); expect(mockReplaceState).not.toHaveBeenCalled(); spy.mockRestore(); + + expect(uuid1).toEqual('uuid1'); + expect(uuid2).toEqual('uuid2'); + expect(start1).toBeNull(); + expect(start2).toBeNull(); }); test('should set context if defined', async () => { @@ -1091,13 +1139,9 @@ describe('Alerts Client', () => { const spy = jest .spyOn(LegacyAlertsClientModule, 'LegacyAlertsClient') .mockImplementation(() => mockLegacyAlertsClient); - const alertsClient = new AlertsClient<{}, {}, { foo?: string }, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, { foo?: string }, 'default', 'recovered'>( + alertsClientParams + ); await alertsClient.initializeExecution({ maxAlerts, @@ -1132,13 +1176,9 @@ describe('Alerts Client', () => { const spy = jest .spyOn(LegacyAlertsClientModule, 'LegacyAlertsClient') .mockImplementation(() => mockLegacyAlertsClient); - const alertsClient = new AlertsClient<{}, { count: number }, {}, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, { count: number }, {}, 'default', 'recovered'>( + alertsClientParams + ); await alertsClient.initializeExecution({ maxAlerts, @@ -1171,13 +1211,7 @@ describe('Alerts Client', () => { {}, 'default', 'recovered' - >({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + >(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -1203,14 +1237,7 @@ describe('Alerts Client', () => { payload: { count: 2, url: `https://url2` }, }); - alertsClient.processAndLogAlerts({ - eventLogger: alertingEventLogger, - ruleRunMetricsStore, - shouldLogAlerts: false, - flappingSettings: DEFAULT_FLAPPING_SETTINGS, - notifyWhen: RuleNotifyWhen.CHANGE, - maintenanceWindowIds: [], - }); + alertsClient.processAndLogAlerts(processAndLogAlertsOpts); await alertsClient.persistAlerts(); @@ -1228,6 +1255,10 @@ describe('Alerts Client', () => { { '@timestamp': date, count: 1, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -1258,10 +1289,16 @@ describe('Alerts Client', () => { }, start: date, status: 'active', + time_range: { + gte: date, + }, uuid: uuid1, + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], url: `https://url1`, }, { index: { _id: uuid2 } }, @@ -1269,6 +1306,10 @@ describe('Alerts Client', () => { { '@timestamp': date, count: 2, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -1299,10 +1340,16 @@ describe('Alerts Client', () => { }, start: date, status: 'active', + time_range: { + gte: date, + }, uuid: uuid2, + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], url: `https://url2`, }, ], @@ -1323,13 +1370,7 @@ describe('Alerts Client', () => { const spy = jest .spyOn(LegacyAlertsClientModule, 'LegacyAlertsClient') .mockImplementation(() => mockLegacyAlertsClient); - const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -1375,13 +1416,9 @@ describe('Alerts Client', () => { const spy = jest .spyOn(LegacyAlertsClientModule, 'LegacyAlertsClient') .mockImplementation(() => mockLegacyAlertsClient); - const alertsClient = new AlertsClient<{}, {}, { foo?: string }, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, { foo?: string }, 'default', 'recovered'>( + alertsClientParams + ); await alertsClient.initializeExecution({ maxAlerts, @@ -1440,13 +1477,7 @@ describe('Alerts Client', () => { {}, 'default', 'recovered' - >({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + >(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -1471,14 +1502,7 @@ describe('Alerts Client', () => { payload: { count: 100, url: `https://elastic.co` }, }); - alertsClient.processAndLogAlerts({ - eventLogger: alertingEventLogger, - ruleRunMetricsStore, - shouldLogAlerts: false, - flappingSettings: DEFAULT_FLAPPING_SETTINGS, - notifyWhen: RuleNotifyWhen.CHANGE, - maintenanceWindowIds: [], - }); + alertsClient.processAndLogAlerts(processAndLogAlertsOpts); await alertsClient.persistAlerts(); @@ -1495,6 +1519,10 @@ describe('Alerts Client', () => { { '@timestamp': date, count: 100, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -1525,10 +1553,16 @@ describe('Alerts Client', () => { }, start: date, status: 'active', + time_range: { + gte: date, + }, uuid: expect.any(String), + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], url: 'https://elastic.co', }, ], @@ -1553,6 +1587,10 @@ describe('Alerts Client', () => { '@timestamp': '2023-03-28T12:27:28.159Z', count: 1, url: 'https://localhost:5601/abc', + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -1582,10 +1620,16 @@ describe('Alerts Client', () => { }, start: '2023-03-28T12:27:28.159Z', status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abc', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.8.0', }, + tags: ['rule-', '-tags'], }, }, ], @@ -1597,13 +1641,7 @@ describe('Alerts Client', () => { {}, 'default', 'recovered' - >({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + >(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -1639,14 +1677,7 @@ describe('Alerts Client', () => { payload: { count: 100, url: `https://elastic.co` }, }); - alertsClient.processAndLogAlerts({ - eventLogger: alertingEventLogger, - ruleRunMetricsStore, - shouldLogAlerts: false, - flappingSettings: DEFAULT_FLAPPING_SETTINGS, - notifyWhen: RuleNotifyWhen.CHANGE, - maintenanceWindowIds: [], - }); + alertsClient.processAndLogAlerts(processAndLogAlertsOpts); await alertsClient.persistAlerts(); @@ -1665,6 +1696,10 @@ describe('Alerts Client', () => { { '@timestamp': date, count: 100, + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -1695,10 +1730,16 @@ describe('Alerts Client', () => { }, start: '2023-03-28T12:27:28.159Z', status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abc', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], url: 'https://elastic.co', }, ], @@ -1723,6 +1764,10 @@ describe('Alerts Client', () => { '@timestamp': '2023-03-28T12:27:28.159Z', count: 1, url: 'https://localhost:5601/abc', + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -1750,12 +1795,18 @@ describe('Alerts Client', () => { tags: ['rule-', '-tags'], uuid: '1', }, - start: '2023-03-28T12:27:28.159Z', + start: '2023-03-28T11:27:28.159Z', status: 'active', + time_range: { + gte: '2023-03-28T11:27:28.159Z', + }, uuid: 'abc', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.8.0', }, + tags: ['rule-', '-tags'], }, }, ], @@ -1767,13 +1818,7 @@ describe('Alerts Client', () => { {}, 'default', 'recovered' - >({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + >(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -1781,7 +1826,7 @@ describe('Alerts Client', () => { flappingSettings: DEFAULT_FLAPPING_SETTINGS, activeAlertsFromState: { '1': { - state: { foo: true, start: '2023-03-28T12:27:28.159Z', duration: '0' }, + state: { foo: true, start: '2023-03-28T11:27:28.159Z', duration: '0' }, meta: { flapping: false, flappingHistory: [true], @@ -1803,14 +1848,7 @@ describe('Alerts Client', () => { payload: { count: 100, url: `https://elastic.co` }, }); - alertsClient.processAndLogAlerts({ - eventLogger: alertingEventLogger, - ruleRunMetricsStore, - shouldLogAlerts: false, - flappingSettings: DEFAULT_FLAPPING_SETTINGS, - notifyWhen: RuleNotifyWhen.CHANGE, - maintenanceWindowIds: [], - }); + alertsClient.processAndLogAlerts(processAndLogAlertsOpts); await alertsClient.persistAlerts(); @@ -1829,11 +1867,15 @@ describe('Alerts Client', () => { { '@timestamp': date, count: 100, + event: { + action: 'close', + kind: 'signal', + }, kibana: { alert: { action_group: 'recovered', duration: { - us: '36000000000000', + us: '39600000000000', }, end: date, flapping: false, @@ -1858,12 +1900,19 @@ describe('Alerts Client', () => { tags: ['rule-', '-tags'], uuid: '1', }, - start: '2023-03-28T12:27:28.159Z', + start: '2023-03-28T11:27:28.159Z', status: 'recovered', + time_range: { + gte: '2023-03-28T11:27:28.159Z', + lte: date, + }, uuid: 'abc', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], url: 'https://elastic.co', }, ], @@ -1873,13 +1922,7 @@ describe('Alerts Client', () => { describe('client()', () => { test('only returns subset of functionality', async () => { - const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - ruleType, - namespace: 'default', - rule: alertRuleData, - }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); await alertsClient.initializeExecution({ maxAlerts, @@ -1899,5 +1942,191 @@ describe('Alerts Client', () => { 'getRecoveredAlerts', ]); }); + + test('should return recovered alert document with recovered alert, if it exists', async () => { + clusterClient.search.mockResolvedValue({ + took: 10, + timed_out: false, + _shards: { failed: 0, successful: 1, total: 1, skipped: 0 }, + hits: { + total: { + relation: 'eq', + value: 1, + }, + hits: [ + { + _id: 'abc', + _index: '.internal.alerts-test.alerts-default-000001', + _source: { + '@timestamp': '2023-03-28T12:27:28.159Z', + event: { + action: 'active', + kind: 'signal', + }, + kibana: { + alert: { + action_group: 'default', + duration: { + us: '0', + }, + flapping: false, + flapping_history: [true], + instance: { + id: '1', + }, + rule: { + category: 'My test rule', + consumer: 'bar', + execution: { + uuid: '5f6aa57d-3e22-484e-bae8-cbed868f4d28', + }, + name: 'rule-name', + parameters: { + bar: true, + }, + producer: 'alerts', + revision: 0, + rule_type_id: 'test.rule-type', + tags: ['rule-', '-tags'], + uuid: '1', + }, + start: '2023-03-28T12:27:28.159Z', + status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, + uuid: 'abc', + workflow_status: 'open', + }, + space_ids: ['default'], + version: '8.8.0', + }, + tags: ['rule-', '-tags'], + }, + }, + ], + }, + }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); + await alertsClient.initializeExecution({ + maxAlerts, + ruleLabel: `test: rule-name`, + flappingSettings: DEFAULT_FLAPPING_SETTINGS, + activeAlertsFromState: { + '1': { + state: { foo: true, start: '2023-03-28T12:27:28.159Z', duration: '0' }, + meta: { + flapping: false, + flappingHistory: [true], + maintenanceWindowIds: [], + lastScheduledActions: { group: 'default', date: new Date() }, + uuid: 'abc', + }, + }, + }, + recoveredAlertsFromState: {}, + }); + + // report no alerts to allow existing alert to recover + + const publicAlertsClient = alertsClient.client(); + const recoveredAlerts = publicAlertsClient.getRecoveredAlerts(); + expect(recoveredAlerts.length).toEqual(1); + const recoveredAlert = recoveredAlerts[0]; + expect(recoveredAlert.alert.getId()).toEqual('1'); + expect(recoveredAlert.alert.getUuid()).toEqual('abc'); + expect(recoveredAlert.alert.getStart()).toEqual('2023-03-28T12:27:28.159Z'); + expect(recoveredAlert.hit).toEqual({ + '@timestamp': '2023-03-28T12:27:28.159Z', + event: { + action: 'active', + kind: 'signal', + }, + kibana: { + alert: { + action_group: 'default', + duration: { + us: '0', + }, + flapping: false, + flapping_history: [true], + instance: { + id: '1', + }, + rule: { + category: 'My test rule', + consumer: 'bar', + execution: { + uuid: '5f6aa57d-3e22-484e-bae8-cbed868f4d28', + }, + name: 'rule-name', + parameters: { + bar: true, + }, + producer: 'alerts', + revision: 0, + rule_type_id: 'test.rule-type', + tags: ['rule-', '-tags'], + uuid: '1', + }, + start: '2023-03-28T12:27:28.159Z', + status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, + uuid: 'abc', + workflow_status: 'open', + }, + space_ids: ['default'], + version: '8.8.0', + }, + tags: ['rule-', '-tags'], + }); + }); + + test('should return undefined document with recovered alert, if it does not exists', async () => { + clusterClient.search.mockResolvedValue({ + took: 10, + timed_out: false, + _shards: { failed: 0, successful: 1, total: 1, skipped: 0 }, + hits: { + total: { + relation: 'eq', + value: 0, + }, + hits: [], + }, + }); + const alertsClient = new AlertsClient<{}, {}, {}, 'default', 'recovered'>(alertsClientParams); + await alertsClient.initializeExecution({ + maxAlerts, + ruleLabel: `test: rule-name`, + flappingSettings: DEFAULT_FLAPPING_SETTINGS, + activeAlertsFromState: { + '1': { + state: { foo: true, start: '2023-03-28T12:27:28.159Z', duration: '0' }, + meta: { + flapping: false, + flappingHistory: [true], + maintenanceWindowIds: [], + lastScheduledActions: { group: 'default', date: new Date() }, + uuid: 'abc', + }, + }, + }, + recoveredAlertsFromState: {}, + }); + + // report no alerts to allow existing alert to recover + + const publicAlertsClient = alertsClient.client(); + const recoveredAlerts = publicAlertsClient.getRecoveredAlerts(); + expect(recoveredAlerts.length).toEqual(1); + const recoveredAlert = recoveredAlerts[0]; + expect(recoveredAlert.alert.getId()).toEqual('1'); + expect(recoveredAlert.alert.getUuid()).toEqual('abc'); + expect(recoveredAlert.alert.getStart()).toEqual('2023-03-28T12:27:28.159Z'); + expect(recoveredAlert.hit).toBeUndefined(); + }); }); }); diff --git a/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts b/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts index 3e7e40347ac08..e5a18f5f17632 100644 --- a/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts +++ b/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts @@ -11,6 +11,7 @@ import { chunk, flatMap, isEmpty, keys } from 'lodash'; import { SearchRequest } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { Alert } from '@kbn/alerts-as-data-utils'; import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; +import { DeepPartial } from '@kbn/utility-types'; import { AlertInstanceContext, AlertInstanceState, @@ -30,6 +31,7 @@ import { ProcessAndLogAlertsOpts, TrackedAlerts, ReportedAlert, + ReportedAlertData, UpdateableAlert, } from './types'; import { @@ -45,6 +47,7 @@ const CHUNK_SIZE = 10000; export interface AlertsClientParams extends CreateAlertsClientParams { elasticsearchClientPromise: Promise; + kibanaVersion: string; } export class AlertsClient< @@ -75,7 +78,7 @@ export class AlertsClient< private indexTemplateAndPattern: IIndexPatternString; - private reportedAlerts: Record = {}; + private reportedAlerts: Record> = {}; constructor(private readonly options: AlertsClientParams) { this.legacyAlertsClient = new LegacyAlertsClient< @@ -177,7 +180,7 @@ export class AlertsClient< LegacyContext, WithoutReservedActionGroups > - ) { + ): ReportedAlertData { const context = alert.context ? alert.context : ({} as LegacyContext); const state = !isEmpty(alert.state) ? alert.state : null; @@ -195,6 +198,11 @@ export class AlertsClient< if (alert.payload) { this.reportedAlerts[alert.id] = alert.payload; } + + return { + uuid: legacyAlert.getUuid(), + start: legacyAlert.getStart(), + }; } public setAlertData( @@ -273,6 +281,7 @@ export class AlertsClient< rule: this.rule, timestamp: currentTime, payload: this.reportedAlerts[id], + kibanaVersion: this.options.kibanaVersion, }) ); } else { @@ -288,6 +297,7 @@ export class AlertsClient< rule: this.rule, timestamp: currentTime, payload: this.reportedAlerts[id], + kibanaVersion: this.options.kibanaVersion, }) ); } @@ -313,6 +323,7 @@ export class AlertsClient< timestamp: currentTime, payload: this.reportedAlerts[id], recoveryActionGroup: this.options.ruleType.recoveryActionGroup.id, + kibanaVersion: this.options.kibanaVersion, }) : buildUpdatedRecoveredAlert({ alert: this.fetchedAlerts.data[id], @@ -409,7 +420,11 @@ export class AlertsClient< this.factory().alertLimit.setLimitReached(reached), getRecoveredAlerts: () => { const { getRecoveredAlerts } = this.factory().done(); - return getRecoveredAlerts(); + const recoveredLegacyAlerts = getRecoveredAlerts() ?? []; + return recoveredLegacyAlerts.map((alert) => ({ + alert, + hit: this.fetchedAlerts.data[alert.getId()], + })); }, }; } diff --git a/x-pack/plugins/alerting/server/alerts_client/lib/build_new_alert.test.ts b/x-pack/plugins/alerting/server/alerts_client/lib/build_new_alert.test.ts index 010ce0340c7e6..d31d506854f49 100644 --- a/x-pack/plugins/alerting/server/alerts_client/lib/build_new_alert.test.ts +++ b/x-pack/plugins/alerting/server/alerts_client/lib/build_new_alert.test.ts @@ -7,6 +7,7 @@ import { Alert as LegacyAlert } from '../../alert/alert'; import { buildNewAlert } from './build_new_alert'; import type { AlertRule } from '../types'; +import { Alert } from '@kbn/alerts-as-data-utils'; const rule = { category: 'My test rule', @@ -43,9 +44,14 @@ describe('buildNewAlert', () => { legacyAlert, rule: alertRule, timestamp: '2023-03-28T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-28T12:27:28.159Z', + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -58,9 +64,12 @@ describe('buildNewAlert', () => { rule, status: 'active', uuid: legacyAlert.getUuid(), + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }); }); @@ -74,9 +83,14 @@ describe('buildNewAlert', () => { legacyAlert, rule: alertRule, timestamp: '2023-03-28T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-28T12:27:28.159Z', + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -92,10 +106,16 @@ describe('buildNewAlert', () => { start: now, rule, status: 'active', + time_range: { + gte: now, + }, uuid: legacyAlert.getUuid(), + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }); }); @@ -110,9 +130,14 @@ describe('buildNewAlert', () => { legacyAlert, rule: alertRule, timestamp: '2023-03-28T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-28T12:27:28.159Z', + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -125,9 +150,12 @@ describe('buildNewAlert', () => { rule, status: 'active', uuid: legacyAlert.getUuid(), + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }); }); @@ -147,10 +175,67 @@ describe('buildNewAlert', () => { rule: alertRule, timestamp: '2023-03-28T12:27:28.159Z', payload: { count: 1, url: `https://url1`, kibana: { alert: { nested_field: 2 } } }, + kibanaVersion: '8.9.0', + }) + ).toEqual({ + '@timestamp': '2023-03-28T12:27:28.159Z', + count: 1, + event: { + action: 'open', + kind: 'signal', + }, + kibana: { + alert: { + action_group: 'default', + flapping: false, + flapping_history: [], + instance: { + id: 'alert-A', + }, + maintenance_window_ids: [], + nested_field: 2, + rule, + status: 'active', + uuid: legacyAlert.getUuid(), + workflow_status: 'open', + }, + space_ids: ['default'], + version: '8.9.0', + }, + tags: ['rule-', '-tags'], + url: `https://url1`, + }); + }); + + test('should use workflow status from alert payload if set', () => { + const legacyAlert = new LegacyAlert<{}, {}, 'default'>('alert-A'); + legacyAlert.scheduleActions('default'); + + expect( + buildNewAlert< + Alert & { count: number; url: string; kibana: { alert: { nested_field: number } } }, + {}, + {}, + 'default', + 'recovered' + >({ + legacyAlert, + rule: alertRule, + timestamp: '2023-03-28T12:27:28.159Z', + payload: { + count: 1, + url: `https://url1`, + kibana: { alert: { nested_field: 2, workflow_status: 'custom_workflow' } }, + }, + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-28T12:27:28.159Z', count: 1, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -164,9 +249,12 @@ describe('buildNewAlert', () => { rule, status: 'active', uuid: legacyAlert.getUuid(), + workflow_status: 'custom_workflow', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], url: `https://url1`, }); }); @@ -195,10 +283,73 @@ describe('buildNewAlert', () => { url: `https://url1`, kibana: { alert: { action_group: 'bad action group', nested_field: 2 } }, }, + kibanaVersion: '8.9.0', + }) + ).toEqual({ + '@timestamp': '2023-03-28T12:27:28.159Z', + count: 1, + event: { + action: 'open', + kind: 'signal', + }, + kibana: { + alert: { + action_group: 'default', + flapping: false, + flapping_history: [], + instance: { + id: 'alert-A', + }, + maintenance_window_ids: [], + nested_field: 2, + rule, + status: 'active', + uuid: legacyAlert.getUuid(), + workflow_status: 'open', + }, + space_ids: ['default'], + version: '8.9.0', + }, + tags: ['rule-', '-tags'], + url: `https://url1`, + }); + }); + + test('should merge and de-dupe rule tags and any tags from payload', () => { + const legacyAlert = new LegacyAlert<{}, {}, 'default'>('alert-A'); + legacyAlert.scheduleActions('default'); + + expect( + buildNewAlert< + { + count: number; + url: string; + kibana: { alert: { action_group: string; nested_field: number } }; + tags: string[]; + }, + {}, + {}, + 'default', + 'recovered' + >({ + legacyAlert, + rule: alertRule, + timestamp: '2023-03-28T12:27:28.159Z', + payload: { + count: 1, + url: `https://url1`, + kibana: { alert: { action_group: 'bad action group', nested_field: 2 } }, + tags: ['custom-tag1', '-tags'], + }, + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-28T12:27:28.159Z', count: 1, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -212,9 +363,12 @@ describe('buildNewAlert', () => { rule, status: 'active', uuid: legacyAlert.getUuid(), + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['custom-tag1', '-tags', 'rule-'], url: `https://url1`, }); }); diff --git a/x-pack/plugins/alerting/server/alerts_client/lib/build_new_alert.ts b/x-pack/plugins/alerting/server/alerts_client/lib/build_new_alert.ts index b19d5d541082a..5d163504a9606 100644 --- a/x-pack/plugins/alerting/server/alerts_client/lib/build_new_alert.ts +++ b/x-pack/plugins/alerting/server/alerts_client/lib/build_new_alert.ts @@ -5,7 +5,10 @@ * 2.0. */ import deepmerge from 'deepmerge'; +import { get } from 'lodash'; import type { Alert } from '@kbn/alerts-as-data-utils'; +import { ALERT_WORKFLOW_STATUS } from '@kbn/rule-data-utils'; +import { DeepPartial } from '@kbn/utility-types'; import { Alert as LegacyAlert } from '../../alert/alert'; import { AlertInstanceContext, AlertInstanceState, RuleAlertData } from '../../types'; import type { AlertRule } from '../types'; @@ -20,8 +23,9 @@ interface BuildNewAlertOpts< > { legacyAlert: LegacyAlert; rule: AlertRule; - payload?: AlertData; + payload?: DeepPartial; timestamp: string; + kibanaVersion: string; } /** @@ -40,6 +44,7 @@ export const buildNewAlert = < rule, timestamp, payload, + kibanaVersion, }: BuildNewAlertOpts< AlertData, LegacyState, @@ -47,12 +52,16 @@ export const buildNewAlert = < ActionGroupIds, RecoveryActionGroupId >): Alert & AlertData => { - const cleanedPayload = payload ? stripFrameworkFields(payload) : {}; + const cleanedPayload = stripFrameworkFields(payload); return deepmerge.all( [ cleanedPayload, { '@timestamp': timestamp, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: legacyAlert.getScheduledActionOptions()?.actionGroup, @@ -65,13 +74,28 @@ export const buildNewAlert = < rule: rule.kibana?.alert.rule, status: 'active', uuid: legacyAlert.getUuid(), + workflow_status: get(cleanedPayload, ALERT_WORKFLOW_STATUS, 'open'), ...(legacyAlert.getState().duration ? { duration: { us: legacyAlert.getState().duration } } : {}), - ...(legacyAlert.getState().start ? { start: legacyAlert.getState().start } : {}), + ...(legacyAlert.getState().start + ? { + start: legacyAlert.getState().start, + time_range: { + gte: legacyAlert.getState().start, + }, + } + : {}), }, space_ids: rule.kibana?.space_ids, + version: kibanaVersion, }, + tags: Array.from( + new Set([ + ...((cleanedPayload?.tags as string[]) ?? []), + ...(rule.kibana?.alert.rule.tags ?? []), + ]) + ), }, ], { arrayMerge: (_, sourceArray) => sourceArray } diff --git a/x-pack/plugins/alerting/server/alerts_client/lib/build_ongoing_alert.test.ts b/x-pack/plugins/alerting/server/alerts_client/lib/build_ongoing_alert.test.ts index caf45f2d7fccc..078d16602ac84 100644 --- a/x-pack/plugins/alerting/server/alerts_client/lib/build_ongoing_alert.test.ts +++ b/x-pack/plugins/alerting/server/alerts_client/lib/build_ongoing_alert.test.ts @@ -34,6 +34,10 @@ const alertRule: AlertRule = { }; const existingAlert = { '@timestamp': '2023-03-28T12:27:28.159Z', + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'error', @@ -48,10 +52,16 @@ const existingAlert = { start: '2023-03-28T12:27:28.159Z', rule, status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.8.1', }, + tags: ['rule-', '-tags'], }; describe('buildOngoingAlert', () => { @@ -67,9 +77,14 @@ describe('buildOngoingAlert', () => { legacyAlert, rule: alertRule, timestamp: '2023-03-29T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-29T12:27:28.159Z', + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'warning', @@ -85,10 +100,16 @@ describe('buildOngoingAlert', () => { start: '2023-03-28T12:27:28.159Z', rule, status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }); }); @@ -117,9 +138,14 @@ describe('buildOngoingAlert', () => { }, }, timestamp: '2023-03-29T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-29T12:27:28.159Z', + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'warning', @@ -141,10 +167,16 @@ describe('buildOngoingAlert', () => { }, }, status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }); }); @@ -170,9 +202,14 @@ describe('buildOngoingAlert', () => { legacyAlert, rule: alertRule, timestamp: '2023-03-29T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-29T12:27:28.159Z', + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'error', @@ -188,10 +225,16 @@ describe('buildOngoingAlert', () => { start: '2023-03-28T12:27:28.159Z', rule, status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }); }); @@ -222,10 +265,15 @@ describe('buildOngoingAlert', () => { url: `https://url2`, kibana: { alert: { nested_field: 2 } }, }, + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-29T12:27:28.159Z', count: 2, + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'warning', @@ -242,11 +290,17 @@ describe('buildOngoingAlert', () => { start: '2023-03-28T12:27:28.159Z', rule, status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, url: `https://url2`, + tags: ['rule-', '-tags'], }); }); @@ -281,10 +335,15 @@ describe('buildOngoingAlert', () => { url: `https://url2`, kibana: { alert: { action_group: 'bad action group', nested_field: 2 } }, }, + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-29T12:27:28.159Z', count: 2, + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'warning', @@ -301,11 +360,90 @@ describe('buildOngoingAlert', () => { start: '2023-03-28T12:27:28.159Z', rule, status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, url: `https://url2`, + tags: ['rule-', '-tags'], + }); + }); + + test('should merge and de-dupe tags from existing alert, reported payload and rule tags', () => { + const legacyAlert = new LegacyAlert<{}, {}, 'error' | 'warning'>('alert-A'); + legacyAlert + .scheduleActions('warning') + .replaceState({ start: '0000-00-00T00:00:00.000Z', duration: '36000000' }); + + expect( + buildOngoingAlert< + { + count: number; + url: string; + kibana?: { alert?: { action_group: string; nested_field?: number } }; + tags?: string[]; + }, + {}, + {}, + 'error' | 'warning', + 'recovered' + >({ + alert: { + ...existingAlert, + count: 1, + tags: ['old-tag1', '-tags'], + url: `https://url1`, + }, + legacyAlert, + rule: alertRule, + timestamp: '2023-03-29T12:27:28.159Z', + payload: { + count: 2, + url: `https://url2`, + kibana: { alert: { action_group: 'bad action group', nested_field: 2 } }, + tags: ['-tags', 'custom-tag2'], + }, + kibanaVersion: '8.9.0', + }) + ).toEqual({ + '@timestamp': '2023-03-29T12:27:28.159Z', + count: 2, + event: { + action: 'active', + kind: 'signal', + }, + kibana: { + alert: { + action_group: 'warning', + duration: { + us: '36000000', + }, + flapping: false, + flapping_history: [], + instance: { + id: 'alert-A', + }, + maintenance_window_ids: [], + nested_field: 2, + start: '2023-03-28T12:27:28.159Z', + rule, + status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, + uuid: 'abcdefg', + workflow_status: 'open', + }, + space_ids: ['default'], + version: '8.9.0', + }, + url: `https://url2`, + tags: ['-tags', 'custom-tag2', 'old-tag1', 'rule-'], }); }); @@ -325,10 +463,15 @@ describe('buildOngoingAlert', () => { legacyAlert, rule: alertRule, timestamp: '2023-03-29T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-29T12:27:28.159Z', count: 1, + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'warning', @@ -344,11 +487,17 @@ describe('buildOngoingAlert', () => { start: '2023-03-28T12:27:28.159Z', rule, status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, url: `https://url1`, + tags: ['rule-', '-tags'], }); }); }); diff --git a/x-pack/plugins/alerting/server/alerts_client/lib/build_ongoing_alert.ts b/x-pack/plugins/alerting/server/alerts_client/lib/build_ongoing_alert.ts index 6b2944e4930c8..491c4dfe7cca7 100644 --- a/x-pack/plugins/alerting/server/alerts_client/lib/build_ongoing_alert.ts +++ b/x-pack/plugins/alerting/server/alerts_client/lib/build_ongoing_alert.ts @@ -7,6 +7,7 @@ import deepmerge from 'deepmerge'; import type { Alert } from '@kbn/alerts-as-data-utils'; +import { DeepPartial } from '@kbn/utility-types'; import { Alert as LegacyAlert } from '../../alert/alert'; import { AlertInstanceContext, AlertInstanceState, RuleAlertData } from '../../types'; import type { AlertRule } from '../types'; @@ -22,8 +23,9 @@ interface BuildOngoingAlertOpts< alert: Alert & AlertData; legacyAlert: LegacyAlert; rule: AlertRule; - payload?: AlertData; + payload?: DeepPartial; timestamp: string; + kibanaVersion: string; } /** @@ -43,6 +45,7 @@ export const buildOngoingAlert = < payload, rule, timestamp, + kibanaVersion, }: BuildOngoingAlertOpts< AlertData, LegacyState, @@ -50,7 +53,7 @@ export const buildOngoingAlert = < ActionGroupIds, RecoveryActionGroupId >): Alert & AlertData => { - const cleanedPayload = payload ? stripFrameworkFields(payload) : {}; + const cleanedPayload = stripFrameworkFields(payload); return deepmerge.all( [ alert, @@ -58,6 +61,9 @@ export const buildOngoingAlert = < { // Update the timestamp to reflect latest update time '@timestamp': timestamp, + event: { + action: 'active', + }, kibana: { alert: { // Because we're building this alert after the action execution handler has been @@ -80,13 +86,25 @@ export const buildOngoingAlert = < ? { duration: { us: legacyAlert.getState().duration } } : {}), // Fields that are explicitly not updated: + // event.kind // instance.id // status - ongoing alerts should maintain 'active' status // uuid - ongoing alerts should carry over previous UUID // start - ongoing alerts should keep the initial start time + // time_range - ongoing alerts should keep the initial time_range + // workflow_status - ongoing alerts should keep the initial workflow status }, space_ids: rule.kibana?.space_ids, + // Set latest kibana version + version: kibanaVersion, }, + tags: Array.from( + new Set([ + ...((cleanedPayload?.tags as string[]) ?? []), + ...(alert.tags ?? []), + ...(rule.kibana?.alert.rule.tags ?? []), + ]) + ), }, ], { arrayMerge: (_, sourceArray) => sourceArray } diff --git a/x-pack/plugins/alerting/server/alerts_client/lib/build_recovered_alert.test.ts b/x-pack/plugins/alerting/server/alerts_client/lib/build_recovered_alert.test.ts index 873d0982981ad..03f538dc07ef3 100644 --- a/x-pack/plugins/alerting/server/alerts_client/lib/build_recovered_alert.test.ts +++ b/x-pack/plugins/alerting/server/alerts_client/lib/build_recovered_alert.test.ts @@ -34,6 +34,10 @@ const alertRule: AlertRule = { }; const existingActiveAlert = { '@timestamp': '2023-03-28T12:27:28.159Z', + event: { + action: 'active', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -49,10 +53,16 @@ const existingActiveAlert = { start: '2023-03-28T12:27:28.159Z', rule, status: 'active', + time_range: { + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.8.1', }, + tags: ['rule-', '-tags'], }; describe('buildRecoveredAlert', () => { @@ -69,9 +79,14 @@ describe('buildRecoveredAlert', () => { rule: alertRule, recoveryActionGroup: 'recovered', timestamp: '2023-03-29T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-29T12:27:28.159Z', + event: { + action: 'close', + kind: 'signal', + }, kibana: { alert: { action_group: 'recovered', @@ -88,10 +103,17 @@ describe('buildRecoveredAlert', () => { start: '2023-03-28T12:27:28.159Z', rule, status: 'recovered', + time_range: { + lte: '2023-03-30T12:27:28.159Z', + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }); }); @@ -122,9 +144,14 @@ describe('buildRecoveredAlert', () => { }, }, timestamp: '2023-03-29T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-29T12:27:28.159Z', + event: { + action: 'close', + kind: 'signal', + }, kibana: { alert: { action_group: 'NoLongerActive', @@ -147,10 +174,17 @@ describe('buildRecoveredAlert', () => { }, }, status: 'recovered', + time_range: { + lte: '2023-03-30T12:27:28.159Z', + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, + tags: ['rule-', '-tags'], }); }); @@ -196,10 +230,111 @@ describe('buildRecoveredAlert', () => { }, }, timestamp: '2023-03-29T12:27:28.159Z', + kibanaVersion: '8.9.0', + }) + ).toEqual({ + '@timestamp': '2023-03-29T12:27:28.159Z', + count: 2, + event: { + action: 'close', + kind: 'signal', + }, + kibana: { + alert: { + action_group: 'NoLongerActive', + duration: { + us: '36000000', + }, + end: '2023-03-30T12:27:28.159Z', + flapping: false, + flapping_history: [], + instance: { + id: 'alert-A', + }, + maintenance_window_ids: ['maint-1', 'maint-321'], + nested_field: 2, + start: '2023-03-28T12:27:28.159Z', + rule: { + ...rule, + name: 'updated-rule-name', + parameters: { + bar: false, + }, + }, + status: 'recovered', + time_range: { + lte: '2023-03-30T12:27:28.159Z', + gte: '2023-03-28T12:27:28.159Z', + }, + uuid: 'abcdefg', + workflow_status: 'open', + }, + space_ids: ['default'], + version: '8.9.0', + }, + url: `https://url2`, + tags: ['rule-', '-tags'], + }); + }); + + test('should merge and de-dupe tags from existing alert, reported recovery payload and rule tags', () => { + const legacyAlert = new LegacyAlert<{}, {}, 'default'>('alert-A'); + legacyAlert + .scheduleActions('default') + .replaceState({ end: '2023-03-30T12:27:28.159Z', duration: '36000000' }); + legacyAlert.setMaintenanceWindowIds(['maint-1', 'maint-321']); + + expect( + buildRecoveredAlert< + { + count: number; + url: string; + kibana?: { alert?: { nested_field?: number } }; + tags?: string[]; + }, + {}, + {}, + 'default', + 'recovered' + >({ + alert: { + ...existingActiveAlert, + tags: ['active-alert-tag', 'rule-'], + count: 1, + url: `https://url1`, + }, + legacyAlert, + recoveryActionGroup: 'NoLongerActive', + payload: { + count: 2, + url: `https://url2`, + kibana: { alert: { nested_field: 2 } }, + tags: ['-tags', 'reported-recovery-tag'], + }, + rule: { + kibana: { + alert: { + rule: { + ...rule, + name: 'updated-rule-name', + parameters: { + bar: false, + }, + }, + }, + space_ids: ['default'], + }, + }, + timestamp: '2023-03-29T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-29T12:27:28.159Z', count: 2, + event: { + action: 'close', + kind: 'signal', + }, kibana: { alert: { action_group: 'NoLongerActive', @@ -223,11 +358,18 @@ describe('buildRecoveredAlert', () => { }, }, status: 'recovered', + time_range: { + lte: '2023-03-30T12:27:28.159Z', + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, url: `https://url2`, + tags: ['-tags', 'reported-recovery-tag', 'active-alert-tag', 'rule-'], }); }); @@ -277,10 +419,15 @@ describe('buildRecoveredAlert', () => { }, }, timestamp: '2023-03-29T12:27:28.159Z', + kibanaVersion: '8.9.0', }) ).toEqual({ '@timestamp': '2023-03-29T12:27:28.159Z', count: 2, + event: { + action: 'close', + kind: 'signal', + }, kibana: { alert: { action_group: 'NoLongerActive', @@ -304,11 +451,18 @@ describe('buildRecoveredAlert', () => { }, }, status: 'recovered', + time_range: { + lte: '2023-03-30T12:27:28.159Z', + gte: '2023-03-28T12:27:28.159Z', + }, uuid: 'abcdefg', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.9.0', }, url: `https://url2`, + tags: ['rule-', '-tags'], }); }); }); diff --git a/x-pack/plugins/alerting/server/alerts_client/lib/build_recovered_alert.ts b/x-pack/plugins/alerting/server/alerts_client/lib/build_recovered_alert.ts index 4595466aef9b7..b283844acbc63 100644 --- a/x-pack/plugins/alerting/server/alerts_client/lib/build_recovered_alert.ts +++ b/x-pack/plugins/alerting/server/alerts_client/lib/build_recovered_alert.ts @@ -6,6 +6,7 @@ */ import deepmerge from 'deepmerge'; import type { Alert } from '@kbn/alerts-as-data-utils'; +import { DeepPartial } from '@kbn/utility-types'; import { Alert as LegacyAlert } from '../../alert/alert'; import { AlertInstanceContext, AlertInstanceState, RuleAlertData } from '../../types'; import type { AlertRule } from '../types'; @@ -22,8 +23,9 @@ interface BuildRecoveredAlertOpts< legacyAlert: LegacyAlert; rule: AlertRule; recoveryActionGroup: string; - payload?: AlertData; + payload?: DeepPartial; timestamp: string; + kibanaVersion: string; } /** @@ -44,6 +46,7 @@ export const buildRecoveredAlert = < timestamp, payload, recoveryActionGroup, + kibanaVersion, }: BuildRecoveredAlertOpts< AlertData, LegacyState, @@ -51,7 +54,7 @@ export const buildRecoveredAlert = < ActionGroupIds, RecoveryActionGroupId >): Alert & AlertData => { - const cleanedPayload = payload ? stripFrameworkFields(payload) : {}; + const cleanedPayload = stripFrameworkFields(payload); return deepmerge.all( [ alert, @@ -59,6 +62,9 @@ export const buildRecoveredAlert = < { // Update the timestamp to reflect latest update time '@timestamp': timestamp, + event: { + action: 'close', + }, kibana: { alert: { // Set the recovery action group @@ -78,16 +84,34 @@ export const buildRecoveredAlert = < ? { duration: { us: legacyAlert.getState().duration } } : {}), // Set end time - ...(legacyAlert.getState().end ? { end: legacyAlert.getState().end } : {}), + ...(legacyAlert.getState().end + ? { + end: legacyAlert.getState().end, + time_range: { + // this should get merged with a time_range.gte + lte: legacyAlert.getState().end, + }, + } + : {}), // Fields that are explicitly not updated: // instance.id // action_group // uuid - recovered alerts should carry over previous UUID // start - recovered alerts should keep the initial start time + // workflow_status - recovered alerts should keep the initial workflow_status }, space_ids: rule.kibana?.space_ids, + // Set latest kibana version + version: kibanaVersion, }, + tags: Array.from( + new Set([ + ...((cleanedPayload?.tags as string[]) ?? []), + ...(alert.tags ?? []), + ...(rule.kibana?.alert.rule.tags ?? []), + ]) + ), }, ], { arrayMerge: (_, sourceArray) => sourceArray } diff --git a/x-pack/plugins/alerting/server/alerts_client/lib/strip_framework_fields.test.ts b/x-pack/plugins/alerting/server/alerts_client/lib/strip_framework_fields.test.ts index b78600e052901..5e61cbda2ac92 100644 --- a/x-pack/plugins/alerting/server/alerts_client/lib/strip_framework_fields.test.ts +++ b/x-pack/plugins/alerting/server/alerts_client/lib/strip_framework_fields.test.ts @@ -7,15 +7,22 @@ import { stripFrameworkFields } from './strip_framework_fields'; describe('stripFrameworkFields', () => { + test('should return empty object if payload is undefined', () => { + expect(stripFrameworkFields()).toEqual({}); + }); + test('should do nothing if payload has no framework fields', () => { const payload = { field1: 'test', kibana: { alert: { not_a_framework_field: 2 } } }; expect(stripFrameworkFields(payload)).toEqual(payload); }); - test(`should allow allowed fields like "kibana.alert.reason"`, () => { + test(`should allow fields from the allowlist`, () => { const payload = { field1: 'test', - kibana: { alert: { not_a_framework_field: 2, reason: 'because i said so' } }, + kibana: { + alert: { not_a_framework_field: 2, reason: 'because i said so', workflow_status: 'custom' }, + }, + tags: ['taggity-tag'], }; expect(stripFrameworkFields(payload)).toEqual(payload); }); diff --git a/x-pack/plugins/alerting/server/alerts_client/lib/strip_framework_fields.ts b/x-pack/plugins/alerting/server/alerts_client/lib/strip_framework_fields.ts index d55c8e5152620..9d91d7ec1beae 100644 --- a/x-pack/plugins/alerting/server/alerts_client/lib/strip_framework_fields.ts +++ b/x-pack/plugins/alerting/server/alerts_client/lib/strip_framework_fields.ts @@ -6,11 +6,11 @@ */ import { omit } from 'lodash'; -import { ALERT_REASON } from '@kbn/rule-data-utils'; +import { ALERT_REASON, ALERT_WORKFLOW_STATUS, TAGS } from '@kbn/rule-data-utils'; import { alertFieldMap } from '@kbn/alerts-as-data-utils'; import { RuleAlertData } from '../../types'; -const allowedFrameworkFields = new Set([ALERT_REASON]); +const allowedFrameworkFields = new Set([ALERT_REASON, ALERT_WORKFLOW_STATUS, TAGS]); /** * Remove framework fields from the alert payload reported by @@ -19,8 +19,12 @@ const allowedFrameworkFields = new Set([ALERT_REASON]); * set by the alerting framework during rule execution. */ export const stripFrameworkFields = ( - payload: AlertData + payload?: AlertData ): AlertData => { + if (!payload) { + return {} as AlertData; + } + const keysToStrip = Object.keys(alertFieldMap).filter( (key: string) => !allowedFrameworkFields.has(key) ); diff --git a/x-pack/plugins/alerting/server/alerts_client/types.ts b/x-pack/plugins/alerting/server/alerts_client/types.ts index ec29fc26461f0..5502e01e9d1d6 100644 --- a/x-pack/plugins/alerting/server/alerts_client/types.ts +++ b/x-pack/plugins/alerting/server/alerts_client/types.ts @@ -6,6 +6,7 @@ */ import type { Alert } from '@kbn/alerts-as-data-utils'; +import { DeepPartial } from '@kbn/utility-types'; import { Alert as LegacyAlert } from '../alert/alert'; import { AlertInstanceContext, @@ -102,11 +103,11 @@ export interface PublicAlertsClient< Context extends AlertInstanceContext, ActionGroupIds extends string > { - report(alert: ReportedAlert): void; + report(alert: ReportedAlert): ReportedAlertData; setAlertData(alert: UpdateableAlert): void; getAlertLimitValue: () => number; setAlertLimitReached: (reached: boolean) => void; - getRecoveredAlerts: () => Array>; + getRecoveredAlerts: () => Array>; } export interface ReportedAlert< @@ -119,7 +120,22 @@ export interface ReportedAlert< actionGroup: ActionGroupIds; state?: State; context?: Context; - payload?: AlertData; + payload?: DeepPartial; +} + +export interface RecoveredAlertData< + AlertData extends RuleAlertData, + State extends AlertInstanceState, + Context extends AlertInstanceContext, + ActionGroupIds extends string +> { + alert: LegacyAlert; + hit?: AlertData; +} + +export interface ReportedAlertData { + uuid: string; + start: string | null; } export type UpdateableAlert< diff --git a/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts b/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts index 9b20483b10571..61f7760f6c58f 100644 --- a/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts +++ b/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts @@ -1190,6 +1190,7 @@ describe('Alerts Service', () => { spaceId: 'default', tags: ['rule-', '-tags'], }, + kibanaVersion: '8.8.0', }); }); @@ -1291,6 +1292,7 @@ describe('Alerts Service', () => { spaceId: 'default', tags: ['rule-', '-tags'], }, + kibanaVersion: '8.8.0', }); expect(result).not.toBe(null); @@ -1394,6 +1396,7 @@ describe('Alerts Service', () => { spaceId: 'default', tags: ['rule-', '-tags'], }, + kibanaVersion: '8.8.0', }); expect(result[0]).not.toBe(null); @@ -1467,6 +1470,7 @@ describe('Alerts Service', () => { spaceId: 'default', tags: ['rule-', '-tags'], }, + kibanaVersion: '8.8.0', }); expect(result).not.toBe(null); @@ -1555,6 +1559,7 @@ describe('Alerts Service', () => { spaceId: 'default', tags: ['rule-', '-tags'], }, + kibanaVersion: '8.8.0', }); expect(result[0]).not.toBe(null); diff --git a/x-pack/plugins/alerting/server/alerts_service/alerts_service.ts b/x-pack/plugins/alerting/server/alerts_service/alerts_service.ts index 7fcd03c93c80f..20a1c3cd453f0 100644 --- a/x-pack/plugins/alerting/server/alerts_service/alerts_service.ts +++ b/x-pack/plugins/alerting/server/alerts_service/alerts_service.ts @@ -222,6 +222,7 @@ export class AlertsService implements IAlertsService { ruleType: opts.ruleType, namespace: opts.namespace, rule: opts.rule, + kibanaVersion: this.options.kibanaVersion, }); } diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts index cbdd67f98d6ea..f26734e0dc447 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts @@ -17,6 +17,7 @@ import { Rule, RuleAction, MaintenanceWindow, + RuleAlertData, } from '../types'; import { ConcreteTaskInstance, isUnrecoverableError } from '@kbn/task-manager-plugin/server'; import { TaskRunnerContext } from './task_runner_factory'; @@ -339,7 +340,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -422,7 +424,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -548,7 +551,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -594,7 +598,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -672,7 +677,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); executorServices.alertFactory.create('2').scheduleActions('default'); @@ -739,7 +745,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); executorServices.alertFactory.create('2').scheduleActions('default'); @@ -802,7 +809,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); executorServices.alertFactory.create('2').scheduleActions('default'); @@ -844,7 +852,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -917,7 +926,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -993,7 +1003,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -1085,7 +1096,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -1226,7 +1238,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); @@ -1335,7 +1348,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -1435,7 +1449,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -1512,7 +1527,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -1584,7 +1600,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -1699,7 +1716,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { throw new Error(GENERIC_ERROR_MESSAGE); } @@ -1807,7 +1825,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { throw new Error(GENERIC_ERROR_MESSAGE); } @@ -1975,7 +1994,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); executorServices.alertFactory.create('2').scheduleActions('default'); @@ -2066,7 +2086,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); executorServices.alertFactory.create('2').scheduleActions('default'); @@ -2150,7 +2171,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); executorServices.alertFactory.create('2').scheduleActions('default'); @@ -2299,7 +2321,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { return { state: {} }; } @@ -2469,7 +2492,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { throw new Error(GENERIC_ERROR_MESSAGE); } @@ -2501,7 +2525,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { throw new Error(GENERIC_ERROR_MESSAGE); } @@ -2557,7 +2582,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { throw new Error(GENERIC_ERROR_MESSAGE); } @@ -2627,7 +2653,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -2795,7 +2822,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); executorServices.alertFactory.create('2').scheduleActions('default'); @@ -2961,7 +2989,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { throw new Error('OMG'); } @@ -2988,7 +3017,8 @@ describe('Task Runner', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner_alerts_client.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner_alerts_client.test.ts index b4ad1d812d4ae..dbffbb9ff2268 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner_alerts_client.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner_alerts_client.test.ts @@ -473,6 +473,10 @@ describe('Task Runner', () => { // new alert doc { '@timestamp': DATE_1970, + event: { + action: 'open', + kind: 'signal', + }, kibana: { alert: { action_group: 'default', @@ -503,12 +507,18 @@ describe('Task Runner', () => { }, start: DATE_1970, status: 'active', + time_range: { + gte: DATE_1970, + }, uuid: '5f6aa57d-3e22-484e-bae8-cbed868f4d28', + workflow_status: 'open', }, space_ids: ['default'], + version: '8.8.0', }, numericField: 27, textField: 'foo', + tags: ['rule-', '-tags'], }, ], }); diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner_cancel.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner_cancel.test.ts index 18cbaabd5a765..3aac319b4e8e6 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner_cancel.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner_cancel.test.ts @@ -14,6 +14,7 @@ import { AlertInstanceState, AlertInstanceContext, Rule, + RuleAlertData, } from '../types'; import { ConcreteTaskInstance } from '@kbn/task-manager-plugin/server'; import { TaskRunnerContext } from './task_runner_factory'; @@ -288,7 +289,8 @@ describe('Task Runner Cancel', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -356,7 +358,8 @@ describe('Task Runner Cancel', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; @@ -418,7 +421,8 @@ describe('Task Runner Cancel', () => { RuleTypeState, AlertInstanceState, AlertInstanceContext, - string + string, + RuleAlertData >) => { executorServices.alertFactory.create('1').scheduleActions('default'); return { state: {} }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/alert_instance_factory_stub.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/alert_instance_factory_stub.ts index c1d63acf00bdb..df087c7d9775b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/alert_instance_factory_stub.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/alert_instance_factory_stub.ts @@ -47,6 +47,9 @@ export const alertInstanceFactoryStub = < getContext() { return {} as unknown as TInstanceContext; }, + getStart() { + return null; + }, hasContext() { return false; }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts index b4bc1a2c03e72..e1107e7ae135b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts @@ -194,6 +194,7 @@ export const previewRulesRoute = async ( | 'getContext' | 'hasContext' | 'getUuid' + | 'getStart' >; alertLimit: { getValue: () => number; diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts index fded7e8ee37b9..98a5fa5e1f05c 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts @@ -699,7 +699,8 @@ async function invokeExecutor({ services: ruleServices as unknown as RuleExecutorServices< EsQueryRuleState, ActionContext, - typeof ActionGroupId + typeof ActionGroupId, + never >, params: params as EsQueryRuleParams, state: { diff --git a/x-pack/plugins/stack_alerts/server/rule_types/index_threshold/rule_type.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/index_threshold/rule_type.test.ts index b424fb742b5ab..1af9d845c68a3 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/index_threshold/rule_type.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/index_threshold/rule_type.test.ts @@ -190,7 +190,8 @@ describe('ruleType', () => { services: alertServices as unknown as RuleExecutorServices< {}, ActionContext, - typeof ActionGroupId + typeof ActionGroupId, + never >, params, state: { @@ -257,7 +258,8 @@ describe('ruleType', () => { services: customAlertServices as unknown as RuleExecutorServices< {}, ActionContext, - typeof ActionGroupId + typeof ActionGroupId, + never >, params, state: { @@ -324,7 +326,8 @@ describe('ruleType', () => { services: customAlertServices as unknown as RuleExecutorServices< {}, ActionContext, - typeof ActionGroupId + typeof ActionGroupId, + never >, params, state: { @@ -390,7 +393,8 @@ describe('ruleType', () => { services: alertServices as unknown as RuleExecutorServices< {}, ActionContext, - typeof ActionGroupId + typeof ActionGroupId, + never >, params, state: { diff --git a/x-pack/test/alerting_api_integration/common/plugins/alerts/server/alert_types.ts b/x-pack/test/alerting_api_integration/common/plugins/alerts/server/alert_types.ts index c8c8c5bba8bdb..5003acd160f29 100644 --- a/x-pack/test/alerting_api_integration/common/plugins/alerts/server/alert_types.ts +++ b/x-pack/test/alerting_api_integration/common/plugins/alerts/server/alert_types.ts @@ -597,7 +597,7 @@ function getPatternFiringAlertsAsDataRuleType() { // set recovery payload for (const recoveredAlert of alertsClient.getRecoveredAlerts()) { alertsClient.setAlertData({ - id: recoveredAlert.getId(), + id: recoveredAlert.alert.getId(), payload: { patternIndex: -1, instancePattern: [] }, }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data.ts index ab83fbde26c79..13f3c5d445916 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/alerts_as_data.ts @@ -111,6 +111,9 @@ export default function createAlertsAsDataInstallResourcesTest({ getService }: F // start should be defined expect(source.kibana.alert.start).to.match(timestampPattern); + // time_range.gte should be same as start + expect(source.kibana.alert.time_range?.gte).to.equal(source.kibana.alert.start); + // timestamp should be defined expect(source['@timestamp']).to.match(timestampPattern); @@ -120,6 +123,18 @@ export default function createAlertsAsDataInstallResourcesTest({ getService }: F // flapping information for new alert expect(source.kibana.alert.flapping).to.equal(false); expect(source.kibana.alert.flapping_history).to.eql([true]); + + // workflow status should be 'open' + expect(source.kibana.alert.workflow_status).to.equal('open'); + + // event.action should be 'open' + expect(source.event?.action).to.equal('open'); + + // event.kind should be 'signal' + expect(source.event?.kind).to.equal('signal'); + + // tags should equal rule tags because rule type doesn't set any tags + expect(source.tags).to.eql(['foo']); } let alertDoc: SearchHit | undefined = alertDocsRun1.find( @@ -198,6 +213,17 @@ export default function createAlertsAsDataInstallResourcesTest({ getService }: F ...alertADocRun1.kibana.alert.flapping_history!, false, ]); + // event.action set to active + expect(alertADocRun2.event?.action).to.eql('active'); + expect(alertADocRun2.tags).to.eql(['foo']); + // these values should be the same as previous run + expect(alertADocRun2.event?.kind).to.eql(alertADocRun1.event?.kind); + expect(alertADocRun2.kibana.alert.workflow_status).to.eql( + alertADocRun1.kibana.alert.workflow_status + ); + expect(alertADocRun2.kibana.alert.time_range?.gte).to.equal( + alertADocRun1.kibana.alert.time_range?.gte + ); // alertB, run 2 // status is updated to recovered, duration is updated, end time is set @@ -226,6 +252,19 @@ export default function createAlertsAsDataInstallResourcesTest({ getService }: F ...alertBDocRun1.kibana.alert.flapping_history!, true, ]); + // event.action set to close + expect(alertBDocRun2.event?.action).to.eql('close'); + expect(alertBDocRun2.tags).to.eql(['foo']); + // these values should be the same as previous run + expect(alertBDocRun2.event?.kind).to.eql(alertBDocRun1.event?.kind); + expect(alertBDocRun2.kibana.alert.workflow_status).to.eql( + alertBDocRun1.kibana.alert.workflow_status + ); + expect(alertBDocRun2.kibana.alert.time_range?.gte).to.equal( + alertBDocRun1.kibana.alert.time_range?.gte + ); + // time_range.lte should be set to end time + expect(alertBDocRun2.kibana.alert.time_range?.lte).to.equal(alertBDocRun2.kibana.alert.end); // alertC, run 2 // status is updated to recovered, duration is updated, end time is set @@ -254,6 +293,19 @@ export default function createAlertsAsDataInstallResourcesTest({ getService }: F ...alertCDocRun1.kibana.alert.flapping_history!, true, ]); + // event.action set to close + expect(alertCDocRun2.event?.action).to.eql('close'); + expect(alertCDocRun2.tags).to.eql(['foo']); + // these values should be the same as previous run + expect(alertCDocRun2.event?.kind).to.eql(alertADocRun1.event?.kind); + expect(alertCDocRun2.kibana.alert.workflow_status).to.eql( + alertCDocRun1.kibana.alert.workflow_status + ); + expect(alertCDocRun2.kibana.alert.time_range?.gte).to.equal( + alertCDocRun1.kibana.alert.time_range?.gte + ); + // time_range.lte should be set to end time + expect(alertCDocRun2.kibana.alert.time_range?.lte).to.equal(alertCDocRun2.kibana.alert.end); // -------------------------- // RUN 3 - 1 re-active (alertC), 1 still recovered (alertB), 1 ongoing (alertA) @@ -312,6 +364,17 @@ export default function createAlertsAsDataInstallResourcesTest({ getService }: F ...alertADocRun2.kibana.alert.flapping_history!, false, ]); + // event.action should still to active + expect(alertADocRun3.event?.action).to.eql('active'); + expect(alertADocRun3.tags).to.eql(['foo']); + // these values should be the same as previous run + expect(alertADocRun3.event?.kind).to.eql(alertADocRun2.event?.kind); + expect(alertADocRun3.kibana.alert.workflow_status).to.eql( + alertADocRun2.kibana.alert.workflow_status + ); + expect(alertADocRun3.kibana.alert.time_range?.gte).to.equal( + alertADocRun2.kibana.alert.time_range?.gte + ); // alertB doc should be unchanged from prior run because it is still recovered // but its flapping history should be updated @@ -361,6 +424,13 @@ export default function createAlertsAsDataInstallResourcesTest({ getService }: F ...alertCDocRun2.kibana.alert.flapping_history!, true, ]); + // event.action should be 'open' + expect(alertCDocRun3.event?.action).to.eql('open'); + expect(alertCDocRun3.tags).to.eql(['foo']); + // these values should be the same as previous run + expect(alertCDocRun3.event?.kind).to.eql('signal'); + expect(alertCDocRun3.kibana.alert.workflow_status).to.eql('open'); + expect(alertCDocRun3.kibana.alert.time_range?.gte).to.equal(alertCDocRun3.kibana.alert.start); }); }); From a91535202ae771e902383bff472fd5d7f9870cbd Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Thu, 29 Jun 2023 19:42:47 -0500 Subject: [PATCH 38/41] [data views] Field editor endpoint versioning and schema validation (#159626) ## Summary - Move field preview to internal route - Add versioning to route - Endpoint is called with version - Response schema validation Closes https://github.com/elastic/kibana/issues/159158 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../field_editor_flyout_preview.helpers.ts | 4 +- .../common/constants.ts | 4 +- .../data_view_field_editor/public/lib/api.ts | 8 +++- .../server/routes/field_preview.ts | 39 ++++++++++++++----- .../apis/data_view_field_editor/constants.ts | 9 ----- .../data_view_field_editor/field_preview.ts | 21 +++++++--- 6 files changed, 56 insertions(+), 29 deletions(-) delete mode 100644 test/api_integration/apis/data_view_field_editor/constants.ts diff --git a/src/plugins/data_view_field_editor/__jest__/client_integration/field_editor_flyout_preview.helpers.ts b/src/plugins/data_view_field_editor/__jest__/client_integration/field_editor_flyout_preview.helpers.ts index 31d243fa699d9..fe5df81b927f2 100644 --- a/src/plugins/data_view_field_editor/__jest__/client_integration/field_editor_flyout_preview.helpers.ts +++ b/src/plugins/data_view_field_editor/__jest__/client_integration/field_editor_flyout_preview.helpers.ts @@ -9,7 +9,7 @@ import { act } from 'react-dom/test-utils'; import { ReactWrapper } from 'enzyme'; import { registerTestBed, TestBed } from '@kbn/test-jest-helpers'; -import { API_BASE_PATH } from '../../common/constants'; +import { FIELD_PREVIEW_PATH } from '../../common/constants'; import { Context } from '../../public/components/field_editor_context'; import { FieldEditorFlyoutContent, @@ -118,7 +118,7 @@ const getActions = (testBed: TestBed) => { while (i >= 0) { const request = server.requests[i]; - if (request.method === 'POST' && request.url === `${API_BASE_PATH}/field_preview`) { + if (request.method === 'POST' && request.url === FIELD_PREVIEW_PATH) { return { ...request, requestBody: JSON.parse(JSON.parse(request.requestBody).body), diff --git a/src/plugins/data_view_field_editor/common/constants.ts b/src/plugins/data_view_field_editor/common/constants.ts index ecd6b1ddd408b..a22aab4bc22e5 100644 --- a/src/plugins/data_view_field_editor/common/constants.ts +++ b/src/plugins/data_view_field_editor/common/constants.ts @@ -6,4 +6,6 @@ * Side Public License, v 1. */ -export const API_BASE_PATH = '/api/index_pattern_field_editor'; +export const FIELD_PREVIEW_PATH = '/internal/data_view_field_editor/field_preview'; + +export const INITIAL_REST_VERSION = '1'; diff --git a/src/plugins/data_view_field_editor/public/lib/api.ts b/src/plugins/data_view_field_editor/public/lib/api.ts index 2dcfbff45e981..07cca82f9baf8 100644 --- a/src/plugins/data_view_field_editor/public/lib/api.ts +++ b/src/plugins/data_view_field_editor/public/lib/api.ts @@ -6,7 +6,10 @@ * Side Public License, v 1. */ import { HttpSetup } from '@kbn/core/public'; -import { API_BASE_PATH } from '../../common/constants'; +import { + FIELD_PREVIEW_PATH as path, + INITIAL_REST_VERSION as version, +} from '../../common/constants'; import { sendRequest } from '../shared_imports'; import { PainlessExecuteContext, FieldPreviewResponse } from '../components/preview'; @@ -23,7 +26,7 @@ export const initApi = (httpClient: HttpSetup) => { document: Record; }) => { return sendRequest(httpClient, { - path: `${API_BASE_PATH}/field_preview`, + path, method: 'post', body: { index, @@ -31,6 +34,7 @@ export const initApi = (httpClient: HttpSetup) => { script, document, }, + version, }); }; diff --git a/src/plugins/data_view_field_editor/server/routes/field_preview.ts b/src/plugins/data_view_field_editor/server/routes/field_preview.ts index bee5fc0dbd1be..7d2525b273a86 100644 --- a/src/plugins/data_view_field_editor/server/routes/field_preview.ts +++ b/src/plugins/data_view_field_editor/server/routes/field_preview.ts @@ -7,9 +7,7 @@ */ import { schema } from '@kbn/config-schema'; -import { HttpResponsePayload } from '@kbn/core/server'; - -import { API_BASE_PATH } from '../../common/constants'; +import { FIELD_PREVIEW_PATH as path } from '../../common/constants'; import { RouteDependencies } from '../types'; import { handleEsError } from '../shared_imports'; @@ -29,12 +27,35 @@ const bodySchema = schema.object({ document: schema.object({}, { unknowns: 'allow' }), }); +const geoPoint = schema.object({ + type: schema.literal('Point'), + coordinates: schema.arrayOf(schema.number(), { minSize: 2, maxSize: 2 }), +}); + +const valueSchema = schema.oneOf([schema.boolean(), schema.number(), schema.string(), geoPoint]); + export const registerFieldPreviewRoute = ({ router }: RouteDependencies): void => { - router.post( + router.versioned.post({ path, access: 'internal' }).addVersion( { - path: `${API_BASE_PATH}/field_preview`, + version: '1', validate: { - body: bodySchema, + request: { + body: bodySchema, + }, + response: { + 200: { + body: schema.object({ + values: schema.oneOf([ + // composite field + schema.recordOf(schema.string(), schema.arrayOf(valueSchema)), + // primitive field + schema.arrayOf(valueSchema), + ]), + error: schema.maybe(schema.object({}, { unknowns: 'allow' })), + status: schema.maybe(schema.number()), + }), + }, + }, }, }, async (ctx, req, res) => { @@ -51,17 +72,17 @@ export const registerFieldPreviewRoute = ({ router }: RouteDependencies): void = try { // client types need to be update to support this request format + // when it does, supply response types // @ts-expect-error const { result } = await client.asCurrentUser.scriptsPainlessExecute(body); - const fieldValue = result as HttpResponsePayload; - return res.ok({ body: { values: fieldValue } }); + return res.ok({ body: { values: result } }); } catch (error) { // Assume invalid painless script was submitted // Return 200 with error object const handleCustomError = () => { return res.ok({ - body: { values: [], ...error.body }, + body: { values: [], error: error.body?.error, status: error.statusCode }, }); }; diff --git a/test/api_integration/apis/data_view_field_editor/constants.ts b/test/api_integration/apis/data_view_field_editor/constants.ts deleted file mode 100644 index ecd6b1ddd408b..0000000000000 --- a/test/api_integration/apis/data_view_field_editor/constants.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -export const API_BASE_PATH = '/api/index_pattern_field_editor'; diff --git a/test/api_integration/apis/data_view_field_editor/field_preview.ts b/test/api_integration/apis/data_view_field_editor/field_preview.ts index d1943983683f1..28b66fc53d60c 100644 --- a/test/api_integration/apis/data_view_field_editor/field_preview.ts +++ b/test/api_integration/apis/data_view_field_editor/field_preview.ts @@ -8,9 +8,13 @@ import expect from '@kbn/expect'; +import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; import { getErrorCodeFromErrorReason } from '@kbn/data-view-field-editor-plugin/public/lib/runtime_field_validation'; +import { + FIELD_PREVIEW_PATH, + INITIAL_REST_VERSION, +} from '@kbn/data-view-field-editor-plugin/common/constants'; import { FtrProviderContext } from '../../ftr_provider_context'; -import { API_BASE_PATH } from './constants'; const INDEX_NAME = 'api-integration-test-field-preview'; @@ -83,7 +87,8 @@ export default function ({ getService }: FtrProviderContext) { }; const { body: response } = await supertest - .post(`${API_BASE_PATH}/field_preview`) + .post(FIELD_PREVIEW_PATH) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_REST_VERSION) .send(payload) .set('kbn-xsrf', 'xxx') .expect(200); @@ -96,7 +101,8 @@ export default function ({ getService }: FtrProviderContext) { describe('payload validation', () => { it('should require a script', async () => { await supertest - .post(`${API_BASE_PATH}/field_preview`) + .post(FIELD_PREVIEW_PATH) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_REST_VERSION) .send({ context: 'keyword_field', index: INDEX_NAME, @@ -107,7 +113,8 @@ export default function ({ getService }: FtrProviderContext) { it('should require a context', async () => { await supertest - .post(`${API_BASE_PATH}/field_preview`) + .post(FIELD_PREVIEW_PATH) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_REST_VERSION) .send({ script: { source: 'emit("hello")' }, index: INDEX_NAME, @@ -118,7 +125,8 @@ export default function ({ getService }: FtrProviderContext) { it('should require an index', async () => { await supertest - .post(`${API_BASE_PATH}/field_preview`) + .post(FIELD_PREVIEW_PATH) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_REST_VERSION) .send({ script: { source: 'emit("hello")' }, context: 'keyword_field', @@ -134,7 +142,8 @@ export default function ({ getService }: FtrProviderContext) { // If this test fail we'll need to update the "getErrorCodeFromErrorReason()" handler it('should detect a script casting error', async () => { const { body: response } = await supertest - .post(`${API_BASE_PATH}/field_preview`) + .post(FIELD_PREVIEW_PATH) + .set(ELASTIC_HTTP_VERSION_HEADER, INITIAL_REST_VERSION) .send({ script: { source: 'emit(123)' }, // We send a long but the type is "keyword" context: 'keyword_field', From b2200e4d33bd50f8072c62101b62464f6bf9ba17 Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Thu, 29 Jun 2023 21:20:05 -0500 Subject: [PATCH 39/41] [data views / runtime fields] Fix runtime fields with dots in the name (#160458) ## Summary Composite runtime fields with dots in the name were broken, now fixed. To verify - 1. Create runtime field with dot in the name 2. Make a composite runtime field with subfields with dot in the name 3. Go back and edit those fields Closes: https://github.com/elastic/kibana/issues/159648 ### Release note Fixes creation and editing of composite runtime fields with dots in the names. --- .../field_editor/composite_editor.tsx | 2 +- .../components/field_editor/field_editor.tsx | 4 +- .../components/field_editor/lib.test.ts | 42 ++++++++++++------- .../public/components/field_editor/lib.ts | 7 +++- .../preview/field_preview_context.tsx | 7 ++++ .../public/open_editor.tsx | 9 +--- .../management/_runtime_fields_composite.ts | 4 +- 7 files changed, 44 insertions(+), 31 deletions(-) diff --git a/src/plugins/data_view_field_editor/public/components/field_editor/composite_editor.tsx b/src/plugins/data_view_field_editor/public/components/field_editor/composite_editor.tsx index 49761aa122844..53682b17a813e 100644 --- a/src/plugins/data_view_field_editor/public/components/field_editor/composite_editor.tsx +++ b/src/plugins/data_view_field_editor/public/components/field_editor/composite_editor.tsx @@ -71,7 +71,7 @@ export const CompositeEditor = ({ onReset }: CompositeEditorProps) => { {Object.entries(subfields).map(([key, itemValue], idx) => { return ( -
    +
    diff --git a/src/plugins/data_view_field_editor/public/components/field_editor/field_editor.tsx b/src/plugins/data_view_field_editor/public/components/field_editor/field_editor.tsx index 11da38cb2a1e7..cf46d444b2953 100644 --- a/src/plugins/data_view_field_editor/public/components/field_editor/field_editor.tsx +++ b/src/plugins/data_view_field_editor/public/components/field_editor/field_editor.tsx @@ -168,7 +168,7 @@ const FieldEditorComponent = ({ field, onChange, onFormModifiedChange }: Props) useEffect(() => { const existingCompositeField = !!Object.keys(subfields$.getValue() || {}).length; - const changes$ = getFieldPreviewChanges(fieldPreview$); + const changes$ = getFieldPreviewChanges(fieldPreview$, updatedName); const subChanges = changes$.subscribe((previewFields) => { const fields = subfields$.getValue(); @@ -199,7 +199,7 @@ const FieldEditorComponent = ({ field, onChange, onFormModifiedChange }: Props) return () => { subChanges.unsubscribe(); }; - }, [form, fieldPreview$, subfields$]); + }, [form, fieldPreview$, subfields$, updatedName]); useEffect(() => { if (onChange) { diff --git a/src/plugins/data_view_field_editor/public/components/field_editor/lib.test.ts b/src/plugins/data_view_field_editor/public/components/field_editor/lib.test.ts index d8a836ea583a3..755c48bf9708b 100644 --- a/src/plugins/data_view_field_editor/public/components/field_editor/lib.test.ts +++ b/src/plugins/data_view_field_editor/public/components/field_editor/lib.test.ts @@ -10,58 +10,68 @@ import { getFieldPreviewChanges } from './lib'; import { BehaviorSubject } from 'rxjs'; import { ChangeType, FieldPreview } from '../preview/types'; +// note that periods and overlap in parent and subfield names are to test for corner cases +const parentName = 'composite.field'; +const subfieldName = 'composite.field.a'; + +const appendParentName = (key: string) => `${parentName}.${key}`; + describe('getFieldPreviewChanges', () => { it('should return new keys', (done) => { const subj = new BehaviorSubject(undefined); - const changes = getFieldPreviewChanges(subj); + const changes = getFieldPreviewChanges(subj, parentName); changes.subscribe((change) => { - expect(change).toStrictEqual({ hello: { changeType: ChangeType.UPSERT, type: 'keyword' } }); + expect(change).toStrictEqual({ + [subfieldName]: { changeType: ChangeType.UPSERT, type: 'keyword' }, + }); done(); }); subj.next([]); - subj.next([{ key: 'hello', value: 'world', type: 'keyword' }]); + subj.next([{ key: appendParentName(subfieldName), value: 'world', type: 'keyword' }]); }); it('should return updated type', (done) => { const subj = new BehaviorSubject(undefined); - const changes = getFieldPreviewChanges(subj); + const changes = getFieldPreviewChanges(subj, parentName); changes.subscribe((change) => { - expect(change).toStrictEqual({ hello: { changeType: ChangeType.UPSERT, type: 'long' } }); + expect(change).toStrictEqual({ + [subfieldName]: { changeType: ChangeType.UPSERT, type: 'long' }, + }); done(); }); - subj.next([{ key: 'hello', value: 'world', type: 'keyword' }]); - subj.next([{ key: 'hello', value: 1, type: 'long' }]); + subj.next([{ key: appendParentName(subfieldName), value: 'world', type: 'keyword' }]); + subj.next([{ key: appendParentName(subfieldName), value: 1, type: 'long' }]); }); it('should remove keys', (done) => { const subj = new BehaviorSubject(undefined); - const changes = getFieldPreviewChanges(subj); + const changes = getFieldPreviewChanges(subj, parentName); changes.subscribe((change) => { - expect(change).toStrictEqual({ hello: { changeType: ChangeType.DELETE } }); + expect(change).toStrictEqual({ [subfieldName]: { changeType: ChangeType.DELETE } }); done(); }); - subj.next([{ key: 'hello', value: 'world', type: 'keyword' }]); + subj.next([{ key: appendParentName(subfieldName), value: 'world', type: 'keyword' }]); subj.next([]); }); it('should add, update, and remove keys in a single change', (done) => { const subj = new BehaviorSubject(undefined); - const changes = getFieldPreviewChanges(subj); + const changes = getFieldPreviewChanges(subj, parentName); changes.subscribe((change) => { expect(change).toStrictEqual({ - hello: { changeType: ChangeType.UPSERT, type: 'long' }, + [subfieldName]: { changeType: ChangeType.UPSERT, type: 'long' }, hello2: { changeType: ChangeType.DELETE }, hello3: { changeType: ChangeType.UPSERT, type: 'keyword' }, }); done(); }); subj.next([ - { key: 'hello', value: 'world', type: 'keyword' }, - { key: 'hello2', value: 'world', type: 'keyword' }, + { key: appendParentName(subfieldName), value: 'world', type: 'keyword' }, + { key: appendParentName('hello2'), value: 'world', type: 'keyword' }, ]); subj.next([ - { key: 'hello', value: 1, type: 'long' }, - { key: 'hello3', value: 'world', type: 'keyword' }, + { key: appendParentName(subfieldName), value: 1, type: 'long' }, + { key: appendParentName('hello3'), value: 'world', type: 'keyword' }, ]); }); }); diff --git a/src/plugins/data_view_field_editor/public/components/field_editor/lib.ts b/src/plugins/data_view_field_editor/public/components/field_editor/lib.ts index bad8554100790..4defeab116047 100644 --- a/src/plugins/data_view_field_editor/public/components/field_editor/lib.ts +++ b/src/plugins/data_view_field_editor/public/components/field_editor/lib.ts @@ -88,13 +88,16 @@ export const getNameFieldConfig = ( export const valueToComboBoxOption = (value: string) => RUNTIME_FIELD_OPTIONS_PRIMITIVE.find(({ value: optionValue }) => optionValue === value); -export const getFieldPreviewChanges = (subject: BehaviorSubject) => +export const getFieldPreviewChanges = ( + subject: BehaviorSubject, + parentName: string +) => subject.pipe( filter((preview) => preview !== undefined), map((items) => // reduce the fields to make diffing easier items!.map((item) => { - const key = item.key.slice(item.key.search('\\.') + 1); + const key = item.key.substring(`${parentName}.`.length); return { name: key, type: item.type! }; }) ), diff --git a/src/plugins/data_view_field_editor/public/components/preview/field_preview_context.tsx b/src/plugins/data_view_field_editor/public/components/preview/field_preview_context.tsx index b9f8d9d5f1dc6..1f00658493f2c 100644 --- a/src/plugins/data_view_field_editor/public/components/preview/field_preview_context.tsx +++ b/src/plugins/data_view_field_editor/public/components/preview/field_preview_context.tsx @@ -115,6 +115,13 @@ export const FieldPreviewProvider: FunctionComponent<{ controller: PreviewContro return; } + // Not sure why this is getting called without currentDocIndex + // would be much better to prevent this function from being called at all + if (!currentDocIndex) { + controller.setIsLoadingPreview(false); + return; + } + controller.setLastExecutePainlessRequestParams({ type, script: script?.source, diff --git a/src/plugins/data_view_field_editor/public/open_editor.tsx b/src/plugins/data_view_field_editor/public/open_editor.tsx index 865f5f498d727..ccc130ba04361 100644 --- a/src/plugins/data_view_field_editor/public/open_editor.tsx +++ b/src/plugins/data_view_field_editor/public/open_editor.tsx @@ -153,14 +153,7 @@ export const getFieldEditorOpener = let field: Field | undefined; if (dataViewField) { - if (isExistingRuntimeField && dataViewField.runtimeField!.type === 'composite') { - // Composite runtime subfield - const [compositeName] = fieldNameToEdit!.split('.'); - field = { - name: compositeName, - ...dataView.getRuntimeField(compositeName)!, - }; - } else if (isExistingRuntimeField) { + if (isExistingRuntimeField) { // Runtime field field = { name: fieldNameToEdit!, diff --git a/test/functional/apps/management/_runtime_fields_composite.ts b/test/functional/apps/management/_runtime_fields_composite.ts index 47ea33e443d22..52a160e4c2fbc 100644 --- a/test/functional/apps/management/_runtime_fields_composite.ts +++ b/test/functional/apps/management/_runtime_fields_composite.ts @@ -32,7 +32,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('create composite runtime field', function describeIndexTests() { // Starting with '@' to sort toward start of field list - const fieldName = '@composite_test'; + const fieldName = '@composite.test'; it('should create runtime field', async function () { await PageObjects.settings.navigateTo(); @@ -42,7 +42,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await log.debug('add runtime field'); await PageObjects.settings.addCompositeRuntimeField( fieldName, - "emit('a','hello world')", + "emit('a.a','hello world')", false, 1 ); From e2ae42f66f03dbe9e37c7821eb50012718b97d8e Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Fri, 30 Jun 2023 00:57:16 -0400 Subject: [PATCH 40/41] [api-docs] 2023-06-30 Daily api_docs build (#160955) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/384 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.devdocs.json | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.devdocs.json | 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.devdocs.json | 14 +- 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 | 29 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 4 +- api_docs/deprecations_by_plugin.mdx | 11 +- 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.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.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.devdocs.json | 32 ++ api_docs/fleet.mdx | 4 +- 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 +- .../kbn_alerts_as_data_utils.devdocs.json | 24 +- 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.devdocs.json | 393 ++++++++++-------- api_docs/kbn_apm_synthtrace.mdx | 4 +- .../kbn_apm_synthtrace_client.devdocs.json | 295 +++++++++++++ api_docs/kbn_apm_synthtrace_client.mdx | 4 +- 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 | 16 +- 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 +- ...ore_saved_objects_api_browser.devdocs.json | 8 - .../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_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_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_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_generate_csv_types.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_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.devdocs.json | 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 +- ...curitysolution_list_constants.devdocs.json | 32 -- .../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_unified_field_list.devdocs.json | 3 +- api_docs/kbn_unified_field_list.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.devdocs.json | 10 +- api_docs/observability.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.devdocs.json | 2 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 10 +- 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.devdocs.json | 12 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.devdocs.json | 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.devdocs.json | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.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 +- .../visualization_ui_components.devdocs.json | 12 +- api_docs/visualization_ui_components.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 560 files changed, 1190 insertions(+), 813 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index a1da070edb22b..e4059a185d67f 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-29 +date: 2023-06-30 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 07b1d48312ccf..c66454a419263 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-29 +date: 2023-06-30 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 f3b3f887619d6..79d62cf6f7adf 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index 654b229217d5c..bff251325f574 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -4084,7 +4084,7 @@ "label": "PublicAlert", "description": [], "signature": [ - "{ getContext: () => Context; getState: () => State; getUuid: () => string; hasContext: () => boolean; replaceState: (state: State) => ", + "{ getContext: () => Context; getState: () => State; getUuid: () => string; getStart: () => string | null; hasContext: () => boolean; replaceState: (state: State) => ", "Alert", "; scheduleActions: (actionGroup: ActionGroupIds, context?: Context) => ", "Alert", diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 7195c0507c4e5..b0c136fe1f236 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-29 +date: 2023-06-30 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 39452dc4e1764..add26e70b0bfc 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -1015,7 +1015,7 @@ "IndicesGetResponse", "; ingestPipelines: ", "IngestGetPipelineResponse", - "; }; apmIndexTemplates: { name: string; isNonStandard: boolean; exists: boolean; }[]; fleetPackageInfo: { isInstalled: boolean; version?: string | undefined; }; kibanaVersion: string; elasticsearchVersion: string; apmEvents: ", + "; }; apmIndices: Readonly<{ error: string; onboarding: string; span: string; transaction: string; metric: string; }>; apmIndexTemplates: { name: string; isNonStandard: boolean; exists: boolean; }[]; fleetPackageInfo: { isInstalled: boolean; version?: string | undefined; }; kibanaVersion: string; elasticsearchVersion: string; apmEvents: ", "ApmEvent", "[]; invalidIndices: ", "IndiciesItem", diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 8ab077b6ea07a..9ff7b42cdc6b6 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-29 +date: 2023-06-30 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 d0e2b58160f67..6ce00c0fb8669 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-29 +date: 2023-06-30 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 b2f823a3eca17..fb9c9b73b8ae1 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-29 +date: 2023-06-30 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 5769cd19d2da7..4844ba6bce50a 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-29 +date: 2023-06-30 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 2b6a98d01cdff..c6f7616af2ace 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-29 +date: 2023-06-30 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 9ea79383dbfb9..e3c7e3cea6522 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-29 +date: 2023-06-30 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 23c0d64305254..3425efc509454 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-29 +date: 2023-06-30 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 b57662bfea01e..eb31c684c9d3a 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-29 +date: 2023-06-30 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 353108d1552cc..da6d338953ea6 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-29 +date: 2023-06-30 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 447e377c8db86..e89d26d4633d9 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-29 +date: 2023-06-30 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 5a39402afd4d4..85c3f9decab95 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-29 +date: 2023-06-30 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 008c3b124c2ea..79333feecc9bb 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-29 +date: 2023-06-30 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 20db727eb77c1..fe046ab8337ad 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-29 +date: 2023-06-30 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 b3cf627ce7a7a..a62a0e8209dff 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-29 +date: 2023-06-30 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 f31bd8048a9c3..e04d9ceb461b5 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-29 +date: 2023-06-30 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 cf8615bdd47dd..cb6873c7ab74c 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-29 +date: 2023-06-30 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 4a41bb92721f3..af0579a61f942 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-29 +date: 2023-06-30 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 0d987785cf74a..0af4c903bec62 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-29 +date: 2023-06-30 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 1f704ca4141ba..e360eded64ab8 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-29 +date: 2023-06-30 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 8962e8c9ec7e3..c5ce53d1f8b66 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-29 +date: 2023-06-30 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 8e6281244dc07..6e1ba8e0ec9f5 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -19222,7 +19222,8 @@ "label": "timeSeriesMetric", "description": [], "signature": [ - "\"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined" + "MappingTimeSeriesMetricType", + " | undefined" ], "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false, @@ -23492,7 +23493,9 @@ "section": "def-common.RuntimeFieldSpec", "text": "RuntimeFieldSpec" }, - " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: \"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" + " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: ", + "MappingTimeSeriesMetricType", + " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" ], "path": "src/plugins/data_views/common/fields/data_view_field.ts", "deprecated": false, @@ -23859,7 +23862,8 @@ "\nreturns type of TSDB metric or undefined" ], "signature": [ - "\"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined" + "MappingTimeSeriesMetricType", + " | undefined" ], "path": "src/plugins/data_views/common/fields/data_view_field.ts", "deprecated": false, @@ -28564,7 +28568,9 @@ "section": "def-common.RuntimeFieldSpec", "text": "RuntimeFieldSpec" }, - " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: \"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" + " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: ", + "MappingTimeSeriesMetricType", + " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 7f9e4ca34c679..9ecf8580ab762 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-29 +date: 2023-06-30 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 d3f27e5901400..ce841f73084a6 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-29 +date: 2023-06-30 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 ecf1e9e998a4d..5eddd6d09b2ac 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-29 +date: 2023-06-30 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 adfb2095b4570..2159e38e38468 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-29 +date: 2023-06-30 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 15f973c7a1fae..d69b6df539cd2 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-29 +date: 2023-06-30 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 1f31ce885db61..154f8b8cf5da3 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-29 +date: 2023-06-30 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 5c6ad72018d7b..c88fad679a3bb 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -2645,7 +2645,9 @@ "section": "def-common.RuntimeFieldSpec", "text": "RuntimeFieldSpec" }, - " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: \"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" + " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: ", + "MappingTimeSeriesMetricType", + " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" ], "path": "src/plugins/data_views/common/fields/data_view_field.ts", "deprecated": false, @@ -3012,7 +3014,8 @@ "\nreturns type of TSDB metric or undefined" ], "signature": [ - "\"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined" + "MappingTimeSeriesMetricType", + " | undefined" ], "path": "src/plugins/data_views/common/fields/data_view_field.ts", "deprecated": false, @@ -8146,7 +8149,9 @@ "section": "def-common.RuntimeFieldSpec", "text": "RuntimeFieldSpec" }, - " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: \"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" + " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: ", + "MappingTimeSeriesMetricType", + " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, @@ -13511,7 +13516,8 @@ "label": "timeSeriesMetric", "description": [], "signature": [ - "\"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined" + "MappingTimeSeriesMetricType", + " | undefined" ], "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false, @@ -14063,7 +14069,9 @@ "section": "def-common.RuntimeFieldSpec", "text": "RuntimeFieldSpec" }, - " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: \"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" + " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: ", + "MappingTimeSeriesMetricType", + " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, @@ -18310,7 +18318,9 @@ "section": "def-common.RuntimeFieldSpec", "text": "RuntimeFieldSpec" }, - " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: \"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" + " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: ", + "MappingTimeSeriesMetricType", + " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" ], "path": "src/plugins/data_views/common/fields/data_view_field.ts", "deprecated": false, @@ -18677,7 +18687,8 @@ "\nreturns type of TSDB metric or undefined" ], "signature": [ - "\"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined" + "MappingTimeSeriesMetricType", + " | undefined" ], "path": "src/plugins/data_views/common/fields/data_view_field.ts", "deprecated": false, @@ -26108,7 +26119,9 @@ "section": "def-common.RuntimeFieldSpec", "text": "RuntimeFieldSpec" }, - " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: \"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" + " | undefined; fixedInterval?: string[] | undefined; timeZone?: string[] | undefined; timeSeriesDimension?: boolean | undefined; timeSeriesMetric?: ", + "MappingTimeSeriesMetricType", + " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; }" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 58f61c14bf566..44bd02caec702 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-29 +date: 2023-06-30 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 7360b4a7a3495..b06578e5105c3 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-29 +date: 2023-06-30 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 692cc52b03a6b..aabc7eaaaa889 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -28,7 +28,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, observability, ml, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, uptime, ux, kibanaOverview | - | | | encryptedSavedObjects, actions, data, ml, securitySolution, logstash, cloudChat | - | | | actions, ml, savedObjectsTagging, enterpriseSearch | - | -| | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, embeddable, presentationUtil, visualizations, aiops, ml, dataVisualizer, dashboardEnhanced, graph, synthetics, uptime, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, embeddable, presentationUtil, visualizations, aiops, ml, dataVisualizer, dashboardEnhanced, graph, uptime, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | | | @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 | - | | | observability, @kbn/securitysolution-data-table, securitySolution | - | | | @kbn/core-saved-objects-api-browser, @kbn/core, savedObjects, savedObjectsManagement, visualizations, savedObjectsTagging, eventAnnotation, lens, graph, dashboard, savedObjectsTaggingOss, kibanaUtils, expressions, dataViews, data, embeddable, controls, uiActionsEnhanced, cases, maps, canvas, dashboardEnhanced, globalSearchProviders, infra | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index ab575f17c8320..fc10a044869ca 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -1162,16 +1162,16 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes) | - | | | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject) | - | | | [timelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts#:~:text=convertToMultiNamespaceTypeVersion), [notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts#:~:text=convertToMultiNamespaceTypeVersion), [pinned_events.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts#:~:text=convertToMultiNamespaceTypeVersion), [legacy_saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | -| | [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [receiver.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [receiver.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID)+ 34 more | - | +| | [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [receiver.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [receiver.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID)+ 32 more | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME) | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID)+ 32 more | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID)+ 30 more | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME) | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/host_isolation_exceptions_api_client.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/host_isolation_exceptions_api_client.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/host_isolation_exceptions_api_client.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [manifest_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [manifest_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID)+ 14 more | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/host_isolation_exceptions_api_client.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/host_isolation_exceptions_api_client.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/host_isolation_exceptions_api_client.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [manifest_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [manifest_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID)+ 12 more | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME) | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION) | - | -| | [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [blocklists_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/services/blocklists_api_client.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [blocklists_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/services/blocklists_api_client.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [blocklists_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/services/blocklists_api_client.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [manifest_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [manifest_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID)+ 14 more | - | +| | [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [blocklists_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/services/blocklists_api_client.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [blocklists_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/services/blocklists_api_client.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [blocklists_api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/services/blocklists_api_client.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [manifest_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [manifest_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID)+ 12 more | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME) | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION) | - | @@ -1219,7 +1219,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [message_utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/tls_rule/message_utils.ts#:~:text=alertFactory), [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/common.ts#:~:text=alertFactory), [tls_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts#:~:text=alertFactory), [monitor_status_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts#:~:text=alertFactory) | - | | | [stderr_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx#:~:text=indexPatternId) | - | | | [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks) | - | -| | [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/common/types/synthetics_monitor.ts#:~:text=SimpleSavedObject), [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/common/types/synthetics_monitor.ts#:~:text=SimpleSavedObject) | - | | | [actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/actions.ts#:~:text=SavedObject), [actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/actions.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/api.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/api.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/api.ts#:~:text=SavedObject), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/index.ts#:~:text=SavedObject), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/global_params/index.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts#:~:text=SavedObject), [effects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts#:~:text=SavedObject)+ 1 more | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index fed6bc8c35de5..ed9272a818d87 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 79d7f23f793c2..28a1d98a08541 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-29 +date: 2023-06-30 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 82272a9232647..eaa7e9dc5f378 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-29 +date: 2023-06-30 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 1f96a76b1de7b..df3a1d0c882f6 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-29 +date: 2023-06-30 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 59c6338232b1a..ba0c81fe3d532 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-29 +date: 2023-06-30 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 9ba7f489bcdd7..f1d93502a483e 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-29 +date: 2023-06-30 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 7e95a494bcb9f..0e59e0fb9a7aa 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-29 +date: 2023-06-30 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 30420fcc64ffb..337857d40fed0 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-29 +date: 2023-06-30 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 91f1bcabdd0a0..07ccebc213360 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-29 +date: 2023-06-30 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 cf850d771071c..c04f0a59a21bb 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-29 +date: 2023-06-30 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 ee8daa7c28d70..399b025106548 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-29 +date: 2023-06-30 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 b0b7e716e0ab0..f91cb517feb63 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.devdocs.json b/api_docs/event_log.devdocs.json index 90f4b4576a4ea..90cda1aa61629 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; 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)[]" + "(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; kind?: 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; 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; 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" + "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; kind?: 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; 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; 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" + "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; kind?: 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; 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 b272e6404239e..3f92b5605985c 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-29 +date: 2023-06-30 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 5857fd09d86e1..f4500594093aa 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-29 +date: 2023-06-30 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 59211daf9ce62..e5740a7369505 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-29 +date: 2023-06-30 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 3bc730a9e4893..7def1b81a5a4f 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-29 +date: 2023-06-30 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 3463d7af2a130..bbcc3e7b554f2 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-29 +date: 2023-06-30 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 f8e05974a9478..67dddb60149ec 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-29 +date: 2023-06-30 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 a2ef936ae118d..83a31df66a811 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-29 +date: 2023-06-30 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 7248f6fc40b5c..58dc2b1d88475 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-29 +date: 2023-06-30 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 32bf6dec9a954..0c4232609f3f0 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-29 +date: 2023-06-30 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 735f206184745..813bc296286a2 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-29 +date: 2023-06-30 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 a6ecf5edc1fca..f20a7524b60b5 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-29 +date: 2023-06-30 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 7b46fc258260f..f9b6ba47e7433 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-29 +date: 2023-06-30 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 22fac286351ea..ef603320e6d0f 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-29 +date: 2023-06-30 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 744debcdd0e15..2ba509c870682 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-29 +date: 2023-06-30 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 55634342d2230..3b89a347dbf57 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-29 +date: 2023-06-30 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 be889b60bbcd1..fc95731a8a0b6 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-29 +date: 2023-06-30 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 ec6f8de661cd5..127c2d2822f6f 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-29 +date: 2023-06-30 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 8aaf5ff189a9c..687978bccc8ad 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-29 +date: 2023-06-30 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 06741e4c8b19e..ad991578c2ab9 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-29 +date: 2023-06-30 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 b29da44ae940d..4e809c08a8c47 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-29 +date: 2023-06-30 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 3699a572c77c8..8a3d40d0b9191 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-29 +date: 2023-06-30 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 e87538240f3b0..758c30cd14e5a 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -5425,6 +5425,38 @@ ], "returnComment": [] }, + { + "parentPluginId": "fleet", + "id": "def-server.ArtifactsClientInterface.bulkDeleteArtifacts", + "type": "Function", + "tags": [], + "label": "bulkDeleteArtifacts", + "description": [], + "signature": [ + "(ids: string[]) => Promise" + ], + "path": "x-pack/plugins/fleet/server/services/artifacts/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-server.ArtifactsClientInterface.bulkDeleteArtifacts.$1", + "type": "Array", + "tags": [], + "label": "ids", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/fleet/server/services/artifacts/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "fleet", "id": "def-server.ArtifactsClientInterface.listArtifacts", diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 963f3d4a95893..4cb5430104b85 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1189 | 3 | 1073 | 36 | +| 1191 | 3 | 1075 | 36 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index a1c0d7c62e066..e5ea2aeecd2a7 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-29 +date: 2023-06-30 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 7fe0a6a1a1e01..e53b84ea30c45 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-29 +date: 2023-06-30 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 1ff99627fb173..c006f13e44f54 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-29 +date: 2023-06-30 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 02bf848eaaae1..37874756ae600 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-29 +date: 2023-06-30 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 9d9ec72209072..5e7e7abc13378 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-29 +date: 2023-06-30 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 d194cdad16a6f..9ba60a392c0cb 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-29 +date: 2023-06-30 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 d01e1383ccb5b..a95d95b2f1ae8 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-29 +date: 2023-06-30 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 0bccc5e2ced0a..46015cb7fdf45 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-29 +date: 2023-06-30 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 e7ab80d59ad7e..d95fbef2f92ed 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-29 +date: 2023-06-30 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 dae801ed5d6db..97e504fba24a2 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-29 +date: 2023-06-30 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 ef2420abb38fb..ec58624389c64 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-29 +date: 2023-06-30 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 eea17be199b02..284ab00535c41 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-29 +date: 2023-06-30 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 37a7cdbca0155..726cb14e740ff 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-29 +date: 2023-06-30 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.devdocs.json b/api_docs/kbn_alerts_as_data_utils.devdocs.json index fcd9482b5c0c7..9849eec4e5d5b 100644 --- a/api_docs/kbn_alerts_as_data_utils.devdocs.json +++ b/api_docs/kbn_alerts_as_data_utils.devdocs.json @@ -148,7 +148,7 @@ "label": "AADAlert", "description": [], "signature": [ - "({ '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; }) | ({} & { agent?: { name?: string | undefined; } | undefined; error?: { grouping_key?: string | undefined; } | undefined; kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; processor?: { event?: string | undefined; } | undefined; service?: { environment?: string | undefined; language?: { name?: string | undefined; } | undefined; name?: string | undefined; } | undefined; transaction?: { name?: string | undefined; type?: string | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }) | ({} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }) | ({} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }) | ({} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; slo?: { id?: string | undefined; revision?: string | number | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }) | ({} & { agent?: { name?: string | undefined; } | undefined; anomaly?: { bucket_span?: { minutes?: string | undefined; } | undefined; start?: string | undefined; } | undefined; error?: { message?: string | undefined; } | undefined; kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; monitor?: { id?: string | undefined; name?: string | undefined; type?: string | undefined; } | undefined; observer?: { geo?: { name?: string | undefined; } | undefined; } | undefined; tls?: { server?: { hash?: { sha256?: string | undefined; } | undefined; x509?: { issuer?: { common_name?: string | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: { common_name?: string | undefined; } | undefined; } | undefined; } | undefined; } | undefined; url?: { full?: string | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }) | ({ '@timestamp': string; kibana: { alert: { ancestors: { depth: string | number; id: string; index: string; type: string; }[]; depth: string | number; instance: { id: string; }; original_event: { action: string; category: string[]; created: string; dataset: string; id: string; ingested: string; kind: string; module: string; original: string; outcome: string; provider: string; sequence: string | number; type: string[]; }; original_time: string; rule: { category: string; consumer: string; false_positives: string[]; max_signals: (string | number)[]; name: string; producer: string; revision: string | number; rule_type_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique: { id: string; name: string; reference: string; subtechnique: { id: string; name: string; reference: string; }; }; }; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; ancestors?: { rule?: string | undefined; } | undefined; building_block_type?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; group?: { id?: string | undefined; index?: number | undefined; } | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; new_terms?: string[] | undefined; original_event?: { agent_id_status?: string | undefined; code?: string | undefined; duration?: string | undefined; end?: string | undefined; hash?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; url?: string | undefined; } | undefined; reason?: string | undefined; risk_score?: number | undefined; rule?: { author?: string | undefined; building_block_type?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; execution?: { uuid?: string | undefined; } | undefined; from?: string | undefined; immutable?: string[] | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; parameters?: unknown; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; tags?: string[] | undefined; timeline_id?: string[] | undefined; timeline_title?: string[] | undefined; timestamp_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; start?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; threshold_result?: { count?: string | number | undefined; from?: string | undefined; terms?: { field?: string | undefined; value?: string | undefined; }[] | undefined; } | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_reason?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; workflow_user?: string | undefined; } | undefined; version?: string | undefined; } | undefined; signal?: { ancestors?: { depth?: unknown; id?: unknown; index?: unknown; type?: unknown; } | undefined; depth?: unknown; group?: { id?: unknown; index?: unknown; } | undefined; original_event?: { action?: unknown; category?: unknown; code?: unknown; created?: unknown; dataset?: unknown; duration?: unknown; end?: unknown; hash?: unknown; id?: unknown; kind?: unknown; module?: unknown; outcome?: unknown; provider?: unknown; reason?: unknown; risk_score?: unknown; risk_score_norm?: unknown; sequence?: unknown; severity?: unknown; start?: unknown; timezone?: unknown; type?: unknown; } | undefined; original_time?: unknown; reason?: unknown; rule?: { author?: unknown; building_block_type?: unknown; created_at?: unknown; created_by?: unknown; description?: unknown; enabled?: unknown; false_positives?: unknown; from?: unknown; id?: unknown; immutable?: unknown; interval?: unknown; license?: unknown; max_signals?: unknown; name?: unknown; note?: unknown; references?: unknown; risk_score?: unknown; rule_id?: unknown; rule_name_override?: unknown; severity?: unknown; tags?: unknown; threat?: { framework?: unknown; tactic?: { id?: unknown; name?: unknown; reference?: unknown; } | undefined; technique?: { id?: unknown; name?: unknown; reference?: unknown; subtechnique?: { id?: unknown; name?: unknown; reference?: unknown; } | undefined; } | undefined; } | undefined; timeline_id?: unknown; timeline_title?: unknown; timestamp_override?: unknown; to?: unknown; type?: unknown; updated_at?: unknown; updated_by?: unknown; version?: unknown; } | undefined; status?: unknown; threshold_result?: { cardinality?: { field?: unknown; value?: unknown; } | undefined; count?: unknown; from?: unknown; terms?: { field?: unknown; value?: unknown; } | undefined; } | undefined; } | undefined; tags?: string[] | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; })" + "({ '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; }) | ({} & { agent?: { name?: string | undefined; } | undefined; error?: { grouping_key?: string | undefined; } | undefined; kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; processor?: { event?: string | undefined; } | undefined; service?: { environment?: string | undefined; language?: { name?: string | undefined; } | undefined; name?: string | undefined; } | undefined; transaction?: { name?: string | undefined; type?: string | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }) | ({} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }) | ({} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }) | ({} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; slo?: { id?: string | undefined; revision?: string | number | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }) | ({} & { agent?: { name?: string | undefined; } | undefined; anomaly?: { bucket_span?: { minutes?: string | undefined; } | undefined; start?: string | undefined; } | undefined; error?: { message?: string | undefined; } | undefined; kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; monitor?: { id?: string | undefined; name?: string | undefined; type?: string | undefined; } | undefined; observer?: { geo?: { name?: string | undefined; } | undefined; } | undefined; tls?: { server?: { hash?: { sha256?: string | undefined; } | undefined; x509?: { issuer?: { common_name?: string | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: { common_name?: string | undefined; } | undefined; } | undefined; } | undefined; } | undefined; url?: { full?: string | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }) | ({ '@timestamp': string; kibana: { alert: { ancestors: { depth: string | number; id: string; index: string; type: string; }[]; depth: string | number; instance: { id: string; }; original_event: { action: string; category: string[]; created: string; dataset: string; id: string; ingested: string; kind: string; module: string; original: string; outcome: string; provider: string; sequence: string | number; type: string[]; }; original_time: string; rule: { category: string; consumer: string; false_positives: string[]; max_signals: (string | number)[]; name: string; producer: string; revision: string | number; rule_type_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique: { id: string; name: string; reference: string; subtechnique: { id: string; name: string; reference: string; }; }; }; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; ancestors?: { rule?: string | undefined; } | undefined; building_block_type?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; group?: { id?: string | undefined; index?: number | undefined; } | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; new_terms?: string[] | undefined; original_event?: { agent_id_status?: string | undefined; code?: string | undefined; duration?: string | undefined; end?: string | undefined; hash?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; url?: string | undefined; } | undefined; reason?: string | undefined; risk_score?: number | undefined; rule?: { author?: string | undefined; building_block_type?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; execution?: { uuid?: string | undefined; } | undefined; from?: string | undefined; immutable?: string[] | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; parameters?: unknown; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; tags?: string[] | undefined; timeline_id?: string[] | undefined; timeline_title?: string[] | undefined; timestamp_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; start?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; threshold_result?: { count?: string | number | undefined; from?: string | undefined; terms?: { field?: string | undefined; value?: string | undefined; }[] | undefined; } | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_reason?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; workflow_user?: string | undefined; } | undefined; version?: string | undefined; } | undefined; signal?: { ancestors?: { depth?: unknown; id?: unknown; index?: unknown; type?: unknown; } | undefined; depth?: unknown; group?: { id?: unknown; index?: unknown; } | undefined; original_event?: { action?: unknown; category?: unknown; code?: unknown; created?: unknown; dataset?: unknown; duration?: unknown; end?: unknown; hash?: unknown; id?: unknown; kind?: unknown; module?: unknown; outcome?: unknown; provider?: unknown; reason?: unknown; risk_score?: unknown; risk_score_norm?: unknown; sequence?: unknown; severity?: unknown; start?: unknown; timezone?: unknown; type?: unknown; } | undefined; original_time?: unknown; reason?: unknown; rule?: { author?: unknown; building_block_type?: unknown; created_at?: unknown; created_by?: unknown; description?: unknown; enabled?: unknown; false_positives?: unknown; from?: unknown; id?: unknown; immutable?: unknown; interval?: unknown; license?: unknown; max_signals?: unknown; name?: unknown; note?: unknown; references?: unknown; risk_score?: unknown; rule_id?: unknown; rule_name_override?: unknown; severity?: unknown; tags?: unknown; threat?: { framework?: unknown; tactic?: { id?: unknown; name?: unknown; reference?: unknown; } | undefined; technique?: { id?: unknown; name?: unknown; reference?: unknown; subtechnique?: { id?: unknown; name?: unknown; reference?: unknown; } | undefined; } | undefined; } | undefined; timeline_id?: unknown; timeline_title?: unknown; timestamp_override?: unknown; to?: unknown; type?: unknown; updated_at?: unknown; updated_by?: unknown; version?: unknown; } | undefined; status?: unknown; threshold_result?: { cardinality?: { field?: unknown; value?: unknown; } | undefined; count?: unknown; from?: unknown; terms?: { field?: unknown; value?: unknown; } | undefined; } | undefined; } | undefined; tags?: string[] | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; })" ], "path": "packages/kbn-alerts-as-data-utils/src/schemas/index.ts", "deprecated": false, @@ -163,7 +163,7 @@ "label": "Alert", "description": [], "signature": [ - "{ '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; }" + "{ '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-alerts-as-data-utils/src/schemas/generated/alert_schema.ts", "deprecated": false, @@ -178,7 +178,7 @@ "label": "AlertFieldMap", "description": [], "signature": [ - "{ readonly \"kibana.alert.action_group\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.case_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.flapping\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.flapping_history\": { readonly type: \"boolean\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.maintenance_window_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.instance.id\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.last_detected\": { readonly type: \"date\"; readonly required: false; readonly array: false; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.category\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.consumer\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.execution.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.name\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.producer\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.revision\": { readonly type: \"long\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.rule_type_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: true; }; readonly \"@timestamp\": { readonly type: \"date\"; readonly required: true; readonly array: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }" + "{ readonly \"kibana.alert.action_group\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.case_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.flapping\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.flapping_history\": { readonly type: \"boolean\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.maintenance_window_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.instance.id\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.last_detected\": { readonly type: \"date\"; readonly required: false; readonly array: false; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.category\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.consumer\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.execution.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.name\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.producer\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.revision\": { readonly type: \"long\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.rule_type_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"event.action\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"event.kind\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: true; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"@timestamp\": { readonly type: \"date\"; readonly required: true; readonly array: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }" ], "path": "packages/kbn-alerts-as-data-utils/src/field_maps/alert_field_map.ts", "deprecated": false, @@ -229,7 +229,7 @@ "label": "LegacyAlertFieldMap", "description": [], "signature": [ - "{ readonly \"kibana.alert.risk_score\": { readonly type: \"float\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.author\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.description\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.enabled\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.from\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.interval\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.license\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.note\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.references\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.rule_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_name_override\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.to\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.severity\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.docs_count\": { readonly type: \"long\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.end\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.terms.field\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.suppression.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.terms.value\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.system_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_user\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"ecs.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"event.action\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"event.kind\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; }" + "{ readonly \"kibana.alert.risk_score\": { readonly type: \"float\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.author\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.description\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.enabled\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.from\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.interval\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.license\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.note\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.references\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.rule_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_name_override\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.to\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.severity\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.docs_count\": { readonly type: \"long\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.end\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.terms.field\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.suppression.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.terms.value\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.system_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_user\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"ecs.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }" ], "path": "packages/kbn-alerts-as-data-utils/src/field_maps/legacy_alert_field_map.ts", "deprecated": false, @@ -244,7 +244,7 @@ "label": "ObservabilityApmAlert", "description": [], "signature": [ - "{} & { agent?: { name?: string | undefined; } | undefined; error?: { grouping_key?: string | undefined; } | undefined; kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; processor?: { event?: string | undefined; } | undefined; service?: { environment?: string | undefined; language?: { name?: string | undefined; } | undefined; name?: string | undefined; } | undefined; transaction?: { name?: string | undefined; type?: string | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }" + "{} & { agent?: { name?: string | undefined; } | undefined; error?: { grouping_key?: string | undefined; } | undefined; kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; processor?: { event?: string | undefined; } | undefined; service?: { environment?: string | undefined; language?: { name?: string | undefined; } | undefined; name?: string | undefined; } | undefined; transaction?: { name?: string | undefined; type?: string | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }" ], "path": "packages/kbn-alerts-as-data-utils/src/schemas/generated/observability_apm_schema.ts", "deprecated": false, @@ -259,7 +259,7 @@ "label": "ObservabilityLogsAlert", "description": [], "signature": [ - "{} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }" + "{} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }" ], "path": "packages/kbn-alerts-as-data-utils/src/schemas/generated/observability_logs_schema.ts", "deprecated": false, @@ -274,7 +274,7 @@ "label": "ObservabilityMetricsAlert", "description": [], "signature": [ - "{} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }" + "{} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }" ], "path": "packages/kbn-alerts-as-data-utils/src/schemas/generated/observability_metrics_schema.ts", "deprecated": false, @@ -289,7 +289,7 @@ "label": "ObservabilitySloAlert", "description": [], "signature": [ - "{} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; slo?: { id?: string | undefined; revision?: string | number | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }" + "{} & { kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; slo?: { id?: string | undefined; revision?: string | number | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }" ], "path": "packages/kbn-alerts-as-data-utils/src/schemas/generated/observability_slo_schema.ts", "deprecated": false, @@ -304,7 +304,7 @@ "label": "ObservabilityUptimeAlert", "description": [], "signature": [ - "{} & { agent?: { name?: string | undefined; } | undefined; anomaly?: { bucket_span?: { minutes?: string | undefined; } | undefined; start?: string | undefined; } | undefined; error?: { message?: string | undefined; } | undefined; kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; monitor?: { id?: string | undefined; name?: string | undefined; type?: string | undefined; } | undefined; observer?: { geo?: { name?: string | undefined; } | undefined; } | undefined; tls?: { server?: { hash?: { sha256?: string | undefined; } | undefined; x509?: { issuer?: { common_name?: string | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: { common_name?: string | undefined; } | undefined; } | undefined; } | undefined; } | undefined; url?: { full?: string | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }" + "{} & { agent?: { name?: string | undefined; } | undefined; anomaly?: { bucket_span?: { minutes?: string | undefined; } | undefined; start?: string | undefined; } | undefined; error?: { message?: string | undefined; } | undefined; kibana?: { alert?: { evaluation?: { threshold?: string | number | undefined; value?: string | number | undefined; values?: (string | number)[] | undefined; } | undefined; } | undefined; } | undefined; monitor?: { id?: string | undefined; name?: string | undefined; type?: string | undefined; } | undefined; observer?: { geo?: { name?: string | undefined; } | undefined; } | undefined; tls?: { server?: { hash?: { sha256?: string | undefined; } | undefined; x509?: { issuer?: { common_name?: string | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: { common_name?: string | undefined; } | undefined; } | undefined; } | undefined; } | undefined; url?: { full?: string | undefined; } | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }" ], "path": "packages/kbn-alerts-as-data-utils/src/schemas/generated/observability_uptime_schema.ts", "deprecated": false, @@ -319,7 +319,7 @@ "label": "SecurityAlert", "description": [], "signature": [ - "{ '@timestamp': string; kibana: { alert: { ancestors: { depth: string | number; id: string; index: string; type: string; }[]; depth: string | number; instance: { id: string; }; original_event: { action: string; category: string[]; created: string; dataset: string; id: string; ingested: string; kind: string; module: string; original: string; outcome: string; provider: string; sequence: string | number; type: string[]; }; original_time: string; rule: { category: string; consumer: string; false_positives: string[]; max_signals: (string | number)[]; name: string; producer: string; revision: string | number; rule_type_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique: { id: string; name: string; reference: string; subtechnique: { id: string; name: string; reference: string; }; }; }; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; ancestors?: { rule?: string | undefined; } | undefined; building_block_type?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; group?: { id?: string | undefined; index?: number | undefined; } | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; new_terms?: string[] | undefined; original_event?: { agent_id_status?: string | undefined; code?: string | undefined; duration?: string | undefined; end?: string | undefined; hash?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; url?: string | undefined; } | undefined; reason?: string | undefined; risk_score?: number | undefined; rule?: { author?: string | undefined; building_block_type?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; execution?: { uuid?: string | undefined; } | undefined; from?: string | undefined; immutable?: string[] | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; parameters?: unknown; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; tags?: string[] | undefined; timeline_id?: string[] | undefined; timeline_title?: string[] | undefined; timestamp_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; start?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; threshold_result?: { count?: string | number | undefined; from?: string | undefined; terms?: { field?: string | undefined; value?: string | undefined; }[] | undefined; } | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_reason?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; workflow_user?: string | undefined; } | undefined; version?: string | undefined; } | undefined; signal?: { ancestors?: { depth?: unknown; id?: unknown; index?: unknown; type?: unknown; } | undefined; depth?: unknown; group?: { id?: unknown; index?: unknown; } | undefined; original_event?: { action?: unknown; category?: unknown; code?: unknown; created?: unknown; dataset?: unknown; duration?: unknown; end?: unknown; hash?: unknown; id?: unknown; kind?: unknown; module?: unknown; outcome?: unknown; provider?: unknown; reason?: unknown; risk_score?: unknown; risk_score_norm?: unknown; sequence?: unknown; severity?: unknown; start?: unknown; timezone?: unknown; type?: unknown; } | undefined; original_time?: unknown; reason?: unknown; rule?: { author?: unknown; building_block_type?: unknown; created_at?: unknown; created_by?: unknown; description?: unknown; enabled?: unknown; false_positives?: unknown; from?: unknown; id?: unknown; immutable?: unknown; interval?: unknown; license?: unknown; max_signals?: unknown; name?: unknown; note?: unknown; references?: unknown; risk_score?: unknown; rule_id?: unknown; rule_name_override?: unknown; severity?: unknown; tags?: unknown; threat?: { framework?: unknown; tactic?: { id?: unknown; name?: unknown; reference?: unknown; } | undefined; technique?: { id?: unknown; name?: unknown; reference?: unknown; subtechnique?: { id?: unknown; name?: unknown; reference?: unknown; } | undefined; } | undefined; } | undefined; timeline_id?: unknown; timeline_title?: unknown; timestamp_override?: unknown; to?: unknown; type?: unknown; updated_at?: unknown; updated_by?: unknown; version?: unknown; } | undefined; status?: unknown; threshold_result?: { cardinality?: { field?: unknown; value?: unknown; } | undefined; count?: unknown; from?: unknown; terms?: { field?: unknown; value?: unknown; } | undefined; } | undefined; } | undefined; tags?: string[] | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; tags?: string[] | undefined; }" + "{ '@timestamp': string; kibana: { alert: { ancestors: { depth: string | number; id: string; index: string; type: string; }[]; depth: string | number; instance: { id: string; }; original_event: { action: string; category: string[]; created: string; dataset: string; id: string; ingested: string; kind: string; module: string; original: string; outcome: string; provider: string; sequence: string | number; type: string[]; }; original_time: string; rule: { category: string; consumer: string; false_positives: string[]; max_signals: (string | number)[]; name: string; producer: string; revision: string | number; rule_type_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique: { id: string; name: string; reference: string; subtechnique: { id: string; name: string; reference: string; }; }; }; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { ecs?: { version?: string | undefined; } | undefined; event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; ancestors?: { rule?: string | undefined; } | undefined; building_block_type?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; group?: { id?: string | undefined; index?: number | undefined; } | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; new_terms?: string[] | undefined; original_event?: { agent_id_status?: string | undefined; code?: string | undefined; duration?: string | undefined; end?: string | undefined; hash?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; url?: string | undefined; } | undefined; reason?: string | undefined; risk_score?: number | undefined; rule?: { author?: string | undefined; building_block_type?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; execution?: { uuid?: string | undefined; } | undefined; from?: string | undefined; immutable?: string[] | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; parameters?: unknown; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; tags?: string[] | undefined; timeline_id?: string[] | undefined; timeline_title?: string[] | undefined; timestamp_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; start?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; threshold_result?: { count?: string | number | undefined; from?: string | undefined; terms?: { field?: string | undefined; value?: string | undefined; }[] | undefined; } | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_reason?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; workflow_user?: string | undefined; } | undefined; version?: string | undefined; } | undefined; signal?: { ancestors?: { depth?: unknown; id?: unknown; index?: unknown; type?: unknown; } | undefined; depth?: unknown; group?: { id?: unknown; index?: unknown; } | undefined; original_event?: { action?: unknown; category?: unknown; code?: unknown; created?: unknown; dataset?: unknown; duration?: unknown; end?: unknown; hash?: unknown; id?: unknown; kind?: unknown; module?: unknown; outcome?: unknown; provider?: unknown; reason?: unknown; risk_score?: unknown; risk_score_norm?: unknown; sequence?: unknown; severity?: unknown; start?: unknown; timezone?: unknown; type?: unknown; } | undefined; original_time?: unknown; reason?: unknown; rule?: { author?: unknown; building_block_type?: unknown; created_at?: unknown; created_by?: unknown; description?: unknown; enabled?: unknown; false_positives?: unknown; from?: unknown; id?: unknown; immutable?: unknown; interval?: unknown; license?: unknown; max_signals?: unknown; name?: unknown; note?: unknown; references?: unknown; risk_score?: unknown; rule_id?: unknown; rule_name_override?: unknown; severity?: unknown; tags?: unknown; threat?: { framework?: unknown; tactic?: { id?: unknown; name?: unknown; reference?: unknown; } | undefined; technique?: { id?: unknown; name?: unknown; reference?: unknown; subtechnique?: { id?: unknown; name?: unknown; reference?: unknown; } | undefined; } | undefined; } | undefined; timeline_id?: unknown; timeline_title?: unknown; timestamp_override?: unknown; to?: unknown; type?: unknown; updated_at?: unknown; updated_by?: unknown; version?: unknown; } | undefined; status?: unknown; threshold_result?: { cardinality?: { field?: unknown; value?: unknown; } | undefined; count?: unknown; from?: unknown; terms?: { field?: unknown; value?: unknown; } | undefined; } | undefined; } | undefined; tags?: string[] | undefined; } & { '@timestamp': string; kibana: { alert: { instance: { id: string; }; rule: { category: string; consumer: string; name: string; producer: string; revision: string | number; rule_type_id: string; uuid: string; }; status: string; uuid: string; }; space_ids: string[]; }; } & { event?: { action?: string | undefined; kind?: string | undefined; } | undefined; kibana?: { alert?: { action_group?: string | undefined; case_ids?: string[] | undefined; duration?: { us?: string | number | undefined; } | undefined; end?: string | undefined; flapping?: boolean | undefined; flapping_history?: boolean[] | undefined; last_detected?: string | undefined; maintenance_window_ids?: string[] | undefined; reason?: string | undefined; rule?: { execution?: { uuid?: string | undefined; } | undefined; parameters?: unknown; tags?: string[] | undefined; } | undefined; start?: string | undefined; time_range?: { gte?: string | undefined; lte?: string | undefined; } | undefined; url?: string | undefined; workflow_status?: string | undefined; workflow_tags?: string[] | undefined; } | undefined; version?: string | undefined; } | undefined; tags?: string[] | undefined; } & { '@timestamp': string; ecs: { version: string; }; } & { agent?: { build?: { original?: string | undefined; } | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; client?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; cloud?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; origin?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; target?: { account?: { id?: string | undefined; name?: string | undefined; } | undefined; availability_zone?: string | undefined; instance?: { id?: string | undefined; name?: string | undefined; } | undefined; machine?: { type?: string | undefined; } | undefined; project?: { id?: string | undefined; name?: string | undefined; } | undefined; provider?: string | undefined; region?: string | undefined; service?: { name?: string | undefined; } | undefined; } | undefined; } | undefined; container?: { cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; id?: string | undefined; image?: { hash?: { all?: string[] | undefined; } | undefined; name?: string | undefined; tag?: string[] | undefined; } | undefined; memory?: { usage?: string | number | undefined; } | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; } | undefined; } | undefined; runtime?: string | undefined; } | undefined; destination?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; device?: { id?: string | undefined; manufacturer?: string | undefined; model?: { identifier?: string | undefined; name?: string | undefined; } | undefined; } | undefined; dll?: { code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; name?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; } | undefined; dns?: { answers?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; header_flags?: string[] | undefined; id?: string | undefined; op_code?: string | undefined; question?: { class?: string | undefined; name?: string | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; type?: string | undefined; } | undefined; resolved_ip?: string[] | undefined; response_code?: string | undefined; type?: string | undefined; } | undefined; email?: { attachments?: { file?: { extension?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; mime_type?: string | undefined; name?: string | undefined; size?: string | number | undefined; } | undefined; }[] | undefined; bcc?: { address?: string[] | undefined; } | undefined; cc?: { address?: string[] | undefined; } | undefined; content_type?: string | undefined; delivery_timestamp?: string | undefined; direction?: string | undefined; from?: { address?: string[] | undefined; } | undefined; local_id?: string | undefined; message_id?: string | undefined; origination_timestamp?: string | undefined; reply_to?: { address?: string[] | undefined; } | undefined; sender?: { address?: string | undefined; } | undefined; subject?: string | undefined; to?: { address?: string[] | undefined; } | undefined; x_mailer?: string | undefined; } | undefined; error?: { code?: string | undefined; id?: string | undefined; message?: string | undefined; stack_trace?: string | undefined; type?: string | undefined; } | undefined; event?: { action?: string | undefined; agent_id_status?: string | undefined; category?: string[] | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; duration?: string | number | undefined; end?: string | undefined; hash?: string | undefined; id?: string | undefined; ingested?: string | undefined; kind?: string | undefined; module?: string | undefined; original?: string | undefined; outcome?: string | undefined; provider?: string | undefined; reason?: string | undefined; reference?: string | undefined; risk_score?: number | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; severity?: string | number | undefined; start?: string | undefined; timezone?: string | undefined; type?: string[] | undefined; url?: string | undefined; } | undefined; faas?: { coldstart?: boolean | undefined; execution?: string | undefined; id?: string | undefined; name?: string | undefined; version?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; host?: { architecture?: string | undefined; boot?: { id?: string | undefined; } | undefined; cpu?: { usage?: string | number | undefined; } | undefined; disk?: { read?: { bytes?: string | number | undefined; } | undefined; write?: { bytes?: string | number | undefined; } | undefined; } | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; id?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; network?: { egress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; ingress?: { bytes?: string | number | undefined; packets?: string | number | undefined; } | undefined; } | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; pid_ns_ino?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; type?: string | undefined; uptime?: string | number | undefined; } | undefined; http?: { request?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; id?: string | undefined; method?: string | undefined; mime_type?: string | undefined; referrer?: string | undefined; } | undefined; response?: { body?: { bytes?: string | number | undefined; content?: string | undefined; } | undefined; bytes?: string | number | undefined; mime_type?: string | undefined; status_code?: string | number | undefined; } | undefined; version?: string | undefined; } | undefined; log?: { file?: { path?: string | undefined; } | undefined; level?: string | undefined; logger?: string | undefined; origin?: { file?: { line?: string | number | undefined; name?: string | undefined; } | undefined; function?: string | undefined; } | undefined; } | undefined; message?: string | undefined; network?: { application?: string | undefined; bytes?: string | number | undefined; community_id?: string | undefined; direction?: string | undefined; forwarded_ip?: string | undefined; iana_number?: string | undefined; name?: string | undefined; packets?: string | number | undefined; protocol?: string | undefined; transport?: string | undefined; type?: string | undefined; vlan?: { id?: string | undefined; name?: string | undefined; } | undefined; } | undefined; observer?: { geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; hostname?: string | undefined; ip?: string[] | undefined; mac?: string[] | undefined; name?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; product?: string | undefined; serial_number?: string | undefined; type?: string | undefined; vendor?: string | undefined; version?: string | undefined; } | undefined; orchestrator?: { api_version?: string | undefined; cluster?: { id?: string | undefined; name?: string | undefined; url?: string | undefined; version?: string | undefined; } | undefined; namespace?: string | undefined; organization?: string | undefined; resource?: { id?: string | undefined; ip?: string[] | undefined; name?: string | undefined; parent?: { type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; type?: string | undefined; } | undefined; organization?: { id?: string | undefined; name?: string | undefined; } | undefined; package?: { architecture?: string | undefined; build_version?: string | undefined; checksum?: string | undefined; description?: string | undefined; install_scope?: string | undefined; installed?: string | undefined; license?: string | undefined; name?: string | undefined; path?: string | undefined; reference?: string | undefined; size?: string | number | undefined; type?: string | undefined; version?: string | undefined; } | undefined; process?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; entry_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; attested_groups?: { name?: string | undefined; } | undefined; attested_user?: { id?: string | undefined; name?: string | undefined; } | undefined; command_line?: string | undefined; entity_id?: string | undefined; entry_meta?: { source?: { ip?: string | undefined; } | undefined; type?: string | undefined; } | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; env_vars?: string[] | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { args?: string[] | undefined; args_count?: string | number | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; command_line?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; end?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; exit_code?: string | number | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; group_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; pgid?: string | number | undefined; pid?: string | number | undefined; previous?: { args?: string[] | undefined; args_count?: string | number | undefined; executable?: string | undefined; } | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; session_leader?: { args?: string[] | undefined; args_count?: string | number | undefined; command_line?: string | undefined; entity_id?: string | undefined; executable?: string | undefined; group?: { id?: string | undefined; name?: string | undefined; } | undefined; interactive?: boolean | undefined; name?: string | undefined; parent?: { entity_id?: string | undefined; pid?: string | number | undefined; session_leader?: { entity_id?: string | undefined; pid?: string | number | undefined; start?: string | undefined; } | undefined; start?: string | undefined; } | undefined; pid?: string | number | undefined; real_group?: { id?: string | undefined; name?: string | undefined; } | undefined; real_user?: { id?: string | undefined; name?: string | undefined; } | undefined; same_as_process?: boolean | undefined; saved_group?: { id?: string | undefined; name?: string | undefined; } | undefined; saved_user?: { id?: string | undefined; name?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; start?: string | undefined; supplemental_groups?: { id?: string | undefined; name?: string | undefined; } | undefined; thread?: { id?: string | number | undefined; name?: string | undefined; } | undefined; title?: string | undefined; uptime?: string | number | undefined; user?: { id?: string | undefined; name?: string | undefined; } | undefined; working_directory?: string | undefined; } | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; related?: { hash?: string[] | undefined; hosts?: string[] | undefined; ip?: string[] | undefined; user?: string[] | undefined; } | undefined; rule?: { author?: string[] | undefined; category?: string | undefined; description?: string | undefined; id?: string | undefined; license?: string | undefined; name?: string | undefined; reference?: string | undefined; ruleset?: string | undefined; uuid?: string | undefined; version?: string | undefined; } | undefined; server?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; service?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; origin?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; state?: string | undefined; target?: { address?: string | undefined; environment?: string | undefined; ephemeral_id?: string | undefined; id?: string | undefined; name?: string | undefined; node?: { name?: string | undefined; role?: string | undefined; roles?: string[] | undefined; } | undefined; state?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; type?: string | undefined; version?: string | undefined; } | undefined; source?: { address?: string | undefined; as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; bytes?: string | number | undefined; domain?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; mac?: string | undefined; nat?: { ip?: string | undefined; port?: string | number | undefined; } | undefined; packets?: string | number | undefined; port?: string | number | undefined; registered_domain?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; user?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; span?: { id?: string | undefined; } | undefined; tags?: string[] | undefined; threat?: { enrichments?: { matched?: { atomic?: string | undefined; field?: string | undefined; id?: string | undefined; index?: string | undefined; occurred?: string | undefined; type?: string | undefined; } | undefined; }[] | undefined; feed?: { dashboard_id?: string | undefined; description?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; framework?: string | undefined; group?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; reference?: string | undefined; } | undefined; indicator?: { as?: { number?: string | number | undefined; organization?: { name?: string | undefined; } | undefined; } | undefined; confidence?: string | undefined; description?: string | undefined; email?: { address?: string | undefined; } | undefined; file?: { accessed?: string | undefined; attributes?: string[] | undefined; code_signature?: { digest_algorithm?: string | undefined; exists?: boolean | undefined; signing_id?: string | undefined; status?: string | undefined; subject_name?: string | undefined; team_id?: string | undefined; timestamp?: string | undefined; trusted?: boolean | undefined; valid?: boolean | undefined; } | undefined; created?: string | undefined; ctime?: string | undefined; device?: string | undefined; directory?: string | undefined; drive_letter?: string | undefined; elf?: { architecture?: string | undefined; byte_order?: string | undefined; cpu_type?: string | undefined; creation_date?: string | undefined; exports?: unknown[] | undefined; header?: { abi_version?: string | undefined; class?: string | undefined; data?: string | undefined; entrypoint?: string | number | undefined; object_version?: string | undefined; os_abi?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; imports?: unknown[] | undefined; sections?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; segments?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; shared_libraries?: string[] | undefined; telfhash?: string | undefined; } | undefined; extension?: string | undefined; fork_name?: string | undefined; gid?: string | undefined; group?: string | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; sha384?: string | undefined; sha512?: string | undefined; ssdeep?: string | undefined; tlsh?: string | undefined; } | undefined; inode?: string | undefined; mime_type?: string | undefined; mode?: string | undefined; mtime?: string | undefined; name?: string | undefined; owner?: string | undefined; path?: string | undefined; pe?: { architecture?: string | undefined; company?: string | undefined; description?: string | undefined; file_version?: string | undefined; imphash?: string | undefined; original_file_name?: string | undefined; pehash?: string | undefined; product?: string | undefined; } | undefined; size?: string | number | undefined; target_path?: string | undefined; type?: string | undefined; uid?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; first_seen?: string | undefined; geo?: { city_name?: string | undefined; continent_code?: string | undefined; continent_name?: string | undefined; country_iso_code?: string | undefined; country_name?: string | undefined; location?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; name?: string | undefined; postal_code?: string | undefined; region_iso_code?: string | undefined; region_name?: string | undefined; timezone?: string | undefined; } | undefined; ip?: string | undefined; last_seen?: string | undefined; marking?: { tlp?: string | undefined; tlp_version?: string | undefined; } | undefined; modified_at?: string | undefined; port?: string | number | undefined; provider?: string | undefined; reference?: string | undefined; registry?: { data?: { bytes?: string | undefined; strings?: string[] | undefined; type?: string | undefined; } | undefined; hive?: string | undefined; key?: string | undefined; path?: string | undefined; value?: string | undefined; } | undefined; scanner_stats?: string | number | undefined; sightings?: string | number | undefined; type?: string | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; software?: { alias?: string[] | undefined; id?: string | undefined; name?: string | undefined; platforms?: string[] | undefined; reference?: string | undefined; type?: string | undefined; } | undefined; tactic?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; technique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; subtechnique?: { id?: string[] | undefined; name?: string[] | undefined; reference?: string[] | undefined; } | undefined; } | undefined; } | undefined; tls?: { cipher?: string | undefined; client?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; server_name?: string | undefined; subject?: string | undefined; supported_ciphers?: string[] | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; curve?: string | undefined; established?: boolean | undefined; next_protocol?: string | undefined; resumed?: boolean | undefined; server?: { certificate?: string | undefined; certificate_chain?: string[] | undefined; hash?: { md5?: string | undefined; sha1?: string | undefined; sha256?: string | undefined; } | undefined; issuer?: string | undefined; ja3s?: string | undefined; not_after?: string | undefined; not_before?: string | undefined; subject?: string | undefined; x509?: { alternative_names?: string[] | undefined; issuer?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; not_after?: string | undefined; not_before?: string | undefined; public_key_algorithm?: string | undefined; public_key_curve?: string | undefined; public_key_exponent?: string | number | undefined; public_key_size?: string | number | undefined; serial_number?: string | undefined; signature_algorithm?: string | undefined; subject?: { common_name?: string[] | undefined; country?: string[] | undefined; distinguished_name?: string | undefined; locality?: string[] | undefined; organization?: string[] | undefined; organizational_unit?: string[] | undefined; state_or_province?: string[] | undefined; } | undefined; version_number?: string | undefined; } | undefined; } | undefined; version?: string | undefined; version_protocol?: string | undefined; } | undefined; trace?: { id?: string | undefined; } | undefined; transaction?: { id?: string | undefined; } | undefined; url?: { domain?: string | undefined; extension?: string | undefined; fragment?: string | undefined; full?: string | undefined; original?: string | undefined; password?: string | undefined; path?: string | undefined; port?: string | number | undefined; query?: string | undefined; registered_domain?: string | undefined; scheme?: string | undefined; subdomain?: string | undefined; top_level_domain?: string | undefined; username?: string | undefined; } | undefined; user?: { changes?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; domain?: string | undefined; effective?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; risk?: { calculated_level?: string | undefined; calculated_score?: number | undefined; calculated_score_norm?: number | undefined; static_level?: string | undefined; static_score?: number | undefined; static_score_norm?: number | undefined; } | undefined; roles?: string[] | undefined; target?: { domain?: string | undefined; email?: string | undefined; full_name?: string | undefined; group?: { domain?: string | undefined; id?: string | undefined; name?: string | undefined; } | undefined; hash?: string | undefined; id?: string | undefined; name?: string | undefined; roles?: string[] | undefined; } | undefined; } | undefined; user_agent?: { device?: { name?: string | undefined; } | undefined; name?: string | undefined; original?: string | undefined; os?: { family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; type?: string | undefined; version?: string | undefined; } | undefined; version?: string | undefined; } | undefined; vulnerability?: { category?: string[] | undefined; classification?: string | undefined; description?: string | undefined; enumeration?: string | undefined; id?: string | undefined; reference?: string | undefined; report_id?: string | undefined; scanner?: { vendor?: string | undefined; } | undefined; score?: { base?: number | undefined; environmental?: number | undefined; temporal?: number | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; } | undefined; } & {} & { ecs?: { version?: string | undefined; } | undefined; kibana?: { alert?: { risk_score?: number | undefined; rule?: { author?: string | undefined; created_at?: string | undefined; created_by?: string | undefined; description?: string | undefined; enabled?: string | undefined; from?: string | undefined; interval?: string | undefined; license?: string | undefined; note?: string | undefined; references?: string[] | undefined; rule_id?: string | undefined; rule_name_override?: string | undefined; to?: string | undefined; type?: string | undefined; updated_at?: string | undefined; updated_by?: string | undefined; version?: string | undefined; } | undefined; severity?: string | undefined; suppression?: { docs_count?: string | number | undefined; end?: string | undefined; start?: string | undefined; terms?: { field?: string[] | undefined; value?: string[] | undefined; } | undefined; } | undefined; system_status?: string | undefined; workflow_reason?: string | undefined; workflow_user?: string | undefined; } | undefined; } | undefined; }" ], "path": "packages/kbn-alerts-as-data-utils/src/schemas/generated/security_schema.ts", "deprecated": false, @@ -336,7 +336,7 @@ "label": "alertFieldMap", "description": [], "signature": [ - "{ readonly \"kibana.alert.action_group\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.case_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.flapping\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.flapping_history\": { readonly type: \"boolean\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.maintenance_window_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.instance.id\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.last_detected\": { readonly type: \"date\"; readonly required: false; readonly array: false; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.category\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.consumer\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.execution.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.name\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.producer\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.revision\": { readonly type: \"long\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.rule_type_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: true; }; readonly \"@timestamp\": { readonly type: \"date\"; readonly required: true; readonly array: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }" + "{ readonly \"kibana.alert.action_group\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.case_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.duration.us\": { readonly type: \"long\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.end\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.flapping\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.flapping_history\": { readonly type: \"boolean\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.maintenance_window_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.instance.id\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.last_detected\": { readonly type: \"date\"; readonly required: false; readonly array: false; }; readonly \"kibana.alert.reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.category\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.consumer\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.execution.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.name\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.producer\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.revision\": { readonly type: \"long\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.rule_type_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.rule.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.status\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.uuid\": { readonly type: \"keyword\"; readonly array: false; readonly required: true; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"event.action\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"event.kind\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.space_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: true; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"@timestamp\": { readonly type: \"date\"; readonly required: true; readonly array: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }" ], "path": "packages/kbn-alerts-as-data-utils/src/field_maps/alert_field_map.ts", "deprecated": false, @@ -372,7 +372,7 @@ "label": "legacyAlertFieldMap", "description": [], "signature": [ - "{ readonly \"kibana.alert.risk_score\": { readonly type: \"float\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.author\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.description\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.enabled\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.from\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.interval\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.license\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.note\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.references\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.rule_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_name_override\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.to\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.severity\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.docs_count\": { readonly type: \"long\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.end\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.terms.field\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.suppression.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.terms.value\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.system_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_user\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"ecs.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"event.action\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"event.kind\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly tags: { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; }" + "{ readonly \"kibana.alert.risk_score\": { readonly type: \"float\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.author\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.created_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.description\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.enabled\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.from\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.interval\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.license\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.note\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.references\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.rule.rule_id\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.rule_name_override\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.to\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_at\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.updated_by\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.severity\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.docs_count\": { readonly type: \"long\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.end\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.terms.field\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.suppression.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.suppression.terms.value\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.system_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_reason\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_user\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"ecs.version\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; }" ], "path": "packages/kbn-alerts-as-data-utils/src/field_maps/legacy_alert_field_map.ts", "deprecated": false, diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 5c6e06df80c9e..95ccd9d032110 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-29 +date: 2023-06-30 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 0fcbb5334253f..a7589efb2149e 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-29 +date: 2023-06-30 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 beec6712dd343..e9892d94dfaa1 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-29 +date: 2023-06-30 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 e75a9d7ffc587..287ebd767d02b 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-29 +date: 2023-06-30 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 1518113e71bee..f2ace21d05cb0 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-29 +date: 2023-06-30 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 83bb854deb38e..03c8672a9ef25 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-29 +date: 2023-06-30 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 23a683ac05de8..bbc79116ad84d 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-29 +date: 2023-06-30 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 d3d7b7c0c3c08..8121eecbf5b14 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-29 +date: 2023-06-30 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 51dd1866a52d4..30fd472fb29e7 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-29 +date: 2023-06-30 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 cc3a2d8eb34b2..dfd07d3e9a68d 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-29 +date: 2023-06-30 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.devdocs.json b/api_docs/kbn_apm_synthtrace.devdocs.json index f67d17edfab9e..8b54b2e9a2299 100644 --- a/api_docs/kbn_apm_synthtrace.devdocs.json +++ b/api_docs/kbn_apm_synthtrace.devdocs.json @@ -17,6 +17,26 @@ "tags": [], "label": "ApmSynthtraceEsClient", "description": [], + "signature": [ + { + "pluginId": "@kbn/apm-synthtrace", + "scope": "server", + "docId": "kibKbnApmSynthtracePluginApi", + "section": "def-server.ApmSynthtraceEsClient", + "text": "ApmSynthtraceEsClient" + }, + " extends ", + "SynthtraceEsClient", + "<", + { + "pluginId": "@kbn/apm-synthtrace-client", + "scope": "common", + "docId": "kibKbnApmSynthtraceClientPluginApi", + "section": "def-common.ApmFields", + "text": "ApmFields" + }, + ">" + ], "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts", "deprecated": false, "trackAdoption": false, @@ -58,22 +78,6 @@ ], "returnComment": [] }, - { - "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceEsClient.clean", - "type": "Function", - "tags": [], - "label": "clean", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, { "parentPluginId": "@kbn/apm-synthtrace", "id": "def-server.ApmSynthtraceEsClient.updateComponentTemplate", @@ -130,40 +134,6 @@ ], "returnComment": [] }, - { - "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceEsClient.refresh", - "type": "Function", - "tags": [], - "label": "refresh", - "description": [], - "signature": [ - "(dataStreams?: string[]) => Promise<", - "ShardsOperationResponseBase", - ">" - ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceEsClient.refresh.$1", - "type": "Array", - "tags": [], - "label": "dataStreams", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, { "parentPluginId": "@kbn/apm-synthtrace", "id": "def-server.ApmSynthtraceEsClient.getDefaultPipeline", @@ -197,54 +167,87 @@ } ], "returnComment": [] - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.ApmSynthtraceKibanaClient", + "type": "Class", + "tags": [], + "label": "ApmSynthtraceKibanaClient", + "description": [], + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceEsClient.pipeline", + "id": "def-server.ApmSynthtraceKibanaClient.Unnamed", "type": "Function", "tags": [], - "label": "pipeline", + "label": "Constructor", "description": [], "signature": [ - "(cb: (base: ", - "Readable", - ") => NodeJS.WritableStream) => void" + "any" ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts", + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceEsClient.pipeline.$1", - "type": "Function", + "id": "def-server.ApmSynthtraceKibanaClient.Unnamed.$1", + "type": "Object", "tags": [], - "label": "cb", + "label": "options", "description": [], - "signature": [ - "(base: ", - "Readable", - ") => NodeJS.WritableStream" - ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts", + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.ApmSynthtraceKibanaClient.Unnamed.$1.logger", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.ApmSynthtraceKibanaClient.Unnamed.$1.target", + "type": "string", + "tags": [], + "label": "target", + "description": [], + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ], "returnComment": [] }, { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceEsClient.getVersion", + "id": "def-server.ApmSynthtraceKibanaClient.fetchLatestApmPackageVersion", "type": "Function", "tags": [], - "label": "getVersion", + "label": "fetchLatestApmPackageVersion", "description": [], "signature": [ - "() => string" + "() => Promise" ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts", + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -252,65 +255,29 @@ }, { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceEsClient.index", + "id": "def-server.ApmSynthtraceKibanaClient.installApmPackage", "type": "Function", "tags": [], - "label": "index", + "label": "installApmPackage", "description": [], "signature": [ - "(streamOrGenerator: MaybeArray<", - "Readable", - " | ", - { - "pluginId": "@kbn/apm-synthtrace-client", - "scope": "common", - "docId": "kibKbnApmSynthtraceClientPluginApi", - "section": "def-common.SynthtraceGenerator", - "text": "SynthtraceGenerator" - }, - "<", - { - "pluginId": "@kbn/apm-synthtrace-client", - "scope": "common", - "docId": "kibKbnApmSynthtraceClientPluginApi", - "section": "def-common.ApmFields", - "text": "ApmFields" - }, - ">>) => Promise" + "(packageVersion: string) => Promise" ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts", + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceEsClient.index.$1", - "type": "CompoundType", + "id": "def-server.ApmSynthtraceKibanaClient.installApmPackage.$1", + "type": "string", "tags": [], - "label": "streamOrGenerator", + "label": "packageVersion", "description": [], "signature": [ - "MaybeArray<", - "Readable", - " | ", - { - "pluginId": "@kbn/apm-synthtrace-client", - "scope": "common", - "docId": "kibKbnApmSynthtraceClientPluginApi", - "section": "def-common.SynthtraceGenerator", - "text": "SynthtraceGenerator" - }, - "<", - { - "pluginId": "@kbn/apm-synthtrace-client", - "scope": "common", - "docId": "kibKbnApmSynthtraceClientPluginApi", - "section": "def-common.ApmFields", - "text": "ApmFields" - }, - ">>" + "string" ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client/index.ts", + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -323,18 +290,38 @@ }, { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceKibanaClient", + "id": "def-server.AssetsSynthtraceEsClient", "type": "Class", "tags": [], - "label": "ApmSynthtraceKibanaClient", + "label": "AssetsSynthtraceEsClient", "description": [], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "signature": [ + { + "pluginId": "@kbn/apm-synthtrace", + "scope": "server", + "docId": "kibKbnApmSynthtracePluginApi", + "section": "def-server.AssetsSynthtraceEsClient", + "text": "AssetsSynthtraceEsClient" + }, + " extends ", + "SynthtraceEsClient", + "<", + { + "pluginId": "@kbn/apm-synthtrace-client", + "scope": "common", + "docId": "kibKbnApmSynthtraceClientPluginApi", + "section": "def-common.AssetDocument", + "text": "AssetDocument" + }, + ">" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/assets/assets_synthtrace_es_client.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceKibanaClient.Unnamed", + "id": "def-server.AssetsSynthtraceEsClient.Unnamed", "type": "Function", "tags": [], "label": "Constructor", @@ -342,92 +329,168 @@ "signature": [ "any" ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "path": "packages/kbn-apm-synthtrace/src/lib/assets/assets_synthtrace_es_client.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceKibanaClient.Unnamed.$1", - "type": "Object", + "id": "def-server.AssetsSynthtraceEsClient.Unnamed.$1", + "type": "CompoundType", "tags": [], "label": "options", "description": [], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "signature": [ + "{ client: ", + "default", + "; logger: ", + "Logger", + "; } & ", + "AssetsSynthtraceEsClientOptions" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/assets/assets_synthtrace_es_client.ts", "deprecated": false, "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceKibanaClient.Unnamed.$1.logger", - "type": "Object", - "tags": [], - "label": "logger", - "description": [], - "signature": [ - "Logger" - ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceKibanaClient.Unnamed.$1.target", - "type": "string", - "tags": [], - "label": "target", - "description": [], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", - "deprecated": false, - "trackAdoption": false - } - ] + "isRequired": true } ], "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.InfraSynthtraceEsClient", + "type": "Class", + "tags": [], + "label": "InfraSynthtraceEsClient", + "description": [], + "signature": [ + { + "pluginId": "@kbn/apm-synthtrace", + "scope": "server", + "docId": "kibKbnApmSynthtracePluginApi", + "section": "def-server.InfraSynthtraceEsClient", + "text": "InfraSynthtraceEsClient" + }, + " extends ", + "SynthtraceEsClient", + "<", + { + "pluginId": "@kbn/apm-synthtrace-client", + "scope": "common", + "docId": "kibKbnApmSynthtraceClientPluginApi", + "section": "def-common.InfraDocument", + "text": "InfraDocument" }, + ">" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceKibanaClient.fetchLatestApmPackageVersion", + "id": "def-server.InfraSynthtraceEsClient.Unnamed", "type": "Function", "tags": [], - "label": "fetchLatestApmPackageVersion", + "label": "Constructor", "description": [], "signature": [ - "() => Promise" + "any" ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "path": "packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts", "deprecated": false, "trackAdoption": false, - "children": [], + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.InfraSynthtraceEsClient.Unnamed.$1", + "type": "CompoundType", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "{ client: ", + "default", + "; logger: ", + "Logger", + "; } & ", + "InfraSynthtraceEsClientOptions" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.MonitoringSynthtraceEsClient", + "type": "Class", + "tags": [], + "label": "MonitoringSynthtraceEsClient", + "description": [], + "signature": [ + { + "pluginId": "@kbn/apm-synthtrace", + "scope": "server", + "docId": "kibKbnApmSynthtracePluginApi", + "section": "def-server.MonitoringSynthtraceEsClient", + "text": "MonitoringSynthtraceEsClient" }, + " extends ", + "SynthtraceEsClient", + "<", + { + "pluginId": "@kbn/apm-synthtrace-client", + "scope": "common", + "docId": "kibKbnApmSynthtraceClientPluginApi", + "section": "def-common.MonitoringDocument", + "text": "MonitoringDocument" + }, + ">" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/monitoring/monitoring_synthtrace_es_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceKibanaClient.installApmPackage", + "id": "def-server.MonitoringSynthtraceEsClient.Unnamed", "type": "Function", "tags": [], - "label": "installApmPackage", + "label": "Constructor", "description": [], "signature": [ - "(packageVersion: string) => Promise" + "any" ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "path": "packages/kbn-apm-synthtrace/src/lib/monitoring/monitoring_synthtrace_es_client.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/apm-synthtrace", - "id": "def-server.ApmSynthtraceKibanaClient.installApmPackage.$1", - "type": "string", + "id": "def-server.MonitoringSynthtraceEsClient.Unnamed.$1", + "type": "CompoundType", "tags": [], - "label": "packageVersion", + "label": "options", "description": [], "signature": [ - "string" + "{ client: ", + "default", + "; logger: ", + "Logger", + "; } & ", + "MonitoringSynthtraceEsClientOptions" ], - "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "path": "packages/kbn-apm-synthtrace/src/lib/monitoring/monitoring_synthtrace_es_client.ts", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index d4c1c64bb9f2c..6fcab3e9754fc 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for ques | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 27 | 0 | 27 | 3 | +| 28 | 0 | 28 | 7 | ## Server diff --git a/api_docs/kbn_apm_synthtrace_client.devdocs.json b/api_docs/kbn_apm_synthtrace_client.devdocs.json index 47d4c1f343f46..30fe6997fbfda 100644 --- a/api_docs/kbn_apm_synthtrace_client.devdocs.json +++ b/api_docs/kbn_apm_synthtrace_client.devdocs.json @@ -2446,6 +2446,28 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.AssetDocument", + "type": "Type", + "tags": [], + "label": "AssetDocument", + "description": [], + "signature": [ + "AssetKindDocument", + "<\"host\"> | ", + "AssetKindDocument", + "<\"pod\"> | ", + "AssetKindDocument", + "<\"container\"> | ", + "AssetKindDocument", + "<\"service\">" + ], + "path": "packages/kbn-apm-synthtrace-client/src/lib/assets/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/apm-synthtrace-client", "id": "def-common.ESDocumentWithOperation", @@ -2484,6 +2506,42 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.InfraDocument", + "type": "Type", + "tags": [], + "label": "InfraDocument", + "description": [], + "signature": [ + "HostMetricsDocument", + " | ", + "PodMetricsDocument", + " | ", + "ContainerMetricsDocument" + ], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.MonitoringDocument", + "type": "Type", + "tags": [], + "label": "MonitoringDocument", + "description": [], + "signature": [ + "ClusterStatsDocument", + " | ", + "KibanaStatsDocument" + ], + "path": "packages/kbn-apm-synthtrace-client/src/lib/monitoring/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/apm-synthtrace-client", "id": "def-common.SynthtraceESAction", @@ -2657,6 +2715,243 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.infra", + "type": "Object", + "tags": [], + "label": "infra", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.infra.host", + "type": "Function", + "tags": [], + "label": "host", + "description": [], + "signature": [ + "(name: string) => Host" + ], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/index.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.infra.host.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/host.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.infra.pod", + "type": "Function", + "tags": [], + "label": "pod", + "description": [], + "signature": [ + "(uid: string, nodeName: string) => ", + "Pod" + ], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/index.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.infra.pod.$1", + "type": "string", + "tags": [], + "label": "uid", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/pod.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.infra.pod.$2", + "type": "string", + "tags": [], + "label": "nodeName", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/pod.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.infra.container", + "type": "Function", + "tags": [], + "label": "container", + "description": [], + "signature": [ + "(id: string, uid: string, nodeName: string) => ", + "Container" + ], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/index.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.infra.container.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/container.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.infra.container.$2", + "type": "string", + "tags": [], + "label": "uid", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/container.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.infra.container.$3", + "type": "string", + "tags": [], + "label": "nodeName", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/infra/container.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.monitoring", + "type": "Object", + "tags": [], + "label": "monitoring", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/monitoring/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.monitoring.cluster", + "type": "Function", + "tags": [], + "label": "cluster", + "description": [], + "signature": [ + "(name: string) => Cluster" + ], + "path": "packages/kbn-apm-synthtrace-client/src/lib/monitoring/index.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.monitoring.cluster.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/monitoring/cluster.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.monitoring.kibana", + "type": "Function", + "tags": [], + "label": "kibana", + "description": [], + "signature": [ + "(name: string, uuid: string, clusterUuid: string, index?: string) => ", + "Kibana" + ], + "path": "packages/kbn-apm-synthtrace-client/src/lib/monitoring/index.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.monitoring.kibana.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.monitoring.kibana.$2", + "type": "string", + "tags": [], + "label": "uuid", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.monitoring.kibana.$3", + "type": "string", + "tags": [], + "label": "clusterUuid", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.monitoring.kibana.$4", + "type": "string", + "tags": [], + "label": "index", + "description": [], + "path": "packages/kbn-apm-synthtrace-client/src/lib/monitoring/kibana.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "initialIsOpen": false } ] } diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 71b9c1a8e1caf..4e7c5470ccfc6 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for ques | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 159 | 0 | 159 | 17 | +| 180 | 0 | 180 | 26 | ## Common diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 24d78c8aa0159..c8d7ad4403638 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-29 +date: 2023-06-30 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 2415c5187fa63..cf766ee6c3512 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-29 +date: 2023-06-30 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 de87d2c9a0170..4b8dc25f45ac9 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-29 +date: 2023-06-30 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 eb9feb6107025..b33eb81b6a1a2 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-29 +date: 2023-06-30 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 960b7341a8e1b..cd02912cf61cc 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-29 +date: 2023-06-30 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 c4555db0cddc6..5a84b25e188dd 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-29 +date: 2023-06-30 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 61237aafddb9e..9baba9fced13b 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-29 +date: 2023-06-30 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 a41aec5e2d2d5..48b91ddeb3ff0 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-29 +date: 2023-06-30 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 733419471f0aa..9c33e19d0ac89 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-29 +date: 2023-06-30 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 aa1a67caf816d..2fc809b21c27d 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-29 +date: 2023-06-30 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 1e3d7858e7f01..a816cd623cbd0 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-29 +date: 2023-06-30 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 46cce538ef08d..67573c599cc48 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-29 +date: 2023-06-30 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 bb65bb48a717b..25e3b0e8d28c6 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-29 +date: 2023-06-30 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 4b40bfb462a9a..b0b76d58ad9d5 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-29 +date: 2023-06-30 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 753b0918e1ec8..914fd72c83af5 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-29 +date: 2023-06-30 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 c89dc9e248a2c..e1f235e1d2127 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-29 +date: 2023-06-30 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 af0244f24235b..83b44191d3e76 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-29 +date: 2023-06-30 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 08e7e41677554..5b4aa6403c757 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-29 +date: 2023-06-30 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 1698fd9cf5cbc..4a643f4abd01b 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-29 +date: 2023-06-30 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 fa99c2987c95d..36fc8b77b8819 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-29 +date: 2023-06-30 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 aff9132dbf55b..81f91c52398ce 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-29 +date: 2023-06-30 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 57655c98968ec..d9cbd1dcfeb84 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-29 +date: 2023-06-30 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 662937aea60c6..6975139723094 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-29 +date: 2023-06-30 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 55e7918015961..57b0b1005246f 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-29 +date: 2023-06-30 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 1e668c60446df..6e95e325b8513 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-29 +date: 2023-06-30 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 eec213069f7b0..fea858147789d 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-29 +date: 2023-06-30 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 461cae0f83af8..4926468326f17 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-29 +date: 2023-06-30 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 11db162f9457f..5eec364c82a91 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-29 +date: 2023-06-30 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 75cf355833ebe..a42591a619af6 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-29 +date: 2023-06-30 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 74fb03672024f..a7f3dc9896fa8 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-29 +date: 2023-06-30 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 65b6ed8eff4fd..c787874beccfa 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-29 +date: 2023-06-30 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 76e5b4e8eae5f..4c4bd50d63557 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-29 +date: 2023-06-30 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 dc92da3091a57..c9ce8b9ef4ffb 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-29 +date: 2023-06-30 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 210ebeb982b7e..04fb2016aac80 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-29 +date: 2023-06-30 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 e6339395b7a72..2a8cdfb9e35aa 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-29 +date: 2023-06-30 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 f15e3df195add..3c2e12d30eb99 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-29 +date: 2023-06-30 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 b22eb9cad005a..94bf124c8443d 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-29 +date: 2023-06-30 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 7aad26112936d..b5b2de345636f 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-29 +date: 2023-06-30 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 b230cc8854524..c0162cc0508d9 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-29 +date: 2023-06-30 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 1768f40acc8d2..b6c64bd693f11 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-29 +date: 2023-06-30 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 c92a035cf0d18..d7719d9c61f05 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-29 +date: 2023-06-30 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 9b5f5acbff037..3e36e267542d7 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-29 +date: 2023-06-30 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 2fb70d50359a9..a98f34d29414a 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-29 +date: 2023-06-30 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 773ee3f04688a..9971dd240ee01 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-29 +date: 2023-06-30 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 e4a81412ce343..73f6d07157fc6 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-29 +date: 2023-06-30 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 1e1a5bded88cc..4dd4c46bdaf4c 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-29 +date: 2023-06-30 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 16b5a492fb2d6..a3eb72d395357 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-29 +date: 2023-06-30 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 ae10d0bb06a54..f56893f9807c8 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-29 +date: 2023-06-30 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 ddd94b1057009..27a4e3f248786 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-29 +date: 2023-06-30 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 5f66dd2291846..9fc4ff8f05bc2 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-29 +date: 2023-06-30 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 ce5e1f5632c7f..0f2bdd55f8b34 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-29 +date: 2023-06-30 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 2ba873a50e5bf..c13ea492a7c12 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-29 +date: 2023-06-30 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 9c5d393ab3269..705af1a99f7e6 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-29 +date: 2023-06-30 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 6349c3f1872cd..fcdb41ea8ec35 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-29 +date: 2023-06-30 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 6e2276580af5f..48bad509c8b75 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-29 +date: 2023-06-30 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 fc8d6265335a1..2a3d480017da6 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-29 +date: 2023-06-30 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 c5bc0caafad0e..3adc0a462aec1 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-29 +date: 2023-06-30 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 259f23aba254f..19b6c3861807f 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-29 +date: 2023-06-30 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 c56361cf28d6a..7fec2cfc9e9a7 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-29 +date: 2023-06-30 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 8ba4017084900..34fa37a32b791 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-29 +date: 2023-06-30 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 5abc4c245a553..14b71b7706477 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-29 +date: 2023-06-30 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 aad6f6bd60d1d..39efaa80587c8 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-29 +date: 2023-06-30 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 a221efa006e65..85c2fb294ecbf 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-29 +date: 2023-06-30 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 23e96d143e25c..c989fe7b121fa 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-29 +date: 2023-06-30 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 234c3a776673e..e9301439b6ed0 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-29 +date: 2023-06-30 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 58548b7860653..c6702cd7c050f 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-29 +date: 2023-06-30 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 4aa32339a2782..d135ff737655e 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-29 +date: 2023-06-30 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 b672017bbaa17..8d7e4fdb80df1 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-29 +date: 2023-06-30 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 3b142953186c4..a0cbc63237698 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-29 +date: 2023-06-30 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 1a982440b910e..85b2b29711d5e 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-29 +date: 2023-06-30 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 362a83bd5776b..9a4bff3292463 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-29 +date: 2023-06-30 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 67759fb44fa42..44fa0c99cac00 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-29 +date: 2023-06-30 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 818e9a23702dd..b6fb4bb8b7abf 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-29 +date: 2023-06-30 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 85768924ffc78..c2ca321287b08 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-29 +date: 2023-06-30 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 d5e5318e74e3e..33a8a9c730e4e 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-29 +date: 2023-06-30 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 8b6d3dd95d4e1..d86a751f18d6d 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-29 +date: 2023-06-30 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 17cea9ae2f859..6b3d182746dd0 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-29 +date: 2023-06-30 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 e4bb6f1df4ef5..8d6ec4e81ace1 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-29 +date: 2023-06-30 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 77378f3996b1c..94604c98e9a1d 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-29 +date: 2023-06-30 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 b52dfe57944d5..57198beac077e 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-29 +date: 2023-06-30 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 29ada94280a14..a769b60950ea0 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-29 +date: 2023-06-30 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 8cdb123ec2a62..6830558759b94 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-29 +date: 2023-06-30 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 bb40e9a4071c2..7f4e3aa97d4fa 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-29 +date: 2023-06-30 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 dce1b3300aa75..44e850dd73eaf 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-29 +date: 2023-06-30 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 9b7f21180ed8e..58c73ddf9155f 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-29 +date: 2023-06-30 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 c077e315c644e..0e251aca15b30 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-29 +date: 2023-06-30 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 3f3cfa1b6e287..104637ea97997 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-29 +date: 2023-06-30 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 5f3b0e4f48009..e36512c4a18f1 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-29 +date: 2023-06-30 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 773059ae46d05..89d0c5b958ecc 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-29 +date: 2023-06-30 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 21dbf3656a23f..8b8c401974e25 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-29 +date: 2023-06-30 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 6dda832a9639b..92518c2c6c986 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -4547,6 +4547,10 @@ "plugin": "serverlessSearch", "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/indices_routes.ts" + }, { "plugin": "snapshotRestore", "path": "x-pack/plugins/snapshot_restore/server/routes/api/app.ts" @@ -7089,6 +7093,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/route.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts" @@ -7429,10 +7437,6 @@ "plugin": "contentManagement", "path": "src/plugins/content_management/server/plugin.test.ts" }, - { - "plugin": "dataViewFieldEditor", - "path": "src/plugins/data_view_field_editor/server/routes/field_preview.ts" - }, { "plugin": "dataViewManagement", "path": "src/plugins/data_view_management/server/routes/preview_scripted_field.ts" @@ -15118,6 +15122,10 @@ "plugin": "controls", "path": "src/plugins/controls/server/options_list/options_list_suggestions_route.ts" }, + { + "plugin": "dataViewFieldEditor", + "path": "src/plugins/data_view_field_editor/server/routes/field_preview.ts" + }, { "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 35ee2767415ed..c8ce637609a8d 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-29 +date: 2023-06-30 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 41aa493789898..37152419ec61d 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-29 +date: 2023-06-30 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 c7a44a64d0eee..38b996d68e19e 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-29 +date: 2023-06-30 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 5694499b65075..384056aae6faa 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-29 +date: 2023-06-30 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 5ae58b97a5b77..a146a9355e538 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-29 +date: 2023-06-30 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 867eff27980dc..48738f858e1db 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-29 +date: 2023-06-30 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 3c6435e75c2cf..31ce4c84da6bb 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-29 +date: 2023-06-30 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 be3bf50892d18..3e0175adb9a29 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-29 +date: 2023-06-30 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 797758c4a94cb..c2e1506137554 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-29 +date: 2023-06-30 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 f584ce0419074..08d4413e6f96a 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-29 +date: 2023-06-30 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 58b8f3c628402..ca3a0ec2fc9fc 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-29 +date: 2023-06-30 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 bef34eebf9c93..fbc58e07cc3c6 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-29 +date: 2023-06-30 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 6213d32fa9e06..b1fa75a0c7840 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-29 +date: 2023-06-30 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 cde27a91a0ded..19837d2466be7 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-29 +date: 2023-06-30 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 5cc89e5faa1dd..27dba6e73fc29 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-29 +date: 2023-06-30 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 92911a9c2921a..92a43ea8687d5 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-29 +date: 2023-06-30 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 d550bb2e0dd2b..263c754aa7684 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-29 +date: 2023-06-30 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 eae52994e1e45..f5bb802aa6c40 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-29 +date: 2023-06-30 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 70aed839a4874..2dba6b6673c5d 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-29 +date: 2023-06-30 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 cfb791c20eb5d..45ffe9cf4d651 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-29 +date: 2023-06-30 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 8c3e30880426d..837c4e7df325f 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-29 +date: 2023-06-30 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 db10cda753dd6..d2840e4e3968b 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-29 +date: 2023-06-30 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 a9e9579e0d346..8df5f813b9768 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-29 +date: 2023-06-30 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 5a7870ced9883..af792e2945fc4 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-29 +date: 2023-06-30 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 9ea2fcde8f1e4..e41644eb284f5 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-29 +date: 2023-06-30 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 7c64bc51311d7..084ba973a9e70 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-29 +date: 2023-06-30 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 1bb550209bdec..9d2c1bbc4f07c 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-29 +date: 2023-06-30 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 1b46b0e3baadc..5b265d7f20e05 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-29 +date: 2023-06-30 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 4f1a055ec26ed..a3a7f979c4a37 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-29 +date: 2023-06-30 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 42dd8a0c6d099..d1a80ab0625fc 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-29 +date: 2023-06-30 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 413a204d6ff6d..dc00617d5b379 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-29 +date: 2023-06-30 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 1069c722a75ee..559a39395b091 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-29 +date: 2023-06-30 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 a8006b18d30ff..6ad21beb9fbb2 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-29 +date: 2023-06-30 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 526b4e00f701b..6a923c38874b6 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-29 +date: 2023-06-30 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 3f2965d62e17a..3d0bb2d7f0e3c 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-29 +date: 2023-06-30 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 0810a98c0077f..011a4a7ec2fd5 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-29 +date: 2023-06-30 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 ec04c46eb9c56..4b57b1c67b92a 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-29 +date: 2023-06-30 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 5d0f34bf19639..dcc5f9bce15e8 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-29 +date: 2023-06-30 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 b2d9ec3e08362..81327250270c9 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-29 +date: 2023-06-30 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 36797ed6b97ca..b5088454b1d8a 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-29 +date: 2023-06-30 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 867dad812c6c9..22ee50388f0b0 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-29 +date: 2023-06-30 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 f1c7a4c5ec10f..4ae90668e74e6 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-29 +date: 2023-06-30 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 b0053d2fe51b8..9a54cf7cf3920 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-29 +date: 2023-06-30 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 fafa9758fcd05..b135ed45cbc2d 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-29 +date: 2023-06-30 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 092a8c8b51440..b79f72ccb4974 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-29 +date: 2023-06-30 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 ace8a7cf165ce..8caf2a21241bb 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.devdocs.json +++ b/api_docs/kbn_core_saved_objects_api_browser.devdocs.json @@ -3091,14 +3091,6 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/types/app_state.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/common/types/synthetics_monitor.ts" - }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/common/types/synthetics_monitor.ts" - }, { "plugin": "uptime", "path": "x-pack/plugins/uptime/common/types/synthetics_monitor.ts" diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index f6b6eb9a03d50..90d97d003d6b8 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-29 +date: 2023-06-30 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 18104f900f976..5f3dae559b6d9 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-29 +date: 2023-06-30 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 ca858137cf982..ce1c8b4561da9 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-29 +date: 2023-06-30 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 b989b77c560f2..3c9f791e6f1bb 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-29 +date: 2023-06-30 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 0798172bf4677..10017078ace48 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-29 +date: 2023-06-30 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 9536c7de3ddab..2d148f9c34964 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-29 +date: 2023-06-30 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 fdc3e7d402986..c23757de2cf8f 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-29 +date: 2023-06-30 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 a564be2534997..f4256143bb941 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-29 +date: 2023-06-30 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 cbbafc07f2267..786f7ea994800 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-29 +date: 2023-06-30 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 93a9830f6fa26..5f66640f4d31b 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-29 +date: 2023-06-30 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 fedc00cbc7d52..6112c22b2b6a4 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-29 +date: 2023-06-30 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 910a88f3b0d06..b04305fac4f0d 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-29 +date: 2023-06-30 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 51e4ffc65187f..d78a63e5b0821 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-29 +date: 2023-06-30 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 31272b7737b4c..d99d4ea8528ca 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-29 +date: 2023-06-30 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 243967aa950a8..b193ab1fff041 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-29 +date: 2023-06-30 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 439d58a84f211..1c1fe623094b0 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-29 +date: 2023-06-30 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 abec3322412d0..f25d9886ec4af 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-29 +date: 2023-06-30 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 a15f38342a894..098b77d3a5be4 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-29 +date: 2023-06-30 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 90a27d6179c5b..f3b3cb0d5f2d3 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-29 +date: 2023-06-30 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 f57686171f279..b2615ef588e50 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-29 +date: 2023-06-30 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 8b42250e4fa5d..33a59a6da2ac8 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-29 +date: 2023-06-30 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 6ccfb45872549..08e898d63952d 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-29 +date: 2023-06-30 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 1efc32300fab5..fb9cfe5e06eda 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-29 +date: 2023-06-30 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 81fd5010fcf29..29b267c229a22 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-29 +date: 2023-06-30 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 2eac7c429dcd9..6835fa78db714 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-29 +date: 2023-06-30 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 9627b52967898..cec382dd67f99 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-29 +date: 2023-06-30 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 df8853cb41ae4..2ef04f8382050 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-29 +date: 2023-06-30 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 7eb5dfe881fd2..f7c4977627024 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-29 +date: 2023-06-30 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 e7957725addfd..c4f34300dd40a 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-29 +date: 2023-06-30 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 d0514baf0b26b..b06fc8d98390a 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-29 +date: 2023-06-30 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 f51d54f241859..92824665b9051 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-29 +date: 2023-06-30 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 6985e3a59548a..e36154decf480 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-29 +date: 2023-06-30 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 e764b6f531214..f3f0d04629090 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-29 +date: 2023-06-30 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 43c589558fca9..1c86bc3581739 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-29 +date: 2023-06-30 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 57b2f453bac8f..d1191aae7a3e6 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-29 +date: 2023-06-30 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 1fecc6be44b5e..1527eee1a5ab3 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-29 +date: 2023-06-30 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 8d9d3a9cde3fe..197fbf81d7eb7 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-29 +date: 2023-06-30 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 00638d8e68503..b8ebf1dc853dc 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-29 +date: 2023-06-30 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 10b1d524aadfe..29af37cbe1019 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-29 +date: 2023-06-30 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 f2efd3726c517..7f08c46084950 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-29 +date: 2023-06-30 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 0a9f1d3edc379..5b45a9ecf9ee5 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-29 +date: 2023-06-30 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 cfe3aca4c1c8b..5f97644173576 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-29 +date: 2023-06-30 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 349581f62a826..050770ee7f4bf 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-29 +date: 2023-06-30 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 0c6c8d9514507..91ac99d537313 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-29 +date: 2023-06-30 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 c73963bd4a513..c7c180037c65a 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-29 +date: 2023-06-30 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 0f2a79ef23c92..e6e7c8e90d2b6 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 93d41c1feede7..08c01439606dc 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2023-06-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index c87947506bb28..ab7a457ca2973 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-29 +date: 2023-06-30 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 18587614dd5f7..bc29e3db1a242 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-29 +date: 2023-06-30 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 c34b38242e138..746d744ec21e6 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-29 +date: 2023-06-30 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 3b73c17240d5c..0805671dc905c 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-29 +date: 2023-06-30 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 238e8fe911376..ef8961d35cec1 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-29 +date: 2023-06-30 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 736ddc19372c6..5bb85866f3529 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-29 +date: 2023-06-30 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 54478957eae3e..aa6ad4b0817db 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-29 +date: 2023-06-30 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 40cd7f9fbfb54..0fe33103acb2e 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-29 +date: 2023-06-30 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 3e09dbeb2a434..e9e9a3976b1b4 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-29 +date: 2023-06-30 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 bdea3bf312f8d..06c7cd0227d3c 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-29 +date: 2023-06-30 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 7bc848d40c82e..1e0c9b2fbf3a5 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-29 +date: 2023-06-30 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 6a7660d9fccdf..2c35736b115b5 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-29 +date: 2023-06-30 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 39447d090c727..2c92f09a74ba5 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-29 +date: 2023-06-30 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 8bc7aaf8c2d89..03f904c56b50f 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-29 +date: 2023-06-30 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 2af7f4ee9d93f..976f85187ad6f 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-29 +date: 2023-06-30 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 e8657368f426f..db9b6d0b85d0b 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-29 +date: 2023-06-30 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 8c6e2f5fe516d..f911e310903cc 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-29 +date: 2023-06-30 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 1362a406cfabe..e01a14c6c1ec2 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-29 +date: 2023-06-30 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 46f9d54713b91..aa6acb99d617a 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-29 +date: 2023-06-30 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 4b5eeeeff74a2..635d7c5314ee4 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-29 +date: 2023-06-30 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 fd0c9db92953d..69a8ef8bcb216 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-29 +date: 2023-06-30 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 bb9ce9b329065..76d40eae7cbe4 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-29 +date: 2023-06-30 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 63c8d69d098af..8f5a641fc5a37 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-29 +date: 2023-06-30 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 2744430dd9e98..62b55c2cbe6ea 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-29 +date: 2023-06-30 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 d2808066f3e26..b542ac4590921 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-29 +date: 2023-06-30 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 79e5e95716315..2dc931afb9ac6 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-29 +date: 2023-06-30 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 f7cc6a3dfff96..a688291dcb466 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-29 +date: 2023-06-30 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 cf7705df7e11d..2ac3fbec286f1 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-29 +date: 2023-06-30 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 ae7b0271263b6..817316ee50a29 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-29 +date: 2023-06-30 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 6620949e48dc1..9db7ac2995823 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-29 +date: 2023-06-30 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 51fceba20e9ba..5e918d373f28e 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-29 +date: 2023-06-30 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 ac2b2a48042de..08df7c49d423f 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-29 +date: 2023-06-30 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 79c0c5ecbbef1..5db131ac2aa64 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index 3c4beb24f0e20..134885dce4e31 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2023-06-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 9173818b136f7..29277fd436268 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-29 +date: 2023-06-30 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 e7d202d45bbd0..08cb04241e202 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-29 +date: 2023-06-30 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 e8a86269cef1f..a0b070753b4af 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-29 +date: 2023-06-30 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 6948958958257..6053a1722a462 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-29 +date: 2023-06-30 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 27e456d36bb2d..46d6377ce2fd5 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-29 +date: 2023-06-30 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 2fbbd1ea57da9..8af183c664100 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-29 +date: 2023-06-30 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 994e5ce791e8b..3da9b96032b86 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-29 +date: 2023-06-30 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 763cd7659a5fd..97225879065a0 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-29 +date: 2023-06-30 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 e860b0b46a333..6d95092b2fb2a 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-29 +date: 2023-06-30 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 84a60118a7ce4..34e812c2a9724 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-29 +date: 2023-06-30 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 39093df222577..08c68565ae2b1 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-29 +date: 2023-06-30 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 f865d59bffcb2..0a01ba4056433 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-29 +date: 2023-06-30 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 aaf74fc1d50a5..818fce8ad7e93 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-29 +date: 2023-06-30 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 4267839b1a446..0d332dec34ec3 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-29 +date: 2023-06-30 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 9b0cdcc730692..8161ced3eb36b 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-29 +date: 2023-06-30 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 a450013289699..cf2f98e7566f3 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-29 +date: 2023-06-30 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 8e61afa9e296a..6116993499422 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-29 +date: 2023-06-30 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 5401b48bda9b9..0af2869630512 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-29 +date: 2023-06-30 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 56d900191acd6..f2261e06cb1e2 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-29 +date: 2023-06-30 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 184f675e17637..337cf5640c3ae 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-29 +date: 2023-06-30 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 472782190f5dc..ed7a25e96af4d 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-29 +date: 2023-06-30 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 4405b51ed903d..27686b46252de 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-29 +date: 2023-06-30 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 5501224de0e1c..5147299e37663 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-29 +date: 2023-06-30 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 56ef6d9371e49..51b5793e598f9 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-29 +date: 2023-06-30 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 fa02c6d5636ec..f7d230fc98359 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-29 +date: 2023-06-30 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 1397782684f00..79858ac6c6b98 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-29 +date: 2023-06-30 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 4ebeef7405d1e..404c6677a8d45 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-29 +date: 2023-06-30 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 452603eb32b80..3cf0bd8fc0b5f 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-29 +date: 2023-06-30 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 6a838437049e3..fcc436bd1a59e 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-29 +date: 2023-06-30 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 900b95b007c82..ceb975a261cc3 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-29 +date: 2023-06-30 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 1abb67fa041fe..4183652a9393a 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-29 +date: 2023-06-30 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 f2ea85b5758eb..58ba1539b3081 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-29 +date: 2023-06-30 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 ede81361a78ed..2d2f89cdd9335 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-29 +date: 2023-06-30 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 0ea53ef70c0cd..850f72a2d8a25 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-29 +date: 2023-06-30 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 1cdfa75b1743b..49e2245c6a7a5 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-29 +date: 2023-06-30 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 c4c8ca83eb154..3e9f27b990006 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-29 +date: 2023-06-30 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 9e485870e0c6b..c56e7b9337574 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-29 +date: 2023-06-30 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 65dd2a0f9b8e3..48d8e0fbc1f91 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-29 +date: 2023-06-30 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 936d9a22fc061..8c5c2c7b50af1 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-29 +date: 2023-06-30 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 04d2b596e6760..e666f90f6b589 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-29 +date: 2023-06-30 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 9c3584c70affa..e12985330e7f7 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-29 +date: 2023-06-30 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 6a76d238dd96c..81b53da1eeec3 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-29 +date: 2023-06-30 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 06a9fbe5c4bc9..322b7df40f21c 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-29 +date: 2023-06-30 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 7cfa8f9e108a5..a0dee28b430bb 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-29 +date: 2023-06-30 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 5dc8c1dcb934e..3609f9c080732 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-29 +date: 2023-06-30 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 cfcb14a53b14f..e5d61420d7f78 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-29 +date: 2023-06-30 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 5f85ad927b7e0..4299751793d51 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-29 +date: 2023-06-30 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 2c08aa77e3d7c..7fd8398aa88f7 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-29 +date: 2023-06-30 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 db72cc3217b6c..23af54fccf240 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-29 +date: 2023-06-30 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 e553ee5c6878a..7cd16c465206b 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-29 +date: 2023-06-30 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 c375fe5a689da..4492c48928260 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-29 +date: 2023-06-30 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 2c494f6c2b786..ff9a96c9e9bca 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-29 +date: 2023-06-30 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 3d4f827cb5717..b8368fa20e46a 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-29 +date: 2023-06-30 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 68bb6b1d02b86..cc67c47f1bc56 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-29 +date: 2023-06-30 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 74fd89f042175..9c530b7779f8b 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-29 +date: 2023-06-30 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 444634436bb0a..a8f3d0a8052f9 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-29 +date: 2023-06-30 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 40ca1516c590e..bbae305f56b89 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-29 +date: 2023-06-30 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 4a1175f0eca5f..ad629e2e80480 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-29 +date: 2023-06-30 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 e744bf52b7c83..ee4a70da1444e 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-29 +date: 2023-06-30 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 78e768f9730a3..e627c153b06f5 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-29 +date: 2023-06-30 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 42b83f517411b..87a9a08671452 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.devdocs.json b/api_docs/kbn_rule_data_utils.devdocs.json index 4bb955096c4c0..e94f20267f817 100644 --- a/api_docs/kbn_rule_data_utils.devdocs.json +++ b/api_docs/kbn_rule_data_utils.devdocs.json @@ -1566,7 +1566,7 @@ "label": "TechnicalRuleDataFieldName", "description": [], "signature": [ - "\"@timestamp\" | \"event.action\" | \"tags\" | \"kibana\" | \"kibana.alert.rule.rule_type_id\" | \"kibana.alert.rule.consumer\" | \"kibana.alert.rule.execution.uuid\" | \"kibana.alert\" | \"kibana.alert.action_group\" | \"kibana.alert.case_ids\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.flapping\" | \"kibana.alert.maintenance_window_ids\" | \"kibana.alert.instance.id\" | \"kibana.alert.reason\" | \"kibana.alert.rule\" | \"kibana.alert.rule.category\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.parameters\" | \"kibana.alert.rule.producer\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.start\" | \"kibana.alert.status\" | \"kibana.alert.time_range\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_tags\" | \"kibana.space_ids\" | \"kibana.version\" | \"kibana.alert.risk_score\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.severity\" | \"kibana.alert.suppression.docs_count\" | \"kibana.alert.suppression.end\" | \"kibana.alert.suppression.terms\" | \"kibana.alert.suppression.terms.field\" | \"kibana.alert.suppression.start\" | \"kibana.alert.suppression.terms.value\" | \"kibana.alert.system_status\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_user\" | \"ecs.version\" | \"event.kind\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.context\" | \"kibana.alert.evaluation.values\" | \"event.module\" | \"kibana.alert.building_block_type\" | \"kibana.alert.rule.exceptions_list\" | \"kibana.alert.rule.namespace\" | \"kibana.alert.rule.threat.framework\" | \"kibana.alert.rule.threat.tactic.id\" | \"kibana.alert.rule.threat.tactic.name\" | \"kibana.alert.rule.threat.tactic.reference\" | \"kibana.alert.rule.threat.technique.id\" | \"kibana.alert.rule.threat.technique.name\" | \"kibana.alert.rule.threat.technique.reference\" | \"kibana.alert.rule.threat.technique.subtechnique.id\" | \"kibana.alert.rule.threat.technique.subtechnique.name\" | \"kibana.alert.rule.threat.technique.subtechnique.reference\"" + "\"@timestamp\" | \"event.action\" | \"tags\" | \"kibana\" | \"kibana.alert.rule.rule_type_id\" | \"kibana.alert.rule.consumer\" | \"kibana.alert.rule.execution.uuid\" | \"kibana.alert\" | \"kibana.alert.action_group\" | \"kibana.alert.case_ids\" | \"kibana.alert.duration.us\" | \"kibana.alert.end\" | \"kibana.alert.flapping\" | \"kibana.alert.maintenance_window_ids\" | \"kibana.alert.instance.id\" | \"kibana.alert.reason\" | \"kibana.alert.rule\" | \"kibana.alert.rule.category\" | \"kibana.alert.rule.name\" | \"kibana.alert.rule.parameters\" | \"kibana.alert.rule.producer\" | \"kibana.alert.rule.tags\" | \"kibana.alert.rule.uuid\" | \"kibana.alert.start\" | \"kibana.alert.status\" | \"kibana.alert.time_range\" | \"kibana.alert.uuid\" | \"kibana.alert.workflow_status\" | \"kibana.alert.workflow_tags\" | \"event.kind\" | \"kibana.space_ids\" | \"kibana.version\" | \"kibana.alert.risk_score\" | \"kibana.alert.rule.author\" | \"kibana.alert.rule.created_at\" | \"kibana.alert.rule.created_by\" | \"kibana.alert.rule.description\" | \"kibana.alert.rule.enabled\" | \"kibana.alert.rule.from\" | \"kibana.alert.rule.interval\" | \"kibana.alert.rule.license\" | \"kibana.alert.rule.note\" | \"kibana.alert.rule.references\" | \"kibana.alert.rule.rule_id\" | \"kibana.alert.rule.rule_name_override\" | \"kibana.alert.rule.to\" | \"kibana.alert.rule.type\" | \"kibana.alert.rule.updated_at\" | \"kibana.alert.rule.updated_by\" | \"kibana.alert.rule.version\" | \"kibana.alert.severity\" | \"kibana.alert.suppression.docs_count\" | \"kibana.alert.suppression.end\" | \"kibana.alert.suppression.terms\" | \"kibana.alert.suppression.terms.field\" | \"kibana.alert.suppression.start\" | \"kibana.alert.suppression.terms.value\" | \"kibana.alert.system_status\" | \"kibana.alert.workflow_reason\" | \"kibana.alert.workflow_user\" | \"ecs.version\" | \"kibana.alert.evaluation.threshold\" | \"kibana.alert.evaluation.value\" | \"kibana.alert.context\" | \"kibana.alert.evaluation.values\" | \"event.module\" | \"kibana.alert.building_block_type\" | \"kibana.alert.rule.exceptions_list\" | \"kibana.alert.rule.namespace\" | \"kibana.alert.rule.threat.framework\" | \"kibana.alert.rule.threat.tactic.id\" | \"kibana.alert.rule.threat.tactic.name\" | \"kibana.alert.rule.threat.tactic.reference\" | \"kibana.alert.rule.threat.technique.id\" | \"kibana.alert.rule.threat.technique.name\" | \"kibana.alert.rule.threat.technique.reference\" | \"kibana.alert.rule.threat.technique.subtechnique.id\" | \"kibana.alert.rule.threat.technique.subtechnique.name\" | \"kibana.alert.rule.threat.technique.subtechnique.reference\"" ], "path": "packages/kbn-rule-data-utils/src/technical_field_names.ts", "deprecated": false, diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 0aeafb4486044..7a5fac77e05f9 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-29 +date: 2023-06-30 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 3b441eb5eb826..02407a5984e2b 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-29 +date: 2023-06-30 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 eac4d7b3475f3..13c1d7da7e2f0 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-29 +date: 2023-06-30 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 4abfcee990900..89fe6d2bd164f 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-29 +date: 2023-06-30 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 ec7dfe50dd677..9c9daeef2a640 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-29 +date: 2023-06-30 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 0a5839abbfcee..f32526c450d3d 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-29 +date: 2023-06-30 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 e59d0c40ebc63..3c9938634b490 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-29 +date: 2023-06-30 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 c5bc972f67b9b..4268bd21f81af 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-29 +date: 2023-06-30 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 5c2a2890498ca..ea9e79cec7dbf 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-29 +date: 2023-06-30 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 0f5e31baa2f38..e3ca628a7c42e 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-29 +date: 2023-06-30 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 a9058056f9507..bcd97e2dd84ef 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-29 +date: 2023-06-30 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 3cc4c8e22eb64..d928173ce5440 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-29 +date: 2023-06-30 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 1d5e336fae5cb..bf4e174dfded9 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-29 +date: 2023-06-30 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 0d6052d442446..911ffe07505e0 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-29 +date: 2023-06-30 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 1ee62d320204d..b21fbeff5c570 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-29 +date: 2023-06-30 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 b7c31b788c725..f443ca6f68e2f 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-29 +date: 2023-06-30 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.devdocs.json b/api_docs/kbn_securitysolution_list_constants.devdocs.json index aff90a42119f0..86b382c6bc5a0 100644 --- a/api_docs/kbn_securitysolution_list_constants.devdocs.json +++ b/api_docs/kbn_securitysolution_list_constants.devdocs.json @@ -143,14 +143,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts" @@ -391,14 +383,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.test.ts" @@ -591,14 +575,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts" @@ -1020,14 +996,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts" diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 5da6f74085832..81e2ff61db05c 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-29 +date: 2023-06-30 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 f820605846330..097841300a909 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-29 +date: 2023-06-30 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 66d892fd9ea36..341bb67f0408f 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-29 +date: 2023-06-30 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 d8f9e5e22dce1..307a04514254f 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-29 +date: 2023-06-30 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 027efac5fe6c8..fcd16e9555d1c 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-29 +date: 2023-06-30 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 aeb87c4423dbb..77a10967c2f88 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-29 +date: 2023-06-30 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 42dddea42ee40..abbf73d8236c6 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-29 +date: 2023-06-30 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 ce037dbd920b4..c24b60a20f957 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-29 +date: 2023-06-30 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 bf86c2ba58abf..175977dbb6e22 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-29 +date: 2023-06-30 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 772505dd2491e..21a2e8c25e275 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-29 +date: 2023-06-30 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 288c971508fac..35505d2bd1a9a 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-29 +date: 2023-06-30 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 f4233ebfa54a5..04dc5f3adbc90 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-29 +date: 2023-06-30 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 01ac259fdef82..c369b145a8f0e 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-29 +date: 2023-06-30 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 89bb9a69ef99f..3f567e4cff42a 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-29 +date: 2023-06-30 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 2a1d142c249b1..c52d19e9d35f6 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-29 +date: 2023-06-30 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 0b001123d86c9..0eb23afa59705 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-29 +date: 2023-06-30 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 b89501e8dc52e..17f6c66d58c89 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-29 +date: 2023-06-30 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 dc0a62b22833c..eeb6f991db1d3 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-29 +date: 2023-06-30 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 cb62dc5ea7ff0..cbb0de7496c59 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-29 +date: 2023-06-30 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 4adb7915e1142..fe577411235cb 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-29 +date: 2023-06-30 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 3e5ead362a808..858151006d8ce 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-29 +date: 2023-06-30 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 5ae139c6fe19c..247be558cbcef 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-29 +date: 2023-06-30 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 bd2e17f9c8b4f..dbf4cef7d443b 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-29 +date: 2023-06-30 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 acae49247cca8..ac3367f429743 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-29 +date: 2023-06-30 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 765db680b7481..e2ed1b93b8fd3 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-29 +date: 2023-06-30 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 5d59878b286dc..2d77fc33b7d0f 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-29 +date: 2023-06-30 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 6a83a7b2446f2..a11a68075dc78 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-29 +date: 2023-06-30 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 b8d001212b9a4..7b4d15989dbd4 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-29 +date: 2023-06-30 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 89aadf1301e39..f7aafa18bf14d 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-29 +date: 2023-06-30 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 c2605efd44703..5e009794043e1 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-29 +date: 2023-06-30 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 7edac5542000f..98bbbd98e3067 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-29 +date: 2023-06-30 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 6fcf4c195435c..e2048cf8bf66c 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-29 +date: 2023-06-30 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 700733423643a..41baeb7fc84ef 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-29 +date: 2023-06-30 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 86808bdbe2137..a77471c0ebd2b 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-29 +date: 2023-06-30 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 97d75d9a8302e..a20da4872dce3 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-29 +date: 2023-06-30 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 6fbabc42ddf3c..67eb3fdc9d2da 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-29 +date: 2023-06-30 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 1381d89ad30c3..5b09648ce1025 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-29 +date: 2023-06-30 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 23f4dc380a2d4..f34e531d7be38 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-29 +date: 2023-06-30 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 0b2adc96559ba..784c60782d1b6 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-29 +date: 2023-06-30 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 f84788d5ef931..463881879d1d6 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-29 +date: 2023-06-30 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 970a34aa5f9ba..a7ea6142f14a4 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-29 +date: 2023-06-30 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 2c0487c87153f..a9aee4d9a0987 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-29 +date: 2023-06-30 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 d10576a7aa666..7a28991b6db2f 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-29 +date: 2023-06-30 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 0e370829f166e..4b9d7785fb315 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-29 +date: 2023-06-30 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 6c0febb9f00ea..7768c002563e0 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-29 +date: 2023-06-30 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 f55db3c2a657b..0a4267873f834 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-29 +date: 2023-06-30 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 92c35b4c48a3c..460135a134d2a 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-29 +date: 2023-06-30 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 d93510ee9bb00..33d552a1318eb 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-29 +date: 2023-06-30 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 5e4e85881fc5e..149982eb03f10 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-29 +date: 2023-06-30 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 a8c29ead588d8..1cbc67ee4a11e 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-29 +date: 2023-06-30 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 c0a89acb3ee2a..b085b172ac32e 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-29 +date: 2023-06-30 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 a19cc9ff35541..d7269e4f87a70 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-29 +date: 2023-06-30 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 758a6a9a95c46..3ee76d8ce57bb 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-29 +date: 2023-06-30 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 dcfe9af68e872..8951131d9c1b3 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-29 +date: 2023-06-30 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 ea460b95d3ec1..94802cce7aabc 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-29 +date: 2023-06-30 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 ba01dfbc0ccb0..b9c5a4ed5a588 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-29 +date: 2023-06-30 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 912d11405c8aa..a28269b45d0fc 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-29 +date: 2023-06-30 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 3a779a6a7f254..56e27ec9a1ea4 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-29 +date: 2023-06-30 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 06944a2dbaf1f..02d2aadd706f9 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-29 +date: 2023-06-30 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 86016c537e922..5daf28cd7d244 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-29 +date: 2023-06-30 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 2231c72efa0cb..7ee9dd44938f0 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-29 +date: 2023-06-30 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 2430998e984ac..6104ee6e57500 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-29 +date: 2023-06-30 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 ef7059f8a9230..f57367798f2aa 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-29 +date: 2023-06-30 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 d7aed58837894..032c531cca7f6 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-29 +date: 2023-06-30 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 e9722f0a7814e..d9303de280b06 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-29 +date: 2023-06-30 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 81111ae08c766..a6390418bffdc 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.devdocs.json b/api_docs/kbn_unified_field_list.devdocs.json index 1a8789a42c327..5987f7c246030 100644 --- a/api_docs/kbn_unified_field_list.devdocs.json +++ b/api_docs/kbn_unified_field_list.devdocs.json @@ -3164,7 +3164,8 @@ "label": "timeSeriesMetric", "description": [], "signature": [ - "\"histogram\" | \"summary\" | \"gauge\" | \"counter\" | undefined" + "MappingTimeSeriesMetricType", + " | undefined" ], "path": "packages/kbn-unified-field-list/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index ff07cf14816c6..3a57dc997ac59 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2023-06-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index 9bd9ed2c2b2e7..d20cd31a79a8f 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-29 +date: 2023-06-30 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 e2056b6a1d244..f677f876d2f8e 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-29 +date: 2023-06-30 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 61d7299b433ac..95b56c597ae28 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-29 +date: 2023-06-30 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 5a3e644bb6411..c46479a9ff44d 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-29 +date: 2023-06-30 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 6a172545a2266..9813607dc45aa 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-29 +date: 2023-06-30 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 99e7330b81b74..36757ad29f0f3 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-29 +date: 2023-06-30 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 830704bcf7d2b..e794ae8bd88ba 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-29 +date: 2023-06-30 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 f904b0f0fb512..1cc1cc3031f0d 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-29 +date: 2023-06-30 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 7013681375936..25766d27a39fe 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-29 +date: 2023-06-30 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 931817b1f41b7..5e648fe9f9299 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-29 +date: 2023-06-30 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 3c2e7143322fe..2d6aeddb76182 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-29 +date: 2023-06-30 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 51114a51fa43d..f804fffc159a2 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-29 +date: 2023-06-30 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 0941954a26e90..658e0af2a18ce 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-29 +date: 2023-06-30 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 ac173077415d6..afdf76d7d70ab 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-29 +date: 2023-06-30 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 1191f669f6d74..c6a99e06ba8e1 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-29 +date: 2023-06-30 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 b1c2238e5dd6f..b2a35b6b9817a 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-29 +date: 2023-06-30 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 13cf97fda397b..dad1b50e46330 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-29 +date: 2023-06-30 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 e67fd4c264e9b..01e4450d3db40 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-29 +date: 2023-06-30 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 082cf5e6e4d31..bb16b0f9297d3 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-29 +date: 2023-06-30 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 851013ce35790..051fd4068fd1c 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-29 +date: 2023-06-30 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 e17398306d18b..f1330e88a88df 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-29 +date: 2023-06-30 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 0eb17a76ed204..64f059808d001 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-29 +date: 2023-06-30 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 eaba3a0924114..4228c5757a399 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-29 +date: 2023-06-30 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 f998340cec471..d42daba287f87 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-29 +date: 2023-06-30 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 e60d5c960fc75..2c5fb9683753a 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -2991,7 +2991,7 @@ "label": "format", "description": [], "signature": [ - "(options: { fields: OutputOf> & Record; formatters: { asDuration: (value: ", + "(options: { fields: OutputOf> & Record; formatters: { asDuration: (value: ", "Maybe", ", { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: ", "Maybe", @@ -3010,7 +3010,7 @@ "label": "options", "description": [], "signature": [ - "{ fields: OutputOf> & Record; formatters: { asDuration: (value: ", + "{ fields: OutputOf> & Record; formatters: { asDuration: (value: ", "Maybe", ", { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: ", "Maybe", @@ -3170,7 +3170,7 @@ "label": "fields", "description": [], "signature": [ - "OutputOf> & OutputOf> & TAdditionalMetaFields" + "OutputOf> & OutputOf> & TAdditionalMetaFields" ], "path": "x-pack/plugins/observability/public/typings/alerts.ts", "deprecated": false, @@ -3970,7 +3970,7 @@ "label": "ObservabilityRuleTypeFormatter", "description": [], "signature": [ - "(options: { fields: OutputOf> & Record; formatters: { asDuration: (value: ", + "(options: { fields: OutputOf> & Record; formatters: { asDuration: (value: ", "Maybe", ", { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: ", "Maybe", @@ -3989,7 +3989,7 @@ "label": "options", "description": [], "signature": [ - "{ fields: OutputOf> & Record; formatters: { asDuration: (value: ", + "{ fields: OutputOf> & Record; formatters: { asDuration: (value: ", "Maybe", ", { defaultValue, extended }?: FormatterOptions) => string; asPercent: (numerator: ", "Maybe", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index b79f66d5c1113..f659ad371e458 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-29 +date: 2023-06-30 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 2da3fe3324bac..f537d38868270 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-29 +date: 2023-06-30 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 256712c9447df..70f73a7877b81 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.devdocs.json b/api_docs/osquery.devdocs.json index 2d49853af202b..9b6da7eb49e58 100644 --- a/api_docs/osquery.devdocs.json +++ b/api_docs/osquery.devdocs.json @@ -301,7 +301,7 @@ "label": "createActionService", "description": [], "signature": [ - "{ create: (params: { agent_ids?: string[] | undefined; agent_all?: boolean | undefined; agent_platforms?: string[] | undefined; agent_policy_ids?: string[] | undefined; query?: string | undefined; queries?: { id: string; query: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }[] | undefined; saved_query_id?: string | undefined; ecs_mapping?: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; pack_id?: string | undefined; alert_ids?: string[] | undefined; case_ids?: string[] | undefined; event_ids?: string[] | undefined; metadata?: object | undefined; }, alertData?: OutputOf> | undefined) => Promise<{ response: { action_id: string; '@timestamp': string; expiration: string; type: string; input_type: string; alert_ids: string[] | undefined; event_ids: string[] | undefined; case_ids: string[] | undefined; agent_ids: string[] | undefined; agent_all: boolean | undefined; agent_platforms: string[] | undefined; agent_policy_ids: string[] | undefined; agents: string[]; user_id: string | undefined; metadata: object | undefined; pack_id: string | undefined; pack_name: string | undefined; pack_prebuilt: boolean | undefined; queries: ", + "{ create: (params: { agent_ids?: string[] | undefined; agent_all?: boolean | undefined; agent_platforms?: string[] | undefined; agent_policy_ids?: string[] | undefined; query?: string | undefined; queries?: { id: string; query: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }[] | undefined; saved_query_id?: string | undefined; ecs_mapping?: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; pack_id?: string | undefined; alert_ids?: string[] | undefined; case_ids?: string[] | undefined; event_ids?: string[] | undefined; metadata?: object | undefined; }, alertData?: OutputOf> | undefined) => Promise<{ response: { action_id: string; '@timestamp': string; expiration: string; type: string; input_type: string; alert_ids: string[] | undefined; event_ids: string[] | undefined; case_ids: string[] | undefined; agent_ids: string[] | undefined; agent_all: boolean | undefined; agent_platforms: string[] | undefined; agent_policy_ids: string[] | undefined; agents: string[]; user_id: string | undefined; metadata: object | undefined; pack_id: string | undefined; pack_name: string | undefined; pack_prebuilt: boolean | undefined; queries: ", "Dictionary", "[]; }; fleetActionsCount: number; }>; stop: () => void; }" ], diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index a02516596cd3a..003296222d067 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-29 +date: 2023-06-30 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 46179c7ad0659..51ac1717b3c95 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 70910 | 544 | 60729 | 1393 | +| 70934 | 544 | 60753 | 1406 | ## Plugin Directory @@ -95,7 +95,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 62 | 0 | 62 | 2 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 239 | 0 | 24 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Simple UI for managing files in Kibana | 2 | 1 | 2 | 0 | -| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1189 | 3 | 1073 | 36 | +| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1191 | 3 | 1075 | 36 | | ftrApis | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 68 | 0 | 14 | 5 | | globalSearchBar | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 0 | 0 | 0 | 0 | @@ -223,8 +223,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 21 | 0 | 0 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 18 | 0 | 2 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 | -| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 27 | 0 | 27 | 3 | -| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 159 | 0 | 159 | 17 | +| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 28 | 0 | 28 | 7 | +| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 180 | 0 | 180 | 26 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 11 | 0 | 11 | 0 | | | [@elastic/kibana-qa](https://github.com/orgs/elastic/teams/kibana-qa) | - | 12 | 0 | 12 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 19 | 0 | 17 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index e1d295563be08..1eeb613f16ae5 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-29 +date: 2023-06-30 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 0b592b7537442..bc9128a687c97 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-29 +date: 2023-06-30 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 e65fed665b3cc..8c6210ad985e6 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-29 +date: 2023-06-30 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 8c0983dbac951..0ace0410ae071 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-29 +date: 2023-06-30 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 973e10545c0ac..c2e8d52c452a0 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-29 +date: 2023-06-30 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 2fd115a9006ee..1f587ce70bc3e 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.devdocs.json b/api_docs/rule_registry.devdocs.json index 228c8c30c1708..7e44746cb06d8 100644 --- a/api_docs/rule_registry.devdocs.json +++ b/api_docs/rule_registry.devdocs.json @@ -107,7 +107,7 @@ "label": "get", "description": [], "signature": [ - "({ id, index }: GetAlertParams) => Promise> | undefined>" + "({ id, index }: GetAlertParams) => Promise> | undefined>" ], "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", "deprecated": false, @@ -403,7 +403,7 @@ "SortOptions", "[] | undefined; track_total_hits?: boolean | undefined; _source?: string[] | undefined; }) => Promise<", "SearchResponse", - ">, Record>, Record>>" ], @@ -2714,7 +2714,7 @@ "signature": [ "> & OutputOf>>>(request: TSearchRequest) => Promise<", + ", TAlertDoc = Partial> & OutputOf>>>(request: TSearchRequest) => Promise<", { "pluginId": "@kbn/es-types", "scope": "common", @@ -3351,7 +3351,7 @@ "label": "getAlertByAlertUuid", "description": [], "signature": [ - "(alertUuid: string) => Promise> & OutputOf>> | null> | null" + "(alertUuid: string) => Promise> & OutputOf>> | null> | null" ], "path": "x-pack/plugins/rule_registry/server/utils/create_lifecycle_executor.ts", "deprecated": false, @@ -4754,7 +4754,7 @@ "label": "parseTechnicalFields", "description": [], "signature": [ - "(input: unknown, partial?: boolean) => OutputOf>" + "(input: unknown, partial?: boolean) => OutputOf>" ], "path": "x-pack/plugins/rule_registry/common/parse_technical_fields.ts", "deprecated": false, @@ -5130,7 +5130,7 @@ "label": "ParsedTechnicalFields", "description": [], "signature": [ - "{ readonly \"@timestamp\": string; readonly \"kibana.alert.rule.rule_type_id\": string; readonly \"kibana.alert.rule.consumer\": string; readonly \"kibana.alert.instance.id\": string; readonly \"kibana.alert.rule.category\": string; readonly \"kibana.alert.rule.name\": string; readonly \"kibana.alert.rule.producer\": string; readonly \"kibana.alert.rule.revision\": number; readonly \"kibana.alert.rule.uuid\": string; readonly \"kibana.alert.status\": string; readonly \"kibana.alert.uuid\": string; readonly \"kibana.space_ids\": string[]; readonly \"event.action\"?: string | undefined; readonly tags?: string[] | undefined; readonly \"kibana.alert.rule.execution.uuid\"?: string | undefined; readonly \"kibana.alert.action_group\"?: string | undefined; readonly \"kibana.alert.case_ids\"?: string[] | undefined; readonly \"kibana.alert.duration.us\"?: number | undefined; readonly \"kibana.alert.end\"?: string | undefined; readonly \"kibana.alert.flapping\"?: boolean | undefined; readonly \"kibana.alert.flapping_history\"?: boolean[] | undefined; readonly \"kibana.alert.maintenance_window_ids\"?: string[] | undefined; readonly \"kibana.alert.last_detected\"?: string | undefined; readonly \"kibana.alert.reason\"?: string | undefined; readonly \"kibana.alert.rule.parameters\"?: { [key: string]: unknown; } | undefined; readonly \"kibana.alert.rule.tags\"?: string[] | undefined; readonly \"kibana.alert.start\"?: string | undefined; readonly \"kibana.alert.time_range\"?: unknown; readonly \"kibana.alert.url\"?: string | undefined; readonly \"kibana.alert.workflow_status\"?: string | undefined; readonly \"kibana.alert.workflow_tags\"?: string[] | undefined; readonly \"kibana.version\"?: string | undefined; readonly \"kibana.alert.risk_score\"?: number | undefined; readonly \"kibana.alert.rule.author\"?: string | undefined; readonly \"kibana.alert.rule.created_at\"?: string | undefined; readonly \"kibana.alert.rule.created_by\"?: string | undefined; readonly \"kibana.alert.rule.description\"?: string | undefined; readonly \"kibana.alert.rule.enabled\"?: string | undefined; readonly \"kibana.alert.rule.from\"?: string | undefined; readonly \"kibana.alert.rule.interval\"?: string | undefined; readonly \"kibana.alert.rule.license\"?: string | undefined; readonly \"kibana.alert.rule.note\"?: string | undefined; readonly \"kibana.alert.rule.references\"?: string[] | undefined; readonly \"kibana.alert.rule.rule_id\"?: string | undefined; readonly \"kibana.alert.rule.rule_name_override\"?: string | undefined; readonly \"kibana.alert.rule.to\"?: string | undefined; readonly \"kibana.alert.rule.type\"?: string | undefined; readonly \"kibana.alert.rule.updated_at\"?: string | undefined; readonly \"kibana.alert.rule.updated_by\"?: string | undefined; readonly \"kibana.alert.rule.version\"?: string | undefined; readonly \"kibana.alert.severity\"?: string | undefined; readonly \"kibana.alert.suppression.docs_count\"?: number | undefined; readonly \"kibana.alert.suppression.end\"?: string | undefined; readonly \"kibana.alert.suppression.terms.field\"?: string[] | undefined; readonly \"kibana.alert.suppression.start\"?: string | undefined; readonly \"kibana.alert.suppression.terms.value\"?: string[] | undefined; readonly \"kibana.alert.system_status\"?: string | undefined; readonly \"kibana.alert.workflow_reason\"?: string | undefined; readonly \"kibana.alert.workflow_user\"?: string | undefined; readonly \"ecs.version\"?: string | undefined; readonly \"event.kind\"?: string | undefined; }" + "{ readonly \"@timestamp\": string; readonly \"kibana.alert.rule.rule_type_id\": string; readonly \"kibana.alert.rule.consumer\": string; readonly \"kibana.alert.instance.id\": string; readonly \"kibana.alert.rule.category\": string; readonly \"kibana.alert.rule.name\": string; readonly \"kibana.alert.rule.producer\": string; readonly \"kibana.alert.rule.revision\": number; readonly \"kibana.alert.rule.uuid\": string; readonly \"kibana.alert.status\": string; readonly \"kibana.alert.uuid\": string; readonly \"kibana.space_ids\": string[]; readonly \"event.action\"?: string | undefined; readonly tags?: string[] | undefined; readonly \"kibana.alert.rule.execution.uuid\"?: string | undefined; readonly \"kibana.alert.action_group\"?: string | undefined; readonly \"kibana.alert.case_ids\"?: string[] | undefined; readonly \"kibana.alert.duration.us\"?: number | undefined; readonly \"kibana.alert.end\"?: string | undefined; readonly \"kibana.alert.flapping\"?: boolean | undefined; readonly \"kibana.alert.flapping_history\"?: boolean[] | undefined; readonly \"kibana.alert.maintenance_window_ids\"?: string[] | undefined; readonly \"kibana.alert.last_detected\"?: string | undefined; readonly \"kibana.alert.reason\"?: string | undefined; readonly \"kibana.alert.rule.parameters\"?: { [key: string]: unknown; } | undefined; readonly \"kibana.alert.rule.tags\"?: string[] | undefined; readonly \"kibana.alert.start\"?: string | undefined; readonly \"kibana.alert.time_range\"?: unknown; readonly \"kibana.alert.url\"?: string | undefined; readonly \"kibana.alert.workflow_status\"?: string | undefined; readonly \"kibana.alert.workflow_tags\"?: string[] | undefined; readonly \"event.kind\"?: string | undefined; readonly \"kibana.version\"?: string | undefined; readonly \"kibana.alert.risk_score\"?: number | undefined; readonly \"kibana.alert.rule.author\"?: string | undefined; readonly \"kibana.alert.rule.created_at\"?: string | undefined; readonly \"kibana.alert.rule.created_by\"?: string | undefined; readonly \"kibana.alert.rule.description\"?: string | undefined; readonly \"kibana.alert.rule.enabled\"?: string | undefined; readonly \"kibana.alert.rule.from\"?: string | undefined; readonly \"kibana.alert.rule.interval\"?: string | undefined; readonly \"kibana.alert.rule.license\"?: string | undefined; readonly \"kibana.alert.rule.note\"?: string | undefined; readonly \"kibana.alert.rule.references\"?: string[] | undefined; readonly \"kibana.alert.rule.rule_id\"?: string | undefined; readonly \"kibana.alert.rule.rule_name_override\"?: string | undefined; readonly \"kibana.alert.rule.to\"?: string | undefined; readonly \"kibana.alert.rule.type\"?: string | undefined; readonly \"kibana.alert.rule.updated_at\"?: string | undefined; readonly \"kibana.alert.rule.updated_by\"?: string | undefined; readonly \"kibana.alert.rule.version\"?: string | undefined; readonly \"kibana.alert.severity\"?: string | undefined; readonly \"kibana.alert.suppression.docs_count\"?: number | undefined; readonly \"kibana.alert.suppression.end\"?: string | undefined; readonly \"kibana.alert.suppression.terms.field\"?: string[] | undefined; readonly \"kibana.alert.suppression.start\"?: string | undefined; readonly \"kibana.alert.suppression.terms.value\"?: string[] | undefined; readonly \"kibana.alert.system_status\"?: string | undefined; readonly \"kibana.alert.workflow_reason\"?: string | undefined; readonly \"kibana.alert.workflow_user\"?: string | undefined; readonly \"ecs.version\"?: string | undefined; }" ], "path": "x-pack/plugins/rule_registry/common/parse_technical_fields.ts", "deprecated": false, diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 1f7ad42e01d92..84ee443e918cb 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-29 +date: 2023-06-30 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 7c26173826235..4dba794d349ef 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-29 +date: 2023-06-30 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 2ad78b64384a3..09365c173b96d 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-29 +date: 2023-06-30 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 bf462cf3df024..9855c48ba90d0 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-29 +date: 2023-06-30 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 74064a405ae6d..a5ca9791cb2a1 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-29 +date: 2023-06-30 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 bfb45b48abc7a..08fa5f5248fb1 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-29 +date: 2023-06-30 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 5df83ad3108e8..21a0222377b4f 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-29 +date: 2023-06-30 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 3a5b7cca6afe9..5ac6c566d99da 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-29 +date: 2023-06-30 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 c55227499c4fb..72396d4b8a61e 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-29 +date: 2023-06-30 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 b316cd59e3184..e1235d8166475 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-29 +date: 2023-06-30 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 e746ea7077b32..853737ae7926c 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-29 +date: 2023-06-30 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 f3dceba330421..226389e31e6b9 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -2536,7 +2536,7 @@ "label": "ConfigType", "description": [], "signature": [ - "Readonly<{ prebuiltRulesPackageVersion?: string | undefined; } & { enabled: boolean; signalsIndex: string; maxRuleImportExportSize: number; maxRuleImportPayloadBytes: number; maxTimelineImportExportSize: number; maxTimelineImportPayloadBytes: number; alertMergeStrategy: \"allFields\" | \"missingFields\" | \"noFields\"; alertIgnoreFields: string[]; enableExperimental: string[]; packagerTaskInterval: string; maxUploadResponseActionFileBytes: number; }> & { experimentalFeatures: ", + "Readonly<{ prebuiltRulesPackageVersion?: string | undefined; } & { enabled: boolean; signalsIndex: string; maxRuleImportExportSize: number; maxRuleImportPayloadBytes: number; maxTimelineImportExportSize: number; maxTimelineImportPayloadBytes: number; alertMergeStrategy: \"allFields\" | \"missingFields\" | \"noFields\"; alertIgnoreFields: string[]; enableExperimental: string[]; packagerTaskInterval: string; packagerTaskPackagePolicyUpdateBatchSize: number; maxUploadResponseActionFileBytes: number; }> & { experimentalFeatures: ", { "pluginId": "securitySolution", "scope": "common", diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index aa68978347f11..48e99976757b0 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-29 +date: 2023-06-30 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 a5bfeac9f528e..fa97a61d51f97 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-29 +date: 2023-06-30 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 70baddf5ba1ea..841267119dd75 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-29 +date: 2023-06-30 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 d17b0be64f359..f4f8947f7fb95 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-29 +date: 2023-06-30 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 51a9f68e44e41..83f20833a9989 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-29 +date: 2023-06-30 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 1ea099ad3c9f5..5b36b725abe61 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-29 +date: 2023-06-30 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 3318036c5ae74..3c9dae710a208 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-29 +date: 2023-06-30 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 d48ae953e89fb..d64d97325ed71 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-29 +date: 2023-06-30 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 4f2ab023f91e7..67ce44f89e682 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-29 +date: 2023-06-30 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 801c111269284..cb6387b7e76c0 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-29 +date: 2023-06-30 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 80a82950f1dc0..fe24915d6997e 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-29 +date: 2023-06-30 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 573e41ece6e4e..582f37104d947 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-29 +date: 2023-06-30 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 559b851ca49f3..24cf8c0959585 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-29 +date: 2023-06-30 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 c973627427244..35577ec87cc3c 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-29 +date: 2023-06-30 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 d31d48a358476..db07655083e35 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-29 +date: 2023-06-30 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 6d70324a7f1f3..765d85612f920 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-29 +date: 2023-06-30 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 c687df4aaf9e0..f01d9a90cd443 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-29 +date: 2023-06-30 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 600ad5426590b..f1f950e32747e 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-29 +date: 2023-06-30 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 08802ecb27c04..2f36fbd5ebf85 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-29 +date: 2023-06-30 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 81bc1e5059d6e..80a02b2c69b24 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-29 +date: 2023-06-30 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 bcb853f26726f..d883772477845 100644 --- a/api_docs/triggers_actions_ui.devdocs.json +++ b/api_docs/triggers_actions_ui.devdocs.json @@ -2745,7 +2745,7 @@ "description": [], "signature": [ "BasicFields", - " & { \"@timestamp\"?: string[] | undefined; \"event.action\"?: string[] | undefined; tags?: string[] | undefined; kibana?: string[] | undefined; \"kibana.alert.rule.rule_type_id\"?: string[] | undefined; \"kibana.alert.rule.consumer\"?: string[] | undefined; \"kibana.alert.rule.execution.uuid\"?: string[] | undefined; \"kibana.alert\"?: string[] | undefined; \"kibana.alert.action_group\"?: string[] | undefined; \"kibana.alert.case_ids\"?: string[] | undefined; \"kibana.alert.duration.us\"?: string[] | undefined; \"kibana.alert.end\"?: string[] | undefined; \"kibana.alert.flapping\"?: string[] | undefined; \"kibana.alert.maintenance_window_ids\"?: string[] | undefined; \"kibana.alert.instance.id\"?: string[] | undefined; \"kibana.alert.reason\"?: string[] | undefined; \"kibana.alert.rule\"?: string[] | undefined; \"kibana.alert.rule.category\"?: string[] | undefined; \"kibana.alert.rule.name\"?: string[] | undefined; \"kibana.alert.rule.parameters\"?: string[] | undefined; \"kibana.alert.rule.producer\"?: string[] | undefined; \"kibana.alert.rule.tags\"?: string[] | undefined; \"kibana.alert.rule.uuid\"?: string[] | undefined; \"kibana.alert.start\"?: string[] | undefined; \"kibana.alert.status\"?: string[] | undefined; \"kibana.alert.time_range\"?: string[] | undefined; \"kibana.alert.uuid\"?: string[] | undefined; \"kibana.alert.workflow_status\"?: string[] | undefined; \"kibana.alert.workflow_tags\"?: string[] | undefined; \"kibana.space_ids\"?: string[] | undefined; \"kibana.version\"?: string[] | undefined; \"kibana.alert.risk_score\"?: string[] | undefined; \"kibana.alert.rule.author\"?: string[] | undefined; \"kibana.alert.rule.created_at\"?: string[] | undefined; \"kibana.alert.rule.created_by\"?: string[] | undefined; \"kibana.alert.rule.description\"?: string[] | undefined; \"kibana.alert.rule.enabled\"?: string[] | undefined; \"kibana.alert.rule.from\"?: string[] | undefined; \"kibana.alert.rule.interval\"?: string[] | undefined; \"kibana.alert.rule.license\"?: string[] | undefined; \"kibana.alert.rule.note\"?: string[] | undefined; \"kibana.alert.rule.references\"?: string[] | undefined; \"kibana.alert.rule.rule_id\"?: string[] | undefined; \"kibana.alert.rule.rule_name_override\"?: string[] | undefined; \"kibana.alert.rule.to\"?: string[] | undefined; \"kibana.alert.rule.type\"?: string[] | undefined; \"kibana.alert.rule.updated_at\"?: string[] | undefined; \"kibana.alert.rule.updated_by\"?: string[] | undefined; \"kibana.alert.rule.version\"?: string[] | undefined; \"kibana.alert.severity\"?: string[] | undefined; \"kibana.alert.suppression.docs_count\"?: string[] | undefined; \"kibana.alert.suppression.end\"?: string[] | undefined; \"kibana.alert.suppression.terms\"?: string[] | undefined; \"kibana.alert.suppression.terms.field\"?: string[] | undefined; \"kibana.alert.suppression.start\"?: string[] | undefined; \"kibana.alert.suppression.terms.value\"?: string[] | undefined; \"kibana.alert.system_status\"?: string[] | undefined; \"kibana.alert.workflow_reason\"?: string[] | undefined; \"kibana.alert.workflow_user\"?: string[] | undefined; \"ecs.version\"?: string[] | undefined; \"event.kind\"?: string[] | undefined; \"kibana.alert.evaluation.threshold\"?: string[] | undefined; \"kibana.alert.evaluation.value\"?: string[] | undefined; \"kibana.alert.context\"?: string[] | undefined; \"kibana.alert.evaluation.values\"?: string[] | undefined; \"event.module\"?: string[] | undefined; \"kibana.alert.building_block_type\"?: string[] | undefined; \"kibana.alert.rule.exceptions_list\"?: string[] | undefined; \"kibana.alert.rule.namespace\"?: string[] | undefined; \"kibana.alert.rule.threat.framework\"?: string[] | undefined; \"kibana.alert.rule.threat.tactic.id\"?: string[] | undefined; \"kibana.alert.rule.threat.tactic.name\"?: string[] | undefined; \"kibana.alert.rule.threat.tactic.reference\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.id\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.name\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.reference\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.subtechnique.id\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.subtechnique.name\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.subtechnique.reference\"?: string[] | undefined; } & { [x: string]: unknown[]; }" + " & { \"@timestamp\"?: string[] | undefined; \"event.action\"?: string[] | undefined; tags?: string[] | undefined; kibana?: string[] | undefined; \"kibana.alert.rule.rule_type_id\"?: string[] | undefined; \"kibana.alert.rule.consumer\"?: string[] | undefined; \"kibana.alert.rule.execution.uuid\"?: string[] | undefined; \"kibana.alert\"?: string[] | undefined; \"kibana.alert.action_group\"?: string[] | undefined; \"kibana.alert.case_ids\"?: string[] | undefined; \"kibana.alert.duration.us\"?: string[] | undefined; \"kibana.alert.end\"?: string[] | undefined; \"kibana.alert.flapping\"?: string[] | undefined; \"kibana.alert.maintenance_window_ids\"?: string[] | undefined; \"kibana.alert.instance.id\"?: string[] | undefined; \"kibana.alert.reason\"?: string[] | undefined; \"kibana.alert.rule\"?: string[] | undefined; \"kibana.alert.rule.category\"?: string[] | undefined; \"kibana.alert.rule.name\"?: string[] | undefined; \"kibana.alert.rule.parameters\"?: string[] | undefined; \"kibana.alert.rule.producer\"?: string[] | undefined; \"kibana.alert.rule.tags\"?: string[] | undefined; \"kibana.alert.rule.uuid\"?: string[] | undefined; \"kibana.alert.start\"?: string[] | undefined; \"kibana.alert.status\"?: string[] | undefined; \"kibana.alert.time_range\"?: string[] | undefined; \"kibana.alert.uuid\"?: string[] | undefined; \"kibana.alert.workflow_status\"?: string[] | undefined; \"kibana.alert.workflow_tags\"?: string[] | undefined; \"event.kind\"?: string[] | undefined; \"kibana.space_ids\"?: string[] | undefined; \"kibana.version\"?: string[] | undefined; \"kibana.alert.risk_score\"?: string[] | undefined; \"kibana.alert.rule.author\"?: string[] | undefined; \"kibana.alert.rule.created_at\"?: string[] | undefined; \"kibana.alert.rule.created_by\"?: string[] | undefined; \"kibana.alert.rule.description\"?: string[] | undefined; \"kibana.alert.rule.enabled\"?: string[] | undefined; \"kibana.alert.rule.from\"?: string[] | undefined; \"kibana.alert.rule.interval\"?: string[] | undefined; \"kibana.alert.rule.license\"?: string[] | undefined; \"kibana.alert.rule.note\"?: string[] | undefined; \"kibana.alert.rule.references\"?: string[] | undefined; \"kibana.alert.rule.rule_id\"?: string[] | undefined; \"kibana.alert.rule.rule_name_override\"?: string[] | undefined; \"kibana.alert.rule.to\"?: string[] | undefined; \"kibana.alert.rule.type\"?: string[] | undefined; \"kibana.alert.rule.updated_at\"?: string[] | undefined; \"kibana.alert.rule.updated_by\"?: string[] | undefined; \"kibana.alert.rule.version\"?: string[] | undefined; \"kibana.alert.severity\"?: string[] | undefined; \"kibana.alert.suppression.docs_count\"?: string[] | undefined; \"kibana.alert.suppression.end\"?: string[] | undefined; \"kibana.alert.suppression.terms\"?: string[] | undefined; \"kibana.alert.suppression.terms.field\"?: string[] | undefined; \"kibana.alert.suppression.start\"?: string[] | undefined; \"kibana.alert.suppression.terms.value\"?: string[] | undefined; \"kibana.alert.system_status\"?: string[] | undefined; \"kibana.alert.workflow_reason\"?: string[] | undefined; \"kibana.alert.workflow_user\"?: string[] | undefined; \"ecs.version\"?: string[] | undefined; \"kibana.alert.evaluation.threshold\"?: string[] | undefined; \"kibana.alert.evaluation.value\"?: string[] | undefined; \"kibana.alert.context\"?: string[] | undefined; \"kibana.alert.evaluation.values\"?: string[] | undefined; \"event.module\"?: string[] | undefined; \"kibana.alert.building_block_type\"?: string[] | undefined; \"kibana.alert.rule.exceptions_list\"?: string[] | undefined; \"kibana.alert.rule.namespace\"?: string[] | undefined; \"kibana.alert.rule.threat.framework\"?: string[] | undefined; \"kibana.alert.rule.threat.tactic.id\"?: string[] | undefined; \"kibana.alert.rule.threat.tactic.name\"?: string[] | undefined; \"kibana.alert.rule.threat.tactic.reference\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.id\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.name\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.reference\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.subtechnique.id\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.subtechnique.name\"?: string[] | undefined; \"kibana.alert.rule.threat.technique.subtechnique.reference\"?: string[] | undefined; } & { [x: string]: unknown[]; }" ], "path": "x-pack/plugins/triggers_actions_ui/public/types.ts", "deprecated": false, diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 48c4b5f11c21d..e9e1c36ee918f 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-29 +date: 2023-06-30 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 f8255aafb4346..1820485d397f6 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-29 +date: 2023-06-30 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 baa05cf17631d..daecbdd0d463a 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 3b395e88af3a5..26e8b03a31ceb 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-29 +date: 2023-06-30 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 db6c6b007aa14..9ca7e0c48c855 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-29 +date: 2023-06-30 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 7e11cf1c90e39..44e0532cc60b4 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-29 +date: 2023-06-30 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 c85ef8338f3e2..3eef30cddca4e 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-29 +date: 2023-06-30 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 7bb4ad964ec03..8fbcaf41c5412 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-29 +date: 2023-06-30 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 b0556acbdafdc..84718215e6148 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-29 +date: 2023-06-30 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 d1fb8ebce7b82..3445683bb5db4 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-29 +date: 2023-06-30 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 8005bc48f15ae..5252022e72401 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-29 +date: 2023-06-30 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 9442575b2de9b..75e41b1380b80 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-29 +date: 2023-06-30 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 c809e8a17486e..70cb5ba73fa29 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-29 +date: 2023-06-30 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 918442986fc1f..b677cc575d14b 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-29 +date: 2023-06-30 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 4284d05e503b2..342f57da12f1b 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-29 +date: 2023-06-30 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 468a953c9ea1e..ac3272a9bd92e 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-29 +date: 2023-06-30 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 c9e967ed5e623..d7373253c1ba2 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-29 +date: 2023-06-30 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 510212ea039b0..950bd297eb8be 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-29 +date: 2023-06-30 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 529ab67666ed0..375a42ed70b70 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualization_ui_components.devdocs.json b/api_docs/visualization_ui_components.devdocs.json index 4588f56f5e77d..f068338120280 100644 --- a/api_docs/visualization_ui_components.devdocs.json +++ b/api_docs/visualization_ui_components.devdocs.json @@ -11,7 +11,7 @@ "label": "ColorPicker", "description": [], "signature": [ - "({ label, disableHelpTooltip, disabled, setConfig, defaultColor, overwriteColor, showAlpha, }: { overwriteColor?: string | null | undefined; defaultColor?: string | null | undefined; setConfig: (config: { color?: string | undefined; }) => void; label?: string | undefined; disableHelpTooltip?: boolean | undefined; disabled?: boolean | undefined; showAlpha?: boolean | undefined; }) => JSX.Element" + "({ overwriteColor, defaultColor, setConfig, label, disableHelpTooltip, disabledMessage, showAlpha, }: { overwriteColor?: string | null | undefined; defaultColor?: string | null | undefined; setConfig: (config: { color?: string | undefined; }) => void; label?: string | undefined; disableHelpTooltip?: boolean | undefined; disabledMessage?: string | undefined; showAlpha?: boolean | undefined; }) => JSX.Element" ], "path": "src/plugins/visualization_ui_components/public/components/color_picker.tsx", "deprecated": false, @@ -22,7 +22,7 @@ "id": "def-public.ColorPicker.$1", "type": "Object", "tags": [], - "label": "{\n label,\n disableHelpTooltip,\n disabled,\n setConfig,\n defaultColor,\n overwriteColor,\n showAlpha,\n}", + "label": "{\n overwriteColor,\n defaultColor,\n setConfig,\n label,\n disableHelpTooltip,\n disabledMessage,\n showAlpha,\n}", "description": [], "path": "src/plugins/visualization_ui_components/public/components/color_picker.tsx", "deprecated": false, @@ -130,13 +130,13 @@ }, { "parentPluginId": "visualizationUiComponents", - "id": "def-public.ColorPicker.$1.disabled", - "type": "CompoundType", + "id": "def-public.ColorPicker.$1.disabledMessage", + "type": "string", "tags": [], - "label": "disabled", + "label": "disabledMessage", "description": [], "signature": [ - "boolean | undefined" + "string | undefined" ], "path": "src/plugins/visualization_ui_components/public/components/color_picker.tsx", "deprecated": false, diff --git a/api_docs/visualization_ui_components.mdx b/api_docs/visualization_ui_components.mdx index 456f783489170..835dfbe6bf1f4 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-29 +date: 2023-06-30 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 89cd0b8cc99a9..adcda94576e48 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-29 +date: 2023-06-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 6c1ecf936958bf1e89313064a85dc0a4b676ac08 Mon Sep 17 00:00:00 2001 From: Elastic Machine Date: Fri, 30 Jun 2023 02:35:38 -0500 Subject: [PATCH 41/41] [main] Sync bundled packages with Package Storage (#160949) Automated by https://internal-ci.elastic.co/job/package_storage/job/sync-bundled-packages-job/job/main/5126/ Co-authored-by: apmmachine --- fleet_packages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fleet_packages.json b/fleet_packages.json index 94200989f5205..208d8f079abc8 100644 --- a/fleet_packages.json +++ b/fleet_packages.json @@ -58,6 +58,6 @@ }, { "name": "security_detection_engine", - "version": "8.8.5" + "version": "8.8.6" } ] \ No newline at end of file